【Python】文本转语音库pyttsx3

一、语音输出

1、安装文本转换语音库pyttsx3

安装指令:

pip install pyttsx3

2、导入pyttsx3库后,调用speak函数即可进行语音播放。

import pyttsx3
#语音播放 
pyttsx3.speak("How are you?")
pyttsx3.speak("I am fine, thank you")

3、调用init()方法来将其给初始化并且返回一个语音引擎对象:

import pyttsx3
engine = pyttsx3.init()

这个对象将文本以语音播放之前还可以去设置一下它的音量以及语速,而默认使用的是女声播放语音。可以设置合成器来选择语言的年龄、性别和语言等等,

4、合成器的主要参数如下:

  • age 发音人的年龄,默认为None

  • gender 以字符串为类型的发音人性别: male, female, or neutral.默认为None

  • id 关于Voice的字符串确认信息

  • languages 发音支持的语言列表,默认为一个空的列表

  • name 发音人名称,默认为None

默认的语音合成器有两个,两个语音合成器均可以合成英文音频,但只有第一个合成器能合成中文音频。如果需要其他的语音合成器需要自行下载和设置。

这个模式如果直接调用文本转语音的方法去播放的话是不能够识别中文的,所以需要设置一下合成器。代码示例如下所示:

engine = pyttsx3.init()
# 设置语速
engine.setProperty('rate', 200)
# 获取语速并输出
rate = engine.getProperty("rate")
print(rate)
# 设置音量
engine.setProperty('volume',0.8)
# 获取音量并输出
volume = engine.getProperty("volume")
print(volume)
# 获取语音合成器
voices = engine.getProperty('voices')
# 查看语音合成器
for v in voices:
    print(v)
#设置语音合成器
engine.setProperty('voice',voices[0].id)

最后也只需要调用say()方法将需要转语音的文本传进去,然后执行run方法就可以使用语言来播放这段文本了,代码如下所示:

engine.say("你瞅啥")
engine.say("瞅你咋地")
engine.say("再瞅一个试试")
engine.say("试试就逝世")
engine.runAndWait()

5、将输出的语音保存mp3文件

# 朗读音频保存
engine.save_to_file("白日依山尽,黄河入海流!", "output.mp3")
# 运行并且等到播放完毕
engine.runAndWait()
# 关闭引擎
engine.stop()

 6、完整测试代码:

import pyttsx3

engine = pyttsx3.init()
# 设置语速
engine.setProperty('rate', 200)
# 获取语速并输出
rate = engine.getProperty("rate")
print(rate)
# 设置音量
engine.setProperty('volume',0.8)
# 获取音量并输出
volume = engine.getProperty("volume")
print(volume)
# 获取语音合成器
voices = engine.getProperty('voices')
# 查看语音合成器
for v in voices:
    print(v)
#设置语音合成器
engine.setProperty('voice',voices[0].id)

engine.say("你瞅啥")
engine.say("瞅你咋地")
engine.say("再瞅一个试试")
engine.say("试试就逝世")
# 朗读音频保存
engine.save_to_file("白日依山尽,黄河入海流!", "output.mp3")
# 运行并且等到播放完毕
engine.runAndWait()
# 关闭引擎
engine.stop()

猜你喜欢

转载自blog.csdn.net/qq_51701007/article/details/129175420