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数字人课堂"
验证方法
运行程序后,观察以下两点即可判定通过:
- 控制台输出“正在朗读: …”后,系统扬声器能清晰播放出对应文本的语音;
- 语音播放完毕后,控制台输出“朗读完成。”且程序正常退出,无异常报错。
若在无音频设备的环境(如纯服务器)中运行,程序可能报错或无声,此时可改用带声卡的本地机器验证。
语音合成调用流程
预期输出
当执行python tts_demo.py "你好"时,控制台显示:
正在朗读: 你好
朗读完成。
同时扬声器播放“你好”的语音。该输出由代码逻辑直接决定,可作为功能是否正常的判定依据。