我正在开展一个项目,需要从音频信号中提取梅尔倒谱频率系数(MFCC)。此过程的第一步是将音频文件读入 Python。
我的音频文件以 .sph 格式存储。我无法找到将这些文件直接读取到 Python 中的方法。我想要采样率和带有数据的 NumPy 数组,类似于 wav 读取的工作方式。
由于我要处理的音频文件很大,我不想转换为 .wav 格式来阅读。您能建议一种可能的方法吗?
我反对转换为 .wav 文件,因为我认为这会花费很多时间。事实并非如此。因此,使用 SoX 进行转换符合我的需求。
以下脚本在 Windows 文件夹中运行时,将该文件夹中的所有文件转换为 .wav 文件。
cd %~dp0
for %%a in (*.sph) do sox "%%~a" "%%~na.wav"
pause
此后,可以使用以下命令来读取文件。
import scipy.io.wavfile as wav
(rate,sig) = wav.read("file.wav")
根据Ben的回答,我能够使用
librosa读取
.sph
文件,因为它可以读取audioread
和ffmpeg
可以读取的所有内容。
import librosa
import librosa.display # You need this in librosa to be able to plot
import matplotlib.pyplot as plt
clip_dir = os.path.join("..","babel","LDC2016S10.sph")
audio,sr = librosa.load(clip_dir,sr=16000) # audio is a numpy array
fig, ax = plt.subplots(figsize=(15,8))
librosa.display.waveshow(audio, sr=sr, ax=ax)
ax.set(title="LDC2016S10.sph waveform")
您可以通过
audioread
使用 ffmpeg
编解码器读取 sph 文件。