昨天ROS中语音回放功能做到最后,发现gstreamer自带的playbin element使用的是标准gstreamer自带的安装包。ROS也就是调用了gstreamer这个包而已。而gstreamer貌似没有支持中文的语料库。那么,如何在ROS中实现中文语音合成呢。自然选择了ekho.
问题 变成了,如何在talkback.py中调用ekho实现中文语音合成。
查看talkback.py,找到了订阅/recognizer/out topic的回调函数,里面有消息体内容的表示:msg.data
然后,就需要调用shell 命令将其通过ekho朗读出来。
昨天下班前试了20分钟都没有实现此功能,也没想好如何描述和搜索此功能。
下班后想了想,应该是作为python向shell传递变量的功能。
想明白后,今天早上一下子就试了出来。
我使用了字符串连接的方式实现的,看起来比较简单和直观
if msg.data == '左转':
os.system('ekho ' + msg.data)
因此,问题总结下,还是因为自己对于python不够熟悉,看的代码多,自己动手写的还是少了。
另外,遇到不熟悉的问题,先把问题简化提炼出来再来查资料,就会事半功倍的。盲目试凑只能是浪费时间。谋定而后动!!!
参考了这篇帖子:http://blog.youkuaiyun.com/ysdaniel/article/details/7970978
python -> shell:
1.环境变量
- import os
- var=123或var=’123’
- os.environ[’var’]=str(var) #environ的键值必须是字符串
- os.system(’echo $var’)
- import os
- var=123或var=’123’
- os.environ[’var’]=str(var) #environ的键值必须是字符串
- os.system(’echo $var’)
2.字符串连接