我已经尝试过,就像StackOverflow上的建议,Openears成功,并从NSSTRINGS数组生成自定义词汇表。 但是,我们还需要识别地址簿中的名称,这里的回退方法不可避免地经常失败......
我可以自己编写一个解析器并动态地将文本(主要是法语和荷兰语的名字)转录到音素,但这将是很多(猜测)工作....我很确定我需要的数据是在识别过程中的某个地方生成的,所以也许有人可以用我在iOS上可以利用的方式指向OpenEars或Flite代码中的钩子?
或者其他一些将用户语音转换为我可以输入Openears的音素字符串的库吗?
答案 0 :(得分:0)
识别openears中名称的正确方法是将特定发音放入拼音字典中。您不需要自己分析语音字符串,实际上识别器完全没有关于语音字符串的信息,因此您甚至无法检索它。此外,音频和音素序列之间没有明确的对应关系。
例如,字母到音素代码可以推迟以下发音:
tena T IH N
正确的发音是
tena T EH N AH
如果预测语音不正确,识别器将无法识别名称。经过更正,它将准确识别名称
问题是在openears中自动词到音素的转换可能会失败。对于外来词,它可能会更频繁地失败。您需要做的是将名称添加到字典中,以便识别器知道其正确的语音顺序。如果已知正确的序列,识别器将能够自己检测该字。您还可以在openears中改进字形到音素代码,以使其更准确。现代的pocketsphinx使用phonetisaurus API,它比flite更准确,也可以在外国名称等特殊情况下训练。
对于所有准确性问题,首先建议收集测试样本数据库,以便进行字符串准确度分析。拥有此类数据库后,您可以显着提高准确性。详见
http://cmusphinx.sourceforge.net/wiki/faq#qwhy_my_accuracy_is_poor