1. pyttsx3是什么

pyttsx3是Python中的文本到语音转换库,可以实现文本的朗读功能。

2. pyttsx3的安装

pip install 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,不想刷新闻的时候,可以听听播报,放松一下眼睛也是不错的选择!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐