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