首先,我想说的是,我的问题并不是关于语音识别的“经典”定义。
在以下意义上,我们正在尝试做的事情有些不同:
- 用户记录他的命令
- 稍后,当用户说出预先录制的命令时,就会发生某种动作。
例如,我录制了一个呼叫妈妈的语音命令,所以我点击她并说“妈妈”。然后当我使用该程序并说“妈妈”时,它会自动呼叫她。
如何将口述命令与保存的语音样本进行比较?
编辑:我们不需要任何“文本到语音”的能力,只需要比较声音信号。显然,我们正在寻找某种现成的产品或框架。
首先,我想说的是,我的问题并不是关于语音识别的“经典”定义。
在以下意义上,我们正在尝试做的事情有些不同:
例如,我录制了一个呼叫妈妈的语音命令,所以我点击她并说“妈妈”。然后当我使用该程序并说“妈妈”时,它会自动呼叫她。
如何将口述命令与保存的语音样本进行比较?
编辑:我们不需要任何“文本到语音”的能力,只需要比较声音信号。显然,我们正在寻找某种现成的产品或框架。
一种用于音乐识别的方法是对所讨论的两种声音采用频谱的时间序列(时间窗 STFT FFT),在时间轴上映射频率峰值的位置,并将两个 2D 时间互相关-匹配的频率峰值映射。这比仅对 2 个声音样本进行互相关要稳健得多,因为峰值的变化远小于频谱峰值之间的所有频谱“残渣”。如果两个话语的速率和它们的音调没有太大变化,这种方法会更好。
在 iOS 4.x 中,您可以将 Accelerate 框架用于 FFT,也可以使用 2D 互相关。
我不确定您的问题是关于 DSP 还是如何在 iPhone 上进行。如果是后者,我将从 Apple 提供的 Speak Here 项目开始。这样,您已经拥有将语音录制到文件的界面。它会为你省去很多麻烦。
我认为您必须执行某种互相关来确定这两个信号的相似程度。(假设当然是同一个用户说话)。我只是输入这个答案,看看它是否有帮助,但我会等待其他人的更好答案。我的信号处理能力接近于零。
尝试使用第三方库,例如适用于 iOS 应用程序的OpenEars。您可以让用户录制语音样本并将其保存为翻译文本,或者只是让他们输入文本进行识别。