由于项目需要,需要研究一下语音识别。
目前得到的结论如下:
可供使用的语音识别有Google, 讯飞,OpenEars
经测试:Google语音识别可以识别出普通话,香港话,台湾话。 网上有一个例子, 是根据苹果的官方Demo, SpeakHear改的, 效果还是不错的,唯一不太好的是,它没有判断什么时候用户说完话了,而是需要用户来点击结束,才认为是结束。
可以参看这篇文章:http://blog.csdn.net/dlangu0393/article/details/7214728
Google同样提供了语音合成:今天用google在线翻译的时候,发现了语音功能。 可以让自己的文字发音,这是一个很不错的功能,如果用到自己应用中,会不会是一个特色呢。 google TTS服务接口:http://translate.google.com/translate_tts?tl=en&q=text 这个会返回英文“text”发音的mp3.如果想返回中文的发音如何办呢?大家注意接口中的参数,修改一下就行:http://translate.google.com/translate_tts?tl=zh&q=测试。 由此类推,如果是其它国家的发音如何办, 只需要修改tl=countryCode这个参数。
对于Google提供的语音合成, 我记得在学习iphone开发之初,我就找到一个Demo可以使用给一个串,然后自动读出这个串的, 并且很简单的几行代码就可以做到。 前两天找了一下, 找了半天也没有找到,不知道是什么情况。
讯飞, http://dev.voicecloud.cn/index.php?vt=1
可以到这个官网上看到, 对公司和个人免费,如果用户达到百万级后,会收取一定的费用,适合开发使用。
优点:可以自动截取用户的说话,当用户沉默一会儿,讯飞会认为用户已经说完了。
不太好的是:
1。 对语言支持不如Google, 可以分大陆话,香港话以及台湾话, 而讯飞这个貌似分不出来。
2。 讯飞和开发者的协议不太人情,可以理解为讯飞什么时候看到这个开发者火了,那么他随时有权力终结掉这个开发者的使用讯飞的应用。如果是大公司使用这个,个人觉得还是有一定的风险的
3。 使用起来不如Google的简单,
4。 在线的,而且是1028端口,很多用户在使用时,在wifi的情况下,通过公司的网络,由于公司的网络极可能会封掉1028这样的不常用端口,会导致用户没法使用。
OpenEars, http://www.politepix.com/openears/
试了一下他的Demo,发现只能识别限定的词,如up, left, right, turn, go.(感觉比较适用于游戏,就是那种控制方向的游戏,但又不能是那种反应很快的游戏,因为识别的速度跟不上)
优点:
1。免费
2。 不依赖网络运行。
缺点:
1。 只能识别限定的词,当然也可能是因为我研究得不够