树莓派使用ilangbd库进行python进行中文文本转语音

我最初使用pyttsx/ppyttsx3进行文本转语音,但是英文部分可以成功输出音频,但是中文部分输出的音频不对,最后换成ilangbd这个百度的语音库,并且使用python调用shell库来完成。以下是详细的代码

树莓派换成清华源

因为国内网络环境原因,很多资源不能正常下载,所以我就索性换成了清华的源,提高效率
编辑/etc/apt/sources.list文件

sudo vim /etc/apt/sources.list

如果系统中还没有装vim,可以直接按照以下方式安装,可以先不管源,vim在哪个源中下载还都是顺利的

sudo apt-get install vim

打开sources.list文件后,用#将原文注释掉,用以下内容取代

注意/raspbian/rasphian目录,因为资源不是直接在raspbian下的,注意不要少敲一级目录

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

保存后,再编辑/etc/apt/sources.list.d/raspi.list

sudo vim /etc/apt/sources.list.d/raspi.list

同样将原文用#全部注释掉,用以下内容取代

deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui

最后用以下命令验证一下

sudo apt-get update
安装使用pyttsx库

在树莓派安装pyttsx库的时候,由于镜像系统中自带的pip版本太低不能正常获取,用以下命令进行更新pip和安装pyttsx/pyttsx3

sudo python -m pip install --upgrade pip
sudo python -m pip install pyttsx

我默认使用的是python2.7,如果是用python3以上的话python应该换成python3,pip应该换成pip3

以下是使用pyttsx进行文本转语音

#-*- coding: UTF-8 -*-
 2 import sys
 3 import pyttsx
 4 
 5 reload(sys)
 6 sys.setdefaultencoding("utf-8")
 7 
 8 text = '你好hello'
 9 engine = pyttsx.init()
10 engine.say(text)
11 engine.runAndWait()

可是测试过程中“你好”部分不能正常输出,我猜测问题一定是编码问题,但是我的系统Linux默认是utf-8,该文件的类型也是utf-8,文件中的中文编码我也设置了utf-8,所以我也很疑惑。如果谁有好的方法欢迎留言告知。

ilangbd安装及使用

1.安装命令行播放器mpg123

sudo apt-get install mpg123

2.安装百度语音python包

sudo python -m pip install ilangbd

或者

sudo pip install ilangbd

3.直接在命令行使用以下命令(注意是命令行,不是python环境中的命令行)

ilang "你好,world!"

4.在python2.7中使用(据说这个库目前只支持2)

ilang这个命令现在已经跟ls、cat等都属于shell命令了,只需要在python中进行系统shell调用即可,以下是代码

#coding:utf-8
import os
import sys

word = raw_input('输入想输出的音频')
print(word)
reload(sys)
sys.setdefaultcoding("utf-8")
cmd = "ilang "+word
os.system(cmd)

注意编码,注意cmd = "ilang "这句后面一定要有个空格,注意输入的文本中间不要有符号