python之pyttsx3实现文字转语音播报
原创
©著作权归作者所有:来自51CTO博客作者l8947943s的原创作品,请联系作者获取转载授权,否则将追究法律责任
1. pyttsx3是什么
pyttsx3是Python中的文本到语音转换库,可以实现文本的朗读功能。
2. pyttsx3的安装
3. pyttsx3的demo
import pyttsx3
pyttsx3.speak("Are you ok?")
pyttsx3.speak("最近有许多打工人都说打工好难")
戴上耳机直接跑即可。是不是很简单!那如果我们想对读音的速率,中英文问题进行自定义设置呢?可以用pyttsx3初始化来获取语音引擎,在调用init后会返回一个engine对象,对engine对象进行操作即可。
import pyttsx3
engine = pyttsx3.init('sapi5') # 获取一个引擎,默认是sapi5
engine.setProperty('rate', 130) # 设置朗读的速率
engine.setProperty('volume',0.6) # 设置朗读的音量
如果使用引擎,则需要主要朗读中文和朗读英文是需要区别对待的,如何查看语音合成器类别(看看有什么朗读种类)?
voices = engine.getProperty('voices')
for voice in voices:
print(voice)
输出结果如下:
<Voice id=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0
name=Microsoft Huihui Desktop - Chinese (Simplified)
languages=[]
gender=None
age=None>
<Voice id=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0
name=Microsoft Zira Desktop - English (United States)
languages=[]
gender=None
age=None>
默认的语音合成器有两个,两个语音合成器均可以合成英文音频,但只有第一个合成器能合成中文音频。如果需要其他的语音合成器需要自行下载和设置。如何选择合成器,代码如下:
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) # 如果选用voices[0]则表示朗读中文
engine.setProperty('voice', voices[1].id) # 如果选用voices[1]则表示朗读英文
引擎的朗读命令:
engine.say("要讲的内容")
engine.runAndWait() # 运行所有指令后等待下一次指令循环
engine.stop() # 直接朗读中断
如果有需要,想将朗读的内容保存为MP3,可以使用如下命令:
engine.save_to_file(text, 'test.mp3') # 将要朗读的text转成MP3文件
4. 完整的demo
import pyttsx3
engine = pyttsx3.init('sapi5')
engine.setProperty('rate', 130)
engine.setProperty('volume', 0.6)
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)
def speak(audio):
engine.say(audio)
engine.runAndWait()
text = "最近有许多打工人都找我说打工好难"
speak(text)
engine.save_to_file(text, 'test.mp3')
5. 搞个ToDo吧!
可以每天早、中、晚爬取热搜文本,然后将其做成MP3,不想刷新闻的时候,可以听听播报,放松一下眼睛也是不错的选择!