在Python中读取.sph文件

问题描述 投票:0回答:3

我正在开展一个项目,需要从音频信号中提取梅尔倒谱频率系数(MFCC)。此过程的第一步是将音频文件读入 Python。

我的音频文件以 .sph 格式存储。我无法找到将这些文件直接读取到 Python 中的方法。我想要采样率和带有数据的 NumPy 数组,类似于 wav 读取的工作方式。

由于我要处理的音频文件很大,我不想转换为 .wav 格式来阅读。您能建议一种可能的方法吗?

python audio
3个回答
6
投票

我反对转换为 .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")

4
投票

根据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")


1
投票

您可以通过

audioread
使用
ffmpeg
编解码器读取 sph 文件。

© www.soinside.com 2019 - 2024. All rights reserved.