智能机器人(15):语音合成

语音合成,术语指文本到声音TTS:text to speech,习惯T2S:text2speech,类似coder4context。
TTS大体包括:
1、文本分析,解析数字/缩写等。
2、语音分析,分解为语素单元。
3、韵律分析,例如重音/加重等更真实华。
4、音节分析。
常用的语音合成有eSpeak,Festival等,前者是用于英语语系,后者支持多语言但重点应用在Linux。

  • 1、Linux应用

1、安装包
$ sudo apt-get install festival
这个有可能需要的
$ sudo apt-get install libasound2
2、交互模式测试
$ festival
festival> (SayText “ni hao,wo lai zi zhe jiang”)
festival>
3、命令行模式测试
读字符
$ echo “hello,wo lai zi zhe jiang” | festival –tts
读日期
$ date ‘+%A, %B %e, %Y’ | festival –tts
读文件
$ echo “hello,wo lai zi zhe jiang” > ./sampletts
$ festival –tts sampletts #直接读myfile里的内容
写一个PHP脚本,读日期,测试下
$ nano today.php
#!/usr/bin/php -q
<?php
srand( (double)microtime()*1000000 );
echo “Today number is ” . rand(1,25);
?>
$ today.php | festival –tts
4、安装一个测试的Python脚本
$ wget https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/pyfestival/source-archive.zip
//$ svn checkout http://pyfestival.googlecode.com/svn/trunk/pyfestival-read-only
解压缩之后,安装
$ sudo python setup.py install
5、测试脚本
$ python
>>>import festival
>>>festival.say(“Good night.”)
6、音频存储
$ echo “Hello, good day” | text2wave -scale 50 -o hello.wav
text2wave读取文本文件内容转换为音频语音,-scale调节音量,-o保存到ulaw/snd/aiff/riff/nist/wav音频文件。

  • 2、ROS应用

1、安装需要的sound_play包
$ sudo apt-get install ros-indigo-sound-play
这个有可能需要的
$ sudo apt-get install ros-indigo-audio-common
$ sudo apt-get install libasound2
2、建立包含交互node的一个简单package,该包里面python编写的client节点把需要朗读的文本通过/robotsound主题发送到server节点。
$ cd ~/catkin_ws/src
$ catkin_create_pkg sample_tts rospy roscpp sound_play std_msgs
$ cd sample_tts
$ mkdir scripts
3、建立node的Python脚本
$ nano scripts/test.py
#!/usr/bin/env python
import roslib; roslib.load_manifest(‘sample_tts’)
import rospy, os, sys
from sound_play.msg import SoundRequest
from sound_play.libsoundplay import SoundClient
if __name__ == ‘__main__’:
rospy.init_node(‘soundplay_test’, anonymous = True)
soundhandle = SoundClient()
rospy.sleep( 1)
soundhandle.stopAll()
print ‘Starting TTS’
soundhandle.say(‘Hello world!’)
rospy.sleep( 3)
s = soundhandle.voiceSound(“Hello World, you are welcome”)
s.play()
rospy.sleep( 3)
4、测试,先运行服务器
$ roslaunch sound_play soundplay_node.launch
5、测试,运行测试脚本
$ rosrun sample_tts test.py

  • 3、切换语音包

1、默认声音
$ rosrun sound_play soundplay_node.py
$ rosrun sound_play say.py “Hello there, Good night.”
注意空格,注意,要比.停顿时间要短。 然后默认是一个帅小伙的声音响起来…
2、需要添加其他语音文件。
为安装语音文件,先查看安装的语音:
$ sudo apt-cache search –names-only festvox-*
再额外安装一个语音:
$ sudo apt-get install festvox-don
再试听:
$ rosrun sound_play say.py “Hello there, Good night.”
一个含混的声音…
3、回环测试
$ roslaunch rbx1_speech talkback.launch
这就是鹦鹉学舌,语音输入被转化成默认语音输出。

0 回复

发表评论

Want to join the discussion?
Feel free to contribute!

发表评论