转:http://blog.csdn.net/smking/article/details/7945552
http://blog.csdn.net/jeepxiaozi/article/details/17842391
百度tts
http://tts.baidu.com/text2audio?lan=zh&text=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD&ie=utf-8&spd=10
mplayer "http://tts.baidu.com/text2audio?lan=zh&text=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD&ie=utf-8&spd=10"
由于项目需要,需要研究一下语音识别。
目前得到的结论如下:
可供使用的语音识别有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。 只能识别限定的词,当然也可能是因为我研究得不够
在这篇短文中我将告诉大家如何利用一段Python脚本让你的树莓派“说话”,还是真人发音的哦。因此,如果你想在自己的项目中增加一些人声,那么请跟着我的教程一步一步来,只需要写几行Python代码就能办到了。
在这个小项目中,你需要有这么几样东西:
- 一台树莓派(显然必须得有这个)
- 安装好兼容树莓派的操作系统(安装系统可利用NOOBS工具,傻瓜式安装哦)
- 一对耳机/扬声器
- 写几分钟的代码
首先你得安装mplayer,在终端中输入:
1
|
sudo apt-get install mplayer
|
现在假设一切顺利。在Raspbian系统中使用预安装好的Python解释器,输入如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#
Rollcode.com
import sys, subprocess, urllib
def getSpeech(phrase):
googleAPIurl = "http://translate.google.com/translate_tts?tl=en&"
param = {'q': phrase}
data = urllib.urlencode(param)
googleAPIurl += data #
Append the parameters
return googleAPIurl
def raspberryTalk(text): #
This will call mplayer and will play the sound
subprocess.call(["mplayer",getSpeech(text)], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if __name__ == "__main__":
raspberryTalk("Hello
from Rollcode.com") |
我们可以将上述代码保存到一个文件中,就命名为TalkingPi.py吧。现在只要输入:
1
|
sudo python TalkingPi.py
|
就可以听到树莓派好像真人一样开始说话了,所说的内容就是传递给函数raspberryTalk的参数。是不是很简单呢?其实我们就是利用mplayer来播放从google翻译传来的真人发声而已,就这么简单。
此外,如果你想通过终端来调整扬声器的音量,只需要输入alsamixer,然后通过向上和向下箭头来调整音量即可。 完整的代码可以在这里找到。