
文本转语音(Text-to-Speech, TTS)技术能够将书面文字转换为自然语音输出,广泛应用于辅助阅读、语言学习、无障碍服务等场景。Python pyttsx3 库实现了文本转语音的播放和保存功能(如 WAV 格式),代码简洁且跨平台兼容。可应用于自动化通知、教育工具等场景。
首先安装 pyttsx3 库。它依赖于系统语音引擎(如 Windows 的 SAPI、macOS 的 NSSpeechSynthesizer 或 Linux 的 eSpeak),无需网络连接。使用 pip 安装:
pip install pyttsx3以下代码定义了一个函数 text_to_speech_and_save,该函数读取指定文本文件的内容,通过语音播放,并保存为音频文件。支持调节语速(范围:-10 到 10),并包含文件存在性检查和异常处理。
import pyttsx3
import os
def text_to_speech_and_save(file_path, save_path, rate=0):
"""
将指定文本文件的内容转换为语音播放,并保存为音频文件。
:param file_path: str, 文本文件路径(如 .txt 文件)
:param save_path: str, 音频文件保存路径(如 .wav 文件)
:param rate: int, 语速调整值,范围 -10 到 10(默认 0)
"""
try:
# 初始化语音引擎
engine = pyttsx3.init()
# 设置语速:将用户输入的 rate(-10 到 10)映射到实际语速值(pyttsx3 默认语速约 200)
base_rate = 200 # 默认语速基准
actual_rate = base_rate + rate * 10 # 调整幅度,例如 rate=2 时语速为 220
engine.setProperty('rate', actual_rate)
# 检查文本文件是否存在
if not os.path.exists(file_path):
print(f"文件未找到:{file_path}")
return
# 读取文本文件内容
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read().strip() # 去除首尾空行
if not text:
print("文件内容为空,无需处理")
return
print("正在朗读文本...")
engine.say(text) # 播放语音
engine.runAndWait() # 等待播放完成
print("朗读完成")
# 保存语音为音频文件
print("正在保存音频文件...")
engine.save_to_file(text, save_path)
engine.runAndWait() # 确保保存操作完成
print(f"音频已保存至:{save_path}")
except Exception as e:
print(f"发生错误:{e}")
# 示例调用
if __name__ == "__main__":
text_file = "sample.txt" # 替换为你的文本文件路径
audio_file = "output.wav" # 音频文件保存路径
text_to_speech_and_save(text_file, audio_file, rate=2) # 语速稍快(rate=2)1、创建一个文本文件(如 sample.txt ),内容为:“你好,欢迎使用 Python 文本转语音功能。”
2、运行脚本,语音会先播放,然后生成 output.wav 文件。
3、调整 rate 参数体验不同语速,例如 rate=-5 为慢速。
“无他,惟手熟尔”!有需要就用起来。
如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!
本文分享自 Nicholas与Pypi 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!