在iOS中比较两个音频(本地存储的预先录制的语音命令,并从应用程序中的麦克风录制)

时间:2016-07-27 19:24:42

标签: ios objective-c swift speech-recognition audio-fingerprinting

在应用程序中,我必须比较以前本地存储的语音命令的实时录音(如果它匹配(不仅是文本而且还有识别的人的声音),然后执行必要的操作。

来自同一个人的1个匹配语音命令。

2匹配命令的文字。

我采用了很多方法,但没有一种按照我的期望工作。

第一: 使用语音文本库,如OpenEarsSpeechKit,但这些库仅转换语音文本。

结果:因我的期望而失败

第二:(音频手指打印)

acrcloud Library在这个库中,我录制了一个命令并将该mp3文件存储在acrcloud服务器上,并与现场录音(我说的)相匹配,但它不匹配但是当我播放相同的录音(录制我的语音MP3文件),然后上传到acrcloud服务器然后匹配。 结果:因我的期望而失败

API.AI在这个库中,它就像语音到文本,我在他的服务器上存储了一些文本命令,然后任何人说出相同的命令,结果就会成功。 结果:因我的期望而失败

请建议我如何为iOS应用程序解决此问题

3 个答案:

答案 0 :(得分:1)

如果我正确理解你的要求,我就会这样做:

  1. 您需要比较每个录音的音频频谱以匹配此人(在加速框架中查看vDSP)使用1024窗口的FFT分析应该足够(如果没有尝试将其加倍以获得更多细节)I将开始与光谱中的5-10个峰进行比较并从那里进行实验。查看EZAudio以获得简单的FFT实现,以帮助您入门。

  2. 使用语音文本库来匹配文本。语音重音通常会大大扭曲他们的结果,所以我可能首先尝试从音频和比较中获取文本,而不是在文本中指定匹配的命令。

  3. 祝你好运!

答案 1 :(得分:1)

http://www.politepix.com/openears/可以在objective-c中使用,或者如果你想快速尝试http://blog.tryolabs.com/2015/06/15/tlsphinx-automatic-speech-recognition-asr-in-swift/。我从未使用它们,但它们似乎拥有你需要的一切。如果没有尝试寻找C ++库,应该有更多的选择,但最有可能你必须处理典型的移植问题。我真的不建议你自己写一个,因为你会花一些时间学习技术,然后导入一些信号处理库,然后开始编写自己的算法。当然,除非你有时间和兴趣去做。

我建议您开始以与语音识别相同的方式集成您的应用程序。通常开发语音识别软件:记录大量示例,构建测试并经常验证事情是否处于开启/关闭状态。

在进行语音识别工作(包括单词识别和说话人识别)时,我学到的一个更重要的事情是录音的质量对你能用它做什么产生了很大的影响。在您可以找到的最安静的地方制作一小批录音,然后您将总是有一个基准来与更真实的录音进行比较。

同时尝试覆盖您在稍后阶段在实际应用中找到的所有麦克风,因为没有内在的保证所有iphone麦克风都是相同的。我希望不同的iphone型号之间没有变化,但谁知道呢?

答案 2 :(得分:-2)

一般来说,我认为你应该使用方法1进行一些调整。 对于本地音频。您添加文本脚本版本,如:1音频,源脚本 用于录制音频。使用OpenEars,SpeechKit将音频转换为文本

尝试比较源脚本和文本以获取结果。您应该在源脚本中标记必须强调的文本,以获得最佳比较结果。有时我们会说:葡萄酒,妻子,白......(尝试处理这个想法)

GLHF