如何从波形文件中获取音频频率数据?

3
我希望在Ruby中构建一个语音识别引擎,虽然只是出于兴趣而已,但我仍希望能够实现。我需要获取WAV文件中存储的声音频率数据,以便与我已有的不同声音的数据进行比较,从而实现语音识别。虽然我将使用Ruby编写代码,但我认为没有任何用Ruby编写的库,即使有也会很慢。Ruby的好处是我可以通过IronRuby使用.NET库或通过JRuby使用Java库。那么,我该如何获取频率数据呢?
2个回答

3
一个wave文件并不是太复杂,本质上只是一系列音频样本:http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
一旦您能读取这些样本,下一步将是通过FFT变换运行它们,以获取频率内容。您可以使用一些开源实现,或者自己实现一个。
您正在尝试做的事情需要一些关于音频和信号处理背后的数学理解,因此也许您需要从这个主题的书籍开始。

1

您需要阅读一些关于说话人识别的论文。并且在互联网上可以找到许多库以解决此问题。 要构建说话人识别系统(无论是识别系统还是验证系统),您需要:

  • 良好的音频特征(您希望找到能够唯一描述数据集中每个说话人声音的内容)。大多数音频特征都是从短时谱(即信号FFT在音频信号的小帧上取样,其中信号被认为是稳定的)中提取出来的。但我们从不把谱本身(FFT的对数)作为描述符(谱中有太多无用的信息)。最重要的是描述某个人的声音的是谱包络。您应该绝对看一下称为MFCC(Mel频率倒谱系数)的音频描述符,它是最广泛用于说话人识别任务的音频特征。

  • 然后您还需要一个良好的分类器(例如GMM、SVM...),因为这个问题是使用监督学习算法解决的。基本上,您需要为要识别的每个说话人训练一个模型,然后您将使用未经过训练的数据测试您的模型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接