1、介绍
pyttsx3模块是python的一个第三方模块,作用是进行语音合成。
- 无需请求api,本地合成,可以不受次数和字数限制
- 技术相对成熟,应用广泛,使用方便
2、pyttsx3.speak函数
import pyttsx3
pyttsx3.speak('你指尖跃动的电光,是我此生不灭的信仰')
- 这是该模块最简应用,调用speak函数时,会播放合成的语音
- 播放过程是依赖原线程,播放完毕后继续执行
def speak(text):
engine = init()
engine.say(text)
engine.runAndWait()
3、参考speak函数
import pyttsx3
def speak_text(text: str):
# 创建语音合成对象
engine = pyttsx3.init()
# 合成并播放
engine.say(text)
# 阻塞,等待合成过程和播放过程
engine.runAndWait()
speak_text('区区砂砾,不及我半分')
- 自定义函数,相比原生的speak函数可以进行参数调试,乃至开线程处理
- engine对象是prttsx3.engine.Engine类的对象
4、Engine类
def say(self, text, name=None):
- text参数,str类型,作为合成语音的内容
- 该方法将text参数的字符串合成语音,并且直接播放
- 该方法调用后会直接执行其后的语句
def save_to_file(self, text, filename, name=None)
- text参数,str类型,作为合成语音的内容
- filename参数,str类型,表示合成结果输出的文件路径
- 该方法是将text参数的字符串合成语音,保存到指定文件中。不会直接播放
- 因此该方法调用后会直接执行其后的语句
def runAndWait(self):
- 实际上,say和save_to_file方法都并不会实际执行,而是进行相关设置
- 该方法才是开启运行以及阻塞,等待任务完成才继续向后执行
def setProperty(self, name, value)
- 设置合成的相关属性
- voice,选择声音。值可以是声音对应的id
- rate,选择速率。int类型,表示每分钟多少单词
- volume,语音量,float类型,范围从0.0-1.0
def getProperty(self, name)
- 获取相关属性
- name为voice时,获取到的是str类型,表示id
- name为voices时,获取到的是list类型,其元素是pyttsx3.voice.Voice对象
- name为rate时,获取到的是int类型,默认值200
- name为volume时,获取到的是float类型,默认值1.0
def isBusy(self)
- 是否繁忙,返回bool类型
def stop(self)
- 停止合成语音和输出文件的线程
5、语音合成引擎
(1)查看本地支持的语音合成引擎
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
print(type(voice))
print("Name: %s, ID: %s, Age: %s, Age: %s, Languages Known: %s" % (voice.name, voice.id, voice.age, voice.gender, voice.languages))
<class 'pyttsx3.voice.Voice'>
Name: Microsoft Huihui Desktop - Chinese (Simplified), ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0, Age: None, Age: None, Languages Known: []
<class 'pyttsx3.voice.Voice'>
Name: Microsoft Haruka Desktop - Japanese, ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_JA-JP_HARUKA_11.0, Age: None, Age: None, Languages Known: []
<class 'pyttsx3.voice.Voice'>
Name: Microsoft Zira Desktop - English (United States), ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0, Age: None, Age: None, Languages Known: []
- 这里显示本地支持三种语音合成引擎
(2)设置语音合成引擎与测试
engine.setProperty('voice', engine.getProperty('voices')[0].id)
- Huihui,支持中文、数字和英文,即使混杂也可以识别依序读取。数字是中文读音,十进制读法
- Haruka,支持日语、数字和英文,中文会被跳过。数字是日语读音
- Zira,支持数字和英文,中文会被跳过。数字是英语读音,单独的数字会作为十进制读法,而混杂过程中会逐位读出
标签:engine,pyttsx3,语音,text,合成,模块,voice From: https://www.cnblogs.com/wd404/p/17806512.html