#频谱图 #可靠 #生成 #数据 #频谱图 #生成

bin+lib tizol

一个小型库,用于可靠、快速地生成和可视化频谱图

1 个不稳定版本

0.1.0 2019年7月24日

#6 in #频谱图

GPL-3.0-or-later

22KB
329

tizol


lib.rs:

一个小型库,用于可靠、快速地生成和可视化频谱图

Tizol 提供了一个 Spectrogram 对象,允许用户从原始音频数据或音频文件中创建频谱图,并可视化这些频谱图。计算出的频谱图和可视化的图像应尽可能接近由 librosa 计算的结果,并且可以作为其替代品。

计算频谱图

Tizol 的计算基于 librosa - 它使用简单的短时傅里叶变换 (STFT) 生成原始频谱图,然后将其从幅度表示转换为功率表示,最后进行归一化,使频谱图的元素落在 [0,1] 范围内。

在 librosa 术语中(省略最终归一化),from_file 的实现大致如下

samplerate = 44100
(y, sr) = librosa.load(filename, sr=samplerate, res_type='kaiser_best')
S = librosa.stft(y)
M = librosa.core.magphase(S)[0] # This is implicitly done by the STFT
spectrogram = librosa.amplitude_to_db(M, ref=np.max)[0:1024, :]

可视化频谱图

Tizol 提供了 Spect::as_image() 方法来可视化已计算的频谱图。不幸的是,这个方法相当慢,因为它为了与 librosa 的输出保持一致,使用了 scarlet crate 中的 Magma 色彩映射来计算像素颜色。由于某种原因,这个计算非常慢,即使进行并行化,也比实际计算频谱图慢大约 10 倍。

Protobuf 支持

频谱图通过 prost crate 支持 Protobuf,这意味着频谱图实现了 Message 特性。

命名

Tizol 是“埃林顿”项目的一部分——一套旨在使摇摆舞DJ更容易自动计算摇摆音乐的节拍的工具。项目的每个组件都是以杜克·埃林顿乐队成员或编曲家的名字命名的。Tizol 以 Juan Tizol 的名字命名,他是长号乐队的坚实支柱,也是最著名的爵士标准之一“卡瓦南”的作曲家。

依赖关系

~35MB
~447K SLoC