项目介绍:CREPE 音高跟踪器
简介
CREPE 是一个基于深度卷积神经网络的单音音高跟踪器,它直接在时域波形输入上操作。自2018年发布以来,CREPE 已被认为是最先进的音高跟踪工具,超越了一些热门的音高跟踪器,如 pYIN 和 SWIPE。CREPE 由 Jong Wook Kim、Justin Salamon、Peter Li 和 Juan Pablo Bello 开发,并在 IEEE 国际声学、语音与信号处理会议(ICASSP)上进行了介绍。
安装
CREPE 在 PyPI 平台上进行托管,可以通过以下命令进行安装:
$ pip install --upgrade tensorflow # 如果没有安装 TensorFlow >= 2.0.0,先升级 TensorFlow
$ pip install crepe
或者,从源码安装:
$ git clone https://github.com/marl/crepe.git
$ cd crepe
$ python setup.py install
如何使用 CREPE
使用命令行
CREPE 提供了一个命令行工具和预先训练好的模式供用户使用。要估计某个音频文件的音高,只需在命令行上键入:
$ crepe audio_file.wav
或者
$ python -m crepe audio_file.wav
运行结果将生成一个 audio_file.f0.csv
文件,其中包含三个列:时间戳(默认使用10毫秒的跳步)、预测的基频(以Hz为单位)以及音高存在的置信度。
参数设置
-
时间戳:默认情况下,CREPE 以10毫秒的时间步长工作。用户可以通过
--step-size
参数改变时间步长,例如,使用--step-size 50
来计算每50毫秒的音高。 -
模型容量:可以通过
--model-capacity {tiny|small|medium|large|full}
参数选择不同容量的模型以平衡精度与计算速度。 -
时间平滑:默认情况下不使用时间平滑,可以通过
--viterbi
参数启用 Viterbi 平滑。 -
保存激活矩阵:可以选择将模型的激活矩阵保存到 npy 文件中(使用
--save-activation
参数)。 -
批处理:可以对文件夹内的所有 WAV 文件进行批量处理,只需提供文件夹路径即可。
在 Python 中使用
CREPE 也可以作为 Python 模块直接使用,例如:
import crepe
from scipy.io import wavfile
sr, audio = wavfile.read('/path/to/audiofile.wav')
time, frequency, confidence, activation = crepe.predict(audio, sr, viterbi=True)
注意事项
- CREPE 当前仅支持处理 WAV 格式的音频文件。
- 对于非16 kHz的音频输入,CREPE 会先使用 resampy 进行重采样。
- 在 GPU 上运行 Keras(和对应的后端)可显著提高预测速度。
- 提供的模型经过多种包含声乐和乐器音频的数据集训练,适用于此类音频信号。
结语
CREPE 的先进性能和高精度使其在音高跟踪任务中表现出色,是学术和工业应用的理想选择。通过其灵活的命令行工具和 Python API,用户可以轻松集成并应用该工具于各种音频分析任务中。