2011-02-08 148 views
6

我正在开发一个应用程序,我需要一些方法来比较两个声音,如果它们匹配或不匹配,我知道语音识别器是一种方法,但是,因为(我认为)它需要首先将语音转换为字符串,除了语音识别器支持的语言之外,它不适合其他语言......任何想法?就像老天电话用来做什么,语音标签它只是比较它的设置在Android或语音标签(语音命令)中比较语音wav API

+0

您是否试图认识到两个录音是相同的说话人(语音验证或说话人识别),还是您试图确定说出相同的单词?你在配什么?说话者的身份或他说的话? – 2011-02-08 19:12:28

+0

嗨。你如何解决这个问题? – 2014-05-02 06:59:43

回答

5

一个相对简单的方式做,这是使用FFT在先前记录的声音语音输入(快速傅立叶变换)将原始WAV文件的时域数据转换为频域数据(其中转换数组中的每个值代表特定频段的相对幅度/强度)。

如果同一个人说两遍同一个单词,则两个WAV文件中所得到的时域数据在数值上仍然会有很大差异。将两个WAV文件转换到频率域(两个文件使用相同大小的FFT窗口,即使这两个文件的长度稍有不同)也会产生比原始WAV文件更相似的频率数组。

不幸的是,我一直没有找到任何专门针对Android的FFT库。这里有一个问题,它引用了一些基于Java的库:

Signal processing library in Java?

1

的想法比较他们spectograms声音的相似性。频谱图中的特征是鲁棒的并且抵抗噪声,这对于分析两个语音是很好的参考。 如果你采用这种方法,你应该首先找出声音的特征,而你需要知道如何比较两个声谱图中的特征,它是指模式识别。

This api http://code.google.com/p/musicg-sound-api/是用java编写的,可以在android中使用。它捕获波谱图。