如何从.wav文件准备2d频谱图以输入神经网络?

时间:2017-07-22 16:52:41

标签: tensorflow neural-network signal-processing voice-recognition

我被要求为转换大师课程建立一个语音识别系统,这有点超出我的能力范围。我需要准备wav文件以便使用RNN进行分析,但是处理部分有问题。我曾尝试使用thinkdsp将wav文件转换为大约23 ms时间块的频谱图,但无法看到我如何使用输出:

fit()

为RNN制作有用的二维输入向量。从我的阅读中我会想到,我会连续得到一系列的谱峰。谁能给我一个好的输入应该是什么样子的例子?或者,我试图使用https://github.com/baidu-research/ba-dls-deepspeech/blob/master/README.md处的代码为我预处理信号,但我在这里使用生成数据文件的尝试只是打印"使用theano后端。"在崩溃之前以红色显示没有其他错误信息。我非常感谢任何建议,有用的链接和教程或任何人都可以提供的一般帮助。有一个合理的数量,但它往往太高级和偏离主题,我的理解!

1 个答案:

答案 0 :(得分:1)

librosa可能是语音识别的音频处理和特征提取的良好起点。

window_size_sec = 0.025
window_shift_sec = 0.0125
sample_rate = 8000
data, sampling_rate = librosa.core.load('audio.wav', sr=sample_rate, mono=True)
win_length = int(sample_rate * window_size_sec)
hop_length = int(sample_rate * window_shift_sec)
n_fft = win_length # must be >= win_length
spectrogram = librosa.core.stft(data, n_fft=n_fft, hop_length=hop_length, win_length=win_length)

spectrogram.shape
(101, 338)

其中shape[0]是功能,shape[1]是时间,如果需要,可以进行转置。这些功能对您来说可能太高,因此您可以检查MFCC和其他方法。

scipy.signal.spectrogram更低级别,但也可能很合适。