Text-to-Speech
文本转语音(TTS)使用神经声学模型、声码器和音频词元模型,将书面文本转换为自然语音,应用于助手和无障碍功能。
文本转语音(TTS),也称语音合成,是将书面文本转换为语音音频的技术。TTS 系统会确定每个词的发音、每个音的时长,以及句子中的音高和重音变化,然后生成波形。早期系统要么拼接录制好的语音片段,要么根据统计模型生成音频,听起来明显像机器合成。深度学习改变了这一切:DeepMind 的 WaveNet 于 2016 年逐个采样点生成原始音频;2017 年,Google 的 Tacotron 2 平均意见分达到 4.53 分(满分 5 分),而专业录音为 4.58 分。如今的系统可以用多种语言、不同音色进行朗读,从几秒钟的音频克隆音色,还能按照语气指令生成语音,为屏幕阅读器、语音助手、有声读物和对话式 AI 提供支持。TTS 是语音转文本的反向过程。
文本转语音的工作原理#
每个系统都从文本前端开始。文本规范化会将数字、日期、货币和缩写展开成文字,因此 “Dr. Lee paid $3.50” 会变成 “Doctor Lee paid three dollars and fifty cents”;字素转音素模块会确定发音,包括像 “read” 这样发音取决于时态的词。许多模型还会预测韵律,即每个音的时长、音高和能量。之后,主要由两类模型生成音频:
- 声学模型加声码器: 声学模型会预测梅尔频谱图,这是一种紧凑图示,表示能量如何随时间分布在不同频率上;神经声码器则将其转换为波形。Tacotron 2 以自回归方式逐帧预测频谱图。FastSpeech 根据每个音素的时长并行预测频谱图,速度比自回归 Transformer 快 270 倍。HiFi-GAN 声码器在单块 V100 GPU 上合成 22.05 kHz 音频的速度达到实时速度的 167.9 倍。Voicebox 和 F5-TTS 也会使用流匹配以非自回归方式预测梅尔频谱图,再将其传给声码器。
- 音频 Token 语言模型: Microsoft 的 VALL-E 将语音视为神经音频编解码器生成的离散 Token,并使用 Transformer 语言模型生成这些 Token,方式与 LLM 生成文本相似。给定一段 3 秒的陌生说话者录音作为提示后,它会用该说话者的音色继续说话。
VITS 等端到端模型将声学模型和声码器合并为一个网络,并通过单阶段训练;多模态模型(如 GPT-4o)则会直接在回复中生成语音,无需单独的 TTS 步骤。
文本转语音与相关术语#
- 语音转文本: 反向过程,即将语音音频转写为文本。语音助手会将两者串联起来:语音转文本负责转写用户的话,大型语言模型负责生成回复,TTS 再将回复转换为语音。
- 声音克隆: TTS 针对特定人物的声音进行合成,可以使用一段简短的参考音频,也可以基于该说话者的录音进行微调。未经同意使用时,这种技术会生成语音深度伪造内容。
- 声音转换: 将录制的语音作为输入,在保留文字内容和表达方式的同时更换说话者身份。TTS 则从文本开始。
实际应用#
- 无障碍: 屏幕阅读器会为盲人和低视力用户朗读界面元素和文档;失去说话能力的人则可以输入消息,再由合成语音替他们朗读。
- 语音助手和智能体: 客服智能体、车载助手和智能音箱会朗读生成的回复,通常在回复剩余部分还在生成时,就开始流式播放第一句话。
- 有声读物、配音和在线学习: 出版商和课程创作者可以使用一致的音色,用多种语言为长篇文本配音。
- 导航:逐向导航可让驾驶员把目光留在道路上。
结合计算机视觉后,TTS 可以朗读周围的物理世界,例如在辅助设备上告诉盲人用户前方有什么。下面的代码会在街景照片上运行 Ultralytics YOLO26目标检测,并通过 gTTS(用于 Google Translate 文本转语音服务的 Python 库)朗读结果:
from collections import Counter
from gtts import gTTS
from ultralytics import YOLO
# Detect objects in a street photo with YOLO26
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Count detections per class and turn them into a sentence
counts = Counter(result.names[int(c)] for c in result.boxes.cls)
sentence = "I can see " + ", ".join(f"{n} {name}" for name, n in counts.items())
# Synthesize the sentence and save it as an MP3 file
gTTS(text=sentence, lang="en").save("detections.mp3")保存的 detections.mp3 会朗读一句话,其中列出每个检测类别及其数量。gTTS 会将文本发送到 Google 的服务器,因此脚本需要联网。
语音质量的衡量#
- 平均意见分(MOS): 听众按 1 到 5 分评价自然度,真人录音代表最高水平。
- 可懂度:语音识别模型会转录合成音频,通过计算转录文本与输入文本之间的词错误率,可以看出词语被错误识别、漏掉或重复的频率。Voicebox 在零样本 TTS 中的词错误率达到 1.9%,而 VALL-E 为 5.9%。
- 说话者相似度: 对于克隆音色,可以通过生成音频和参考音频的说话者嵌入之间的余弦相似度,衡量音色的匹配程度。
- 实时率(RTF): 合成时间除以音频时长。F5-TTS 报告的 RTF 为 0.15,也就是用 1.5 秒生成 10 秒语音。










