使用 Python 的 pyttsx3 库进行文本转语音

1. 什么是 pyttsx3?

1.1 pyttsx3 是一个 Python 库,它可以将文本转换为语音。与其他文本转语音库(如 gTTS)不同,pyttsx3 不依赖于网络服务,它使用本地的 TTS(Text-to-Speech)引擎,这使得它在离线状态下也能正常工作

1.2 pyttsx3 支持多平台(Windows、Linux 和 macOS),且可以对语音的音量、语速以及语音类型等进行控制

2. 安装 pyttsx3

要使用 pyttsx3,首先需要在你的 Python 环境中安装该库

你可以通过以下命令安装它:

pip install pyttsx3

安装完成后,就可以开始使用它来生成语音了

3. 使用 pyttsx3 播放文本

下面是一个简单的示例,展示了如何使用 pyttsx3 库将文本转换为语音

示例代码:

import pyttsx3

# 初始化 pyttsx3 引擎
engine = pyttsx3.init()

# 要转换的文本
text = "你好,欢迎使用 pyttsx3 库进行文本转语音转换。"

# 播放文本
engine.say(text)

# 等待语音播放完毕
engine.runAndWait()

在这段代码中,我们首先通过 pyttsx3.init() 初始化了语音引擎

然后通过 say() 方法将文本添加到语音队列中,最后通过 runAndWait() 方法让引擎开始播放并等待播放结束

4. 控制语音的参数

pyttsx3 库提供了几个可以控制语音效果的参数,包括音量、语速和语音类型

下面是如何调整这些参数的示例

控制音量

音量的取值范围是 0.0 到 1.0,默认值通常为 1.0

你可以通过 setProperty() 方法来设置音量

engine.setProperty('volume', 0.9)  # 设置音量为 90%
控制语速

语速的默认值通常是 200(单位:字/分钟),你可以使用 setProperty() 方法来设置语速

engine.setProperty('rate', 150)  # 设置语速为 150(单位:字/分钟)
控制语音类型

pyttsx3 允许你选择不同的语音引擎

你可以查看可用的语音列表并选择不同的语音类型(例如男声或女声)

voices = engine.getProperty('voices')  # 获取可用的语音列表

# 打印出可用的语音类型
for voice in voices:
    print(f"ID: {voice.id}, Name: {voice.name}, Lang: {voice.languages}")

# 设置使用第一个语音(通常是男性语音)
engine.setProperty('voice', voices[0].id)

你可以通过循环输出所有的语音选项,选择你想要的语音

例如,你可以选择一个女性的语音或者不同的语言

5. 保存语音到文件

pyttsx3 默认是播放语音,而不是保存语音文件

如果你希望将生成的语音保存到一个文件中,pyttsx3 本身并没有直接支持输出到文件的功能,但你可以使用其他工具结合来实现,例如 pydub 或其他音频处理库

如果你有兴趣,可以查看下面的代码片段,它展示了如何使用 pydub 将 pyttsx3 的输出保存为 .mp3 文件:

import pyttsx3
from pydub import AudioSegment
import os

# 使用 pyttsx3 生成语音并保存为 WAV 文件
engine = pyttsx3.init()
engine.save_to_file("你好,欢迎使用 pyttsx3 库进行文本转语音转换。", "output.wav")
engine.runAndWait()

# 使用 pydub 将 WAV 转换为 MP3
audio = AudioSegment.from_wav("output.wav")
audio.export("output.mp3", format="mp3")

# 删除临时的 WAV 文件
os.remove("output.wav")

6. 完整代码示例

下面是一个完整的示例代码,它演示了如何使用 pyttsx3 来控制音量、语速、语音类型,并将文本转换为语音:

import pyttsx3

# 初始化 pyttsx3 引擎
engine = pyttsx3.init()

# 获取当前的音量、语速、语音设置
volume = engine.getProperty('volume')
rate = engine.getProperty('rate')
voices = engine.getProperty('voices')

# 输出当前设置
print(f"当前音量: {volume}")
print(f"当前语速: {rate}")
print(f"当前语音: {voices[0].name}")

# 设置新的属性
engine.setProperty('volume', 0.8)  # 设置音量为 80%
engine.setProperty('rate', 150)    # 设置语速为 150

# 设置使用不同的语音
engine.setProperty('voice', voices[1].id)  # 使用第二个语音(通常是女性语音)

# 要转换的文本
text = "你好,欢迎使用 pyttsx3 库进行文本转语音转换。"

# 播放文本
engine.say(text)

# 等待语音播放完毕
engine.runAndWait()

pyttsx3 是一个功能强大的文本转语音库,可以用于各种应用场景,如语音助手、自动化任务、盲人辅助工具等,通过简单的 API,用户可以轻松控制音量、语速和语音类型等参数,且无需依赖互联网服务,适合离线使用。

相关推荐
蹦蹦跳跳真可爱5898 分钟前
Python----Python基础(字典 dict,创建,访问,添加、修改、删除,解包)
开发语言·python
Stanford_110612 分钟前
关于物联网的基础知识(二)——物联网体系结构分层
开发语言·物联网·微信小程序·微信公众平台·twitter·微信开放平台
拓端研究室TRL31 分钟前
Copula算法原理和R语言股市收益率相依性可视化分析
开发语言·算法·r语言·概率论
一只自律的鸡34 分钟前
c++ 预备
开发语言·c++
玉面小君41 分钟前
详解C#调用系统文件窗口:打开文件、保存文件和选择文件夹
开发语言·c#
Zik----1 小时前
Pytorch初学
人工智能·pytorch·python
stone-jack1 小时前
from pytorch3d import _C问题
人工智能·pytorch·python
KeyPan1 小时前
【机器学习:十四、TensorFlow与PyTorch的对比分析】
人工智能·pytorch·python·深度学习·机器学习·计算机视觉·分类
SomeB1oody1 小时前
【Rust自学】11.3. 自定义错误信息
开发语言·后端·rust
努力的CV战士1 小时前
C语言gdb调试
c语言·开发语言·gdb