Wicky's Blog

Python文本转语音

之前有自学过一段时间Python,前几天看到一个同事在朋友圈发了段小视频,他要给他儿子听写小学课本的词语,但是他又不想自己拿着课本一字一句的给他儿子听写,就自己写了个小程序,配上标准的台湾女声。想到这个,Python的语音库对中文支持好的,pyttsx 这个第三方库也挺强大的,还能提供获取系统的声音库,支持各种各类的语言。

下面介绍下对这个库的使用,更多栗子可以参照他的官方文档 examples

安装pyttsx

很简单,安装这个Python lib就行:

1
pip install pyttsx

使用

MacOS 系统中支持三种中文语音,分别是大陆、香港、台湾,可以按以下获取 :

1
2
3
4
5
6
7
8
voices = engine.getProperty('voices')
具体的中文有以下几种:
'com.apple.speech.synthesis.voice.mei-jia',
'com.apple.speech.synthesis.voice.sin-ji.premium',
'com.apple.speech.synthesis.voice.ting-ting'
需要的时候直接指定即可:
engine.setProperty('voice', random.choice(voices))

其他的语种也是支持的,可在voices中获取。

有一点在使用的时候需要注意,在操作的过程中如果需要有同步操作,需要通过它自身的事件驱动来做,如在读文本的时候,需要同时显示文本,需要给他注册一个事件:

1
2
3
4
5
6
7
8
9
....
def printText(name):
time.sleep(2)
print name
engine.connect('started-utterance', printText) //注册回调事件
text = '你好'
engine.say(text, name=text) //指定回调的内容
....

上面描述的text是要朗读的文本,name是要回调的事件。具体的程序参见readBoy