绉纱音高跟踪器
crepe的Python项目详细描述
crepe pitch tracker
crepe是一种基于深卷积神经网络的单声道基音跟踪系统,直接对时域波形进行输入。绉纱是最先进的(截至2018年),比Pyin和Swipe等流行的音高跟踪器更出色:
以下文件提供了更多详细信息:
< Buff行情>crepe:基音估计的卷积表示法
金钟郁、贾斯汀·萨拉蒙、李彼得、贝洛。
ieee声学、语音和信号处理国际会议记录,2018年。
我们恳请使用绉纱的学术出版物引用上述论文。
安装绉纱
绉纱是在皮皮上托管的。要安装,请在python环境中运行以下命令:
$ pip install --upgrade tensorflow # if you don't already have tensorflow >= 1.6.0
$ pip install crepe
要从源代码安装最新版本,请克隆存储库并从顶级的crepe文件夹调用:
$ python setup.py install
使用绉纱
从命令行使用crepe
此软件包包括一个命令行实用程序crepe
和一个预先训练过的crepe模型版本,以便于使用。要估计audio_file.wav的音调,请运行:
$ crepe audio_file.wav
或
$ python -m crepe audio_file.wav
生成的音频文件.f0.csv
包含3列:第一列带有时间戳(默认情况下使用10毫秒的跃点大小),第二列包含以赫兹为单位的预测基频,第三列包含语音置信度,即存在音调的置信度:
time,frequency,confidence
0.00,185.616,0.907112
0.01,186.764,0.844488
0.02,188.356,0.798015
0.03,190.610,0.746729
0.04,192.952,0.771268
0.05,195.191,0.859440
0.06,196.541,0.864447
0.07,197.809,0.827441
0.08,199.678,0.775208
...
时间戳
crepe默认使用10毫秒的时间步长,可以使用
--step size
选项,以毫秒为单位获取时间步长的大小。
例如,--step size 50
将每50毫秒计算一次音高。
遵循流行的音频处理库(如
essentia和librosa,
从v0.0.5开始,crepe将填充输入信号,以便第一帧
是以零为中心(帧的中心对应于时间0)并且通常
所有帧都围绕其对应的时间戳居中,即帧
d[:,t]
位于音频[t*跳长]的中心。这种行为可以改变
通过指定可选的
--no centering
标志,在这种情况下,第一帧
将在时间零点开始并且通常帧d[:,t]
将在
音频[t*跳长]
。坚持默认行为(居中帧)是
强烈建议避免与生成的功能和注释不一致
通过其他常见的音频处理工具。
型号容量
crepe使用默认情况下报告的模型大小,但可以选择
使用较小的模型计算速度,以稍低的精度为代价。
您可以指定--model capacity{tiny small medium large full}
作为命令
用于选择具有所需容量的型号的行选项。
时间平滑
默认情况下,crepe不会对音调曲线应用时间平滑,但是
通过可选的--viterbi
c支持viterbi平滑命令行参数。
保存激活矩阵
脚本还可以选择性地保存模型的输出激活矩阵
到npy文件(--save activation
),其中矩阵维度是
(n_帧,360)使用10 ms的跳跃大小(有360个俯仰箱,覆盖20个
每美分)。
脚本还可以输出激活矩阵的图(--save plot
),
保存到audio_file.activation.png
包括可选的可视表示
模型的语音检测(--plot voice
)。下面是
男性节选的激活矩阵(没有声音覆盖)
歌声:
批处理
对于文件的批处理,可以提供文件夹路径而不是文件路径:
$ python crepe.py audio_folder
脚本将处理文件夹中找到的所有wav文件。
其他使用信息
有关用法的详细信息,请参阅帮助消息:
$ python crepe.py --help
在python中使用crepe
crepe可以作为模块导入,直接在python中使用。下面是一个简单的例子:
importcrepefromscipy.ioimportwavfilesr,audio=wavfile.read('/path/to/audiofile.wav')time,frequency,confidence,activation=crepe.predict(audio,sr,viterbi=True)
argmax局部加权平均值
本次发行的绉纱采用以下加权平均公式,与纸张略有不同。这只关注最大激活附近的邻域,这将进一步提高俯仰精度:
请注意
- 当前版本仅支持将WAV文件作为输入。
- 该模型使用16 kHz音频进行训练,因此,如果输入音频具有不同的采样率,则首先使用重采样将其重采样到16 kHz。
- 由于框架之间细微的数值差异,keras应该配置为使用tensorflow后端以获得最佳性能。该模型使用keras 2.1.5和tensorflow 1.6.0进行训练,而tensorflow的新版本似乎也能工作。
- 如果Keras(和相应的后端)配置为在GPU上运行,则预测速度会大大加快。
- 所提供的模型是使用以下数据集进行训练的,这些数据集由声音和乐器音频组成,因此预计对此类音频信号最有效。
- mir-1k[1]
- 巴赫10[2]
- rwc合成器[3]
- Medleydb[4]
- MDB茎合成[5]
- nsynth[6]
参考文献
[1]C.-L.Hsu等人利用mir-1k数据集改进单声道录音的歌唱语音分离,ieee音频、语音和语言处理事务。2009。
[2]Z.Duan等人通过对谱峰和非谱峰区域建模进行多基频估计",ieee音频、语音和语言处理事务。2010。
[3]M.Mauch等人Pyin:使用概率阈值分布的基频估计器",美国电气与电子工程师协会声学、语音和信号处理国际会议论文集(ICASSP)。2014。
[4]R.M.Bittner等人。"Medleydb:用于注释密集型MIR研究的多通道数据集",国际音乐信息检索学会(ISMIR)会议记录。2014。
[5]J.Salamon等人。"分析/合成国际音乐信息检索学会(ISMIR)会议论文集",。2017、
[6]J.Engel等人。"用wavenet自动编码器进行音乐音符的神经音频合成,arxiv预印本:1704.01279。2017、