树莓派智能语音助手之TTS – pyttsx3 + espeak
要让树莓派“开口说话”,就需要文字转语音的功能。起初选用Coqui-TTS,需要安装torch2.1(因为TTS需要torch>=2.1.0),结果没有找到现成的whl文件(目前找到的torch可用版本是1.8),只能放弃。然后就选择了pyttsx3+espeak方案来实现语音合成。
pyttsx3的安装直接输入 pip install pyttsx3 就ok了。
在终端输入 touch test.py ,然后用 sudo nano test.py编辑:
import pyttsx3
def text_to_speech(text):
engine = pyttsx3.init()
engine.setProperty('volume', 1)
engine.say(text)
engine.runAndWait()
engine.stop()
text_to_speech('hello')
保存好test.py,在终端输入python3 test.py,怎么没有声音?
查了查,有说Linux上要装espeak。二话不说,继续开干: sudo apt install espeak
然后再用python3 test.py,终于听到略显僵硬的男声“hello”了。
要想听中文怎么设置?很简单,首先在pyttsx3.init()的括号里加入’espeak’,然后在engine.say()前新增一行engine.setProperty(‘voice’,’zh’)。这时候text变成中文,程序执行的时候就是中文了。如果要听女声,新增的这句就改成engine.setProperty(‘voice’,’zh+f3’)。
执行中文发音的时候会得到一个“Full dictionary is not installed for ‘zh’”的报错,解决方案如下:
1、重新下载语音包
git clone https://github.com/caixxiong/espeak-data/
cd espeak-data/
unzip espeak-data.zip
cd espeak-data/
2、拷贝解压文件到原安装包对应目录
sudo cp -r * /usr/lib/arm-linux-gnueabihf/espeak-data/
3、编译中文包
sudo espeak –compile=zh
4、编译成功后需要把原来wget下载的espeak-data目录全部整体删除,
sudo rm -rf espeak-data
不然可能会报错:
树莓派可以读中文啦!!不过要吐槽下,这个合成的声音真的很机械,不好听。
有什么办法让声音变得更柔和些吗?
参考文章:
《linux espeak语音tts;pyttsx3 ubuntu使用》
《Python第三方库推荐:pyttsx3》
作者:天飓