有什么方法可以在 Android 中进行语音匹配吗?以下面的场景为例。
- 用户“A”在应用中说了些什么,并通过应用将其记录在手机中。
- 用户“B”在应用中说了些什么,并通过应用将其记录在手机中。
- 用户“C”在应用中说了些什么,并通过应用将其记录在手机中。
- 在完成所有这些录音后,用户“A”来到并与该应用对话。由于他的声音已经被录制,应用程序识别出这是用户“A”。
或者其他类似的东西..
- 用户“A”在应用中说出单词“House”并通过应用将其记录在手机中。
- 用户“B”在应用中说出单词“House”,并通过应用将其记录在手机中。
- 用户“C”在应用中说出单词“House”并通过应用将其记录在手机中。
- 完成所有这些录音后,用户“A”过来对着应用说出“House”这个词。由于他的声音已经被录制,应用程序识别出这是用户“A”。
这在 Android 中可行吗?哪种方法可行?我还没有看到任何为此内置的库,但是有什么办法吗?
您可能需要检查 Recognito,它在 Java 中执行独立于文本的说话人识别
这是一个在 Apache 2.0 下许可的 FOSS 库
https://github.com/amaurycrickx/recognito
免责声明:我是作者 :-)
它对 Oracle 的 javax.sound 有轻微的文件处理依赖性,但从主 Recognito 类中删除这种依赖性应该很简单(一些要丢弃的方法:在参数中查找"file"并点击 del)
我不知道有任何其他 FOSS 替代品无需修改即可与 Android 兼容
有很多 javadoc,代码应该很简单。
你会想知道的一件事是如何创建值介于 -1.0 和 1.0 之间的 double[]
首先,您可能需要查看 FileHelper 类,它可以处理 16 位 PCM 编码文件。
请注意,单个单词不足以提取良好的声纹并随后识别用户
对于这个过程,我会说使用重复 3 次的短语来构建平均声纹。在识别时使用相同的短语。
该库与文本无关,但如果您需要保持录音简短,使用相同的短语会有所帮助。如果您希望它真正独立于文本(用户说出任何内容并得到识别),您将需要更长的声音样本。
HTH