1. 基于文本的语音合成基础

基于文本的语音合成基础 学习卡片

任务说明

本案例实现一个最小可用的文本到语音(TTS)转换功能:用户输入一段文本,程序调用操作系统默认语音引擎朗读该文本。核心目标是打通“文本输入 → 语音引擎调用 → 音频输出”的完整链路,不涉及音色定制、语速调节或音频文件保存等扩展功能。

实现方案

采用Python标准库中的pyttsx3库完成语音合成。该库封装了Windows SAPI、macOS NSSpeechSynthesizer和Linux eSpeak等底层引擎,通过统一接口实现跨平台文本朗读。代码逻辑分为三步:初始化引擎、设置输入文本、触发朗读。为验证功能,额外提供命令行参数入口,支持直接传入待朗读文本。

代码实现

import sys
import pyttsx3

def text_to_speech(text: str) -> None:
    """
    使用系统默认语音引擎朗读指定文本。
    
    Args:
        text: 需要朗读的文本内容
    """
    # 初始化语音引擎(自动选择系统可用后端)
    engine = pyttsx3.init()
    
    # 设置要朗读的文本
    engine.say(text)
    
    # 阻塞直到朗读完成
    engine.runAndWait()

if __name__ == "__main__":
    # 支持命令行传参:python tts_demo.py "你好,世界"
    if len(sys.argv) > 1:
        input_text = " ".join(sys.argv[1:])
    else:
        # 默认演示文本
        input_text = "你好,这是基于文本的语音合成示例。"
    
    print(f"正在朗读: {input_text}")
    text_to_speech(input_text)
    print("朗读完成。")

依赖安装

pip install pyttsx3

Linux系统需额外安装espeak:sudo apt-get install espeak(Windows/macOS无需此步骤)。

运行方式

# 方式一:使用默认文本
python tts_demo.py

# 方式二:朗读自定义文本
python tts_demo.py "欢迎来到AI数字人课堂"

验证方法

运行程序后,观察以下两点即可判定通过:

  1. 控制台输出“正在朗读: …”后,系统扬声器能清晰播放出对应文本的语音;
  2. 语音播放完毕后,控制台输出“朗读完成。”且程序正常退出,无异常报错。

若在无音频设备的环境(如纯服务器)中运行,程序可能报错或无声,此时可改用带声卡的本地机器验证。

语音合成调用流程

文本到语音合成调用时序 用户/调用方 pyttsx3引擎 系统语音后端 init() 初始化 say(text) 传入文本 调用底层TTS接口 音频流输出 runAndWait() 阻塞等待 ✓ 朗读完成返回

预期输出

当执行python tts_demo.py "你好"时,控制台显示:

正在朗读: 你好
朗读完成。

同时扬声器播放“你好”的语音。该输出由代码逻辑直接决定,可作为功能是否正常的判定依据。