首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 将文本内容转换为语音播放并保存为音频文件

Python 将文本内容转换为语音播放并保存为音频文件

作者头像
用户11081884
发布2026-07-20 18:51:36
发布2026-07-20 18:51:36
290
举报

文本转语音(Text-to-Speech, TTS)技术能够将书面文字转换为自然语音输出,广泛应用于辅助阅读、语言学习、无障碍服务等场景。Python pyttsx3 库实现了文本转语音的播放和保存功能(如 WAV 格式),代码简洁且跨平台兼容。可应用于自动化通知、教育工具等场景。

一、安装所需库

首先安装 pyttsx3 库。它依赖于系统语音引擎(如 Windows 的 SAPI、macOS 的 NSSpeechSynthesizer 或 Linux 的 eSpeak),无需网络连接。使用 pip 安装:

代码语言:javascript
复制
pip install pyttsx3

二、代码实现

以下代码定义了一个函数 text_to_speech_and_save,该函数读取指定文本文件的内容,通过语音播放,并保存为音频文件。支持调节语速(范围:-10 到 10),并包含文件存在性检查和异常处理。

代码语言:javascript
复制
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)

三、代码说明

  • 语速调整rate 参数范围 -10(最慢)到 10(最快),通过线性映射调整实际语速。例如, rate=0 使用默认语速,rate=2 会稍快。
  • 文件处理:代码检查文本文件是否存在,并自动处理编码(使用 UTF-8)。如果文件为空,会提示并退出。
  • 音频保存save_to_file 方法将语音保存为 WAV 格式(默认),也可指定其他格式(如 MP3,需系统支持)。
  • 异常处理:使用 try-except 块捕获可能错误(如文件权限问题、引擎初始化失败等)。

四、使用示例

1、创建一个文本文件(如 sample.txt ),内容为:“你好,欢迎使用 Python 文本转语音功能。”

2、运行脚本,语音会先播放,然后生成 output.wav 文件。

3、调整 rate 参数体验不同语速,例如 rate=-5 为慢速。

“无他,惟手熟尔”!有需要就用起来。

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、安装所需库
  • 二、代码实现
  • 三、代码说明
  • 四、使用示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档