目标c-比较iOS中的两个音频(本地存储的预先录制的语音命令和从应用程序中的麦克风录制的)



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

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

2-match命令的文本

我申请了很多方法,但都没有达到我的预期。

第一个: 使用语音到文本库,如OpenEars、SpeechKit,但这些库只转换语音中的文本。

结果:按我的预期失败

第二:(音频指纹)

acrcloud库:在这个库中,我录制了一个命令,并将该MP3文件存储在acrccloud服务器上,与实时录制(我说的)相匹配,但它不匹配,但当我播放上传到acrcloud服务器的同一录制(我声音的录制MP3文件)时,它匹配。结果:按我的预期失败

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

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

如果我正确理解您的需求,我会这样做:

  1. 你需要比较每个录音的音频频谱,以匹配个人(看看Accelerate框架中的vDSP)1024个窗口的FFT分析应该足够了(如果不尝试将其加倍以获得更多细节)我会从频谱中的5-10个峰值开始比较,并从中进行实验。查看EZAudio,了解一个简单的FFT实现,让您开始。

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

祝你好运!

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

我建议你开始以语音识别软件通常开发的方式集成你的应用程序:记录一堆例子,构建测试,并经常验证事情是否正常。

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

还要试着在稍后的阶段覆盖你在实际应用中找到的所有麦克风,因为并不能保证所有iphone麦克风都是平等的。我希望不同型号的iphone不会有任何差异,但谁知道呢?

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

尝试比较源脚本和文本以获得结果。为了获得最佳的比较结果,您应该在源脚本中标记必须强调的文本。有时我们会用这样的词:葡萄酒,妻子,白色。。。(也试着处理这个问题)

GLHF

相关内容

最新更新