当前位置:首页>python>pyttsx3, 一个神奇的 Python 库

pyttsx3, 一个神奇的 Python 库

  • 2026-09-22 23:09:09
pyttsx3, 一个神奇的 Python 库

在现代应用程序中,文本转语音(Text-to-Speech, TTS)技术越来越受到重视。pyttsx3库可以帮助你轻松实现文本转语音功能。

在各种操作系统上, 会使用系统默认的语音合成器(Windows:SAPI5,Linux/macOS:espeak)

一、安装

pip install pyttsx3

安装好,我们创建一个main.py文件,输入下面代码:

import pyttsx3pyttsx3.speak("I will speak this text")

运行脚本,就能朗读文本内容。

python main.py

二、具体执行

  1. 初始化语音引擎
  2. 设置语音参数(语速、音量、声音类型)
  3. 朗读文本
  4. 将语音保存为音频文件

2.1、初始化语音引擎

engine = pyttsx3.init()# windowsengine = pyttsx3.init(driverName="sapi5")# linux, 需要编译安装espeak支持engine = pyttsx3.init(driverName="espeak")

2.2  设置语音参数

  • 「语速设置(RATE)」
rate = engine.getProperty('rate')  # 获取当前语速(默认约200)engine.setProperty('rate', 125)    # 设置较慢的语速(125字/分钟)
  • 「音量设置(VOLUME)」
volume = engine.getProperty('volume')  # 获取当前音量(0.0-1.0)engine.setProperty('volume', 1.0)      # 设置最大音量
  • 「声音选择(VOICE)」
voices = engine.getProperty('voices')  # 获取可用声音列表for voice in voices:    print(f"支持的声音列表: {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=['zh-CN']          gender=Female          age=Adult><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=['en-US']          gender=Female          age=Adult>

2.3 朗读文本

engine.say("Hello World!")  # 添加要朗读的文本engine.runAndWait()         # 执行并等待完成

2.4 保存语音文件

engine.save_to_file('Hello World', 'test.mp3')engine.runAndWait()  # 必须调用才能生成文件

三、优化处理

通过上面步骤,我们可以在电脑上读取文本内容了。 我们可以设置中文声音,调慢语速朗读。

engine = pyttsx3.init(driverName="sapi5")# 设置中文女生声音voices = engine.getProperty('voices')for voice in voices:if"Chinese"in voice.name:            engine.setProperty('voice', voice.id)# 设置语速engine.setProperty('rate', 125)engine.say("你好,世界")engine.runAndWait()

pyttsx3提供了事件回调机制,可以在语音开始、结束或发生错误时执行特定操作:

defonStart(name):    print(f'开始: {name}')defonWord(name, location, length):    print(f'词: {name}, 位置: {location}, 长度: {length}')defonEnd(name, completed):    print(f'结束: {name}, 完成: {completed}')defonError(name, exception):    print(f"错误: {name}, 异常: {exception}")# 连接回调函数engine = pyttsx3.init()engine.connect('started-utterance', onStart)engine.connect('started-word', onWord)engine.connect('finished-utterance', onEnd)engine.connect('error', onError)engine.say('这段文本将触发回调函数')engine.runAndWait()

四、「注意事项」

  1. 「阻塞与非阻塞」:runAndWait() 是阻塞方法,确保语音播放完毕后再继续程序。
  2. 「异步支持」:可通过事件循环实现异步(参考 engine.startLoop())。
  3. 「跨平台差异」:不同系统的语音质量和可用声音可能不同,Windows 通常支持更丰富的声音。
  4. 「中文支持」:部分系统需额外配置中文语音库(如 Linux 安装中文语音包)。

五、「常见问题」

  • 「报错 No module named 'pyttsx3'」:确认是否已安装库,或尝试重启 Python 环境。
  • 「无法播放中文」:检查系统是否支持中文语音(Windows 可在“设置-语音”中管理语音包)。
  • 「保存文件失败」:确保路径可写,或尝试使用绝对路径。

通过上述步骤,你可以轻松使用 pyttsx3 实现文本转语音功能。

最新文章

随机文章