ISEE小语
尼采在《善恶的彼岸》中所说:“当你凝视深渊的时候,深渊也在凝视你。”
本次介绍一个非常强大的三方库pyttsx3。
重点是这个库可以离线工作、可以离线工作、离线工作。(重要的优点说三遍)
环境:
IDE | Pycharm |
Python | 3.9.16 |
三方库 | pyttsx3==2.90 |
导入:
import pyttsx3
接下来,我们做个小实例,逐步介绍
初始化引擎
engine = pyttsx3.init()
(左右滑动查看完整代码)
获取当前语速
默认情况下,当前语速是200
rate = engine.getProperty('rate')
print(f"Current speech rate: {rate}")
结果:
Current speech rate: 200
(左右滑动查看完整代码)
注:默认的200语速较快,个人建议语速的范围120-150较为合适。
设置新的语速
engine.setProperty('rate', 120)
(左右滑动查看完整代码)
获取当前音量
volume = engine.getProperty('volume')
print(f"Current volume: {volume}")
结果:
Current volume: 1.0
(左右滑动查看完整代码)
注:默认的1.0的最高音量,可设置范围是0.0到1.0之间,个人建议根据实际环境设置,本次取的范围0.6-0.8较为合适。
设置新的音量
engine.setProperty('volume', 0.6)
(左右滑动查看完整代码)
获取可使用的语音
语音的使用,根据实际操作系统中所安装的语音包进行选择。以windows 10为例,如果需要不同的语种,可以在【系统设置】—>【时间和语言】—>【语音】界面进行添加,如下:
小栈的实际环境是windows 10
voices = engine.getProperty('voices')
for voice in voices:
print(f"Voice: {voice.name}")
结果:
Voice: Microsoft Huihui Desktop - Chinese (Simplified)
Voice: Microsoft Zira Desktop - English (United States)
(左右滑动查看完整代码)
设置特定的语音
由于小栈的语音只有两个,默认情况下是选择第一个,如果需要设置第二个,则如下:
engine.setProperty('voice', voices[1].id)
(左右滑动查看完整代码)
注:
第一个是“简体中文”,即中文和英文均可转语音。
第二个是“英语(美国)”,只能在英文的时候可转语音。亲测,选择这个语音包,中文是不能使用的。
请根据实际文案进行选择。
将中文转换为语音播放
# 设置特定的语音
engine.setProperty('voice', voices[0].id)
# 将文本转换为语音播放
engine.say("尼采在《善恶的彼岸》中所说:“当你凝视深渊的时候,深渊也在凝视你。”")
# 等待语音播报完毕
engine.runAndWait()
(左右滑动查看完整代码)
将英文转换为语音播放
建议在英文转语音的时候,选择第二个语音包,毕竟使用 英文语音包 转英文 比较合适。
# 设置特定的语音
engine.setProperty('voice', voices[1].id)
# 将文本转换为语音播放
engine.say("Hello everyone, welcome to today's event!")
# 等待语音播报完毕
engine.runAndWait()
(左右滑动查看完整代码)
转换为mp3音频文件
以上已经可以语音播放了,剩下的保存为mp3音频文件即可。其实就在以上实现基础上使用了engine.save_to_file这个方法。
# 设置特定的语音
engine.setProperty('voice', voices[0].id)
# 将文本转换为语音播放
text1 = "尼采在《善恶的彼岸》中所说:“当你凝视深渊的时候,深渊也在凝视你。”"
engine.say(text1)
# 将文本转换为语音并保存为mp3文件
engine.save_to_file(text1, 'Chinese.mp3')
# 设置英文特定的语音
engine.setProperty('voice', voices[1].id)
# 将文本转换为语音播放
text2 = "Hello everyone, welcome to today's event!"
engine.say(text2)
# 将文本转换为语音并保存为mp3文件
engine.save_to_file(text2, 'English.mp3')
# 等待语音播报完毕
engine.runAndWait()
(左右滑动查看完整代码)
总结
pyttsx3的使用比较广泛,如
有兴趣的同学可以深入探索和学习!!!
获取:后台回复"text2mp3"即可!
文章就分享到这儿,喜欢就点个赞吧!