我正在尝试构建一个应用程序,允许用户记录单个人的讲话,然后将录音保存在设备上,并用讲话的人的姓名标记每个记录。然后是检测模式,在这种模式下,我可以记录某人的名字,如果他在本地数据库中,就可以说出他的名字。
首先,这是可能的吗?我对iOS开发非常陌生,对可用的API不是很熟悉。
更重要的是,我应该使用哪个API (理想情况下是免费的)来关联传入语音和本地数据库中的记录?这应该表现得像Shazam,但要简单得多,因为我正在寻找匹配的数据库要小得多。
发布于 2012-08-20 01:39:46
如果你是iOS开发的新手,我会从核心应用程序开始录制音频,让人们手动选择要附加到的配置文件/名称,然后再担心说话人识别部分。
显然,对于识别方面,您有两个选择:您可以绑定其他人的语音身份验证/说话人识别库(可能是用C或C++编写的),也可以尝试编写自己的库。
有多少人会使用你的应用程序?你也许可以自己创造一些基本的东西:如果是男人和女人的区别,你可能可以通过对音频进行FFT频谱分析来弄清楚,并找出频率峰值在哪里。显然,用于发音不同音素的频率会有所不同,所以解决两个发音相当相似的人的一般情况可能很困难。你需要用一堆文本训练系统,并建立某种频率分布模型。您可以尝试进行聚类或其他操作,但很快就会遇到相当多的数学问题(gaussian mixture models等人)。有一些库/项目可以做到这一点。你可以从matlab中移植这个,例如:https://github.com/codyaray/speaker-recognition
如果您想要现成的东西,我会直接使用像mistral这样的C库,因为从Objective-C调用它应该相对容易。
SpeakHere示例代码应该可以让您开始录音和回放。
此外,用户可能需要更长的时间来训练你的应用程序来识别他们,而不是仅仅从列表中选择他们的名字来节省时间。除非你打算他们的声音是某种安全护照类型的东西,否则可能就不值得麻烦了。
https://stackoverflow.com/questions/12027710
复制相似问题