TTS 科普:机器是怎么学会说话的
从两百多年前的“说话机器”到今天的大模型语音,顺便搞懂为什么有些模型读单个单词不够自然
TTS 已经能生成很自然的朗读,但读好一句话,不等于读好词典里的一个词。理解它怎样生成发音、语调和节奏,才能看懂不同模型的能力与局限。
🎯 为什么要聊 TTS
TTS(Text-to-Speech,语音合成)就是把文字变成声音。导航、读屏软件、有声书、AI 助手,背后都是它。
在语言学习场景里,有些 TTS 模型会出现这样的差异:
| 场景 | 可能遇到的表现 |
|---|---|
| 读整句话 | 语调和节奏比较自然 |
| 读单个单词 | 发音能听懂,语调却显得机械 |
| 调慢语速 | 没有更清楚,反而更不自然 |
为什么同一个模型读句子和读单词,表现可能差这么多?要回答这个问题,得先了解 TTS 是怎么一路走过来的,以及它到底是怎么工作的。
🏛️ 从说话机器到大模型:TTS 简史
时间线
| 时间 | 事件 | 当时的水平 |
|---|---|---|
| 1780 / 1781 | 圣彼得堡科学院悬赏“怎样用仪器发出 a、e、i、o、u”,Kratzenstein 用五根共鸣管获奖,次年发表 | 能发出元音 |
| 1791 | von Kempelen 发表他研究了二十多年的“说话机器”:风箱当肺、簧片当声带,操作者用手塑造“嘴型” | 能说出单词和短句 |
| 1939 | 贝尔实验室的 Voder 在纽约世博会展出:第一台电子语音合成器,像弹风琴一样用琴键、腕杆和脚踏板操作,操作员要训练大约一年 | 勉强能听懂 |
| 1961 | 贝尔实验室用 IBM 704 让电脑唱了《Daisy Bell》。科幻作家克拉克参观时听到,后来写进了《2001 太空漫游》里 HAL 被关机时唱歌的那一幕 | 电脑第一次唱歌 |
| 1968 | 日本电子技术综合研究所的梅田(Umeda)等人做出第一个英语 TTS 系统 | 真正意义上的“输入文字、输出语音” |
| 1976–1978 | Kurzweil 盲人阅读机(扫描印刷品后读出来);德州仪器的 Speak & Spell 学习机,靠一颗专用语音芯片 | 进入实用和消费品 |
| 1984 | DECtalk 上市,基于 MIT Dennis Klatt 的共振峰合成。它的默认声音 “Perfect Paul” 就是照着 Klatt 本人的声音做的 | 清晰可懂,但一听就是机器 |
| 1996 | 拼接式成熟:从大量真人录音里挑选最合适的片段拼起来(单元选择,Hunt & Black);同年爱丁堡大学的开源系统 Festival 诞生 | 单句很真,接缝处生硬 |
| 1999–2000s | 统计参数式:用 HMM 统一预测频谱、音高和时长(HTS 工具包 2002 年发布) | 更灵活,但有“电音” |
| 2016.9 | DeepMind 发布 WaveNet:用神经网络直接生成波形,盲听测试中把与真人的差距缩小了一半以上;2017 年 10 月上线 Google Assistant | 质的飞跃 |
| 2017.12 | Google 发布 Tacotron 2:听感评分(MOS)4.53,专业录音是 4.58 | 朗读腔第一次接近真人 |
| 2019–2021 | FastSpeech、HiFi-GAN、VITS 等:更快、更稳定,开始大规模商用 | 手机助手、有声书普及 |
| 2023 | 微软 VALL-E:把语音切成 token,像语言模型写字一样生成语音,3 秒录音就能模仿一个人的声音;ElevenLabs 公测;StyleTTS 2 发布 | 音色克隆、情感表达 |
| 2024 | 字节 Seed-TTS 宣称“几乎和真人无法区分”;阿里 CosyVoice 发布;12 月底开源的 Kokoro 发布 | 很多句子已经难分真假 |
几个有意思的细节:
- 1968 年以前的“说话机器”都不算 TTS。 Kratzenstein 的共鸣管、Kempelen 的机器、Voder,都要靠人来“演奏”,没有一台是输入文字的。
- 霍金的声音不是 DECtalk。 他 1985 年因病失去说话能力后试过 DECtalk,最后选了 Speech Plus 公司的合成器,算法和 DECtalk 同出 Klatt 一脉,所以听着很像。后来厂商给他升级到新版,他嫌声音不对,又换回了旧芯片,因为那个声音已经成了“他的声音”。
- 商用产品换技术很慢。 苹果的 Siri 直到 iOS 9 还在用拼接式,iOS 10 才改成深度学习辅助的混合方案(Apple 机器学习博客)。
“表现不错”从什么时候开始?
要看你说的“不错”是哪一档:
能听懂 像真人朗读 自然、有感情、能对话
│ │ │
1984 DECtalk ───── 2017 Tacotron 2 / WaveNet ──── 2023 起的语言模型式 TTS
(机器腔) (大多数人公认的分水岭) (今天排行榜前列的那一批)
还要提醒一句:WaveNet 的“缩小一半”、Tacotron 2 的“4.53 对 4.58”、StyleTTS 2 的“超过真人录音”,都是在很窄的测试上得出的:单个说话人、朗读腔、固定领域。它们不代表 TTS 在所有场景下都达到了真人水平。
🧠 TTS 是怎么把文字变成声音的
可以把典型的神经 TTS 理解成一条“逐级预测”的流水线。下面是便于理解的功能拆解,实际模型可能把多个步骤合并,也不一定显式生成音素或频谱:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ ① 文本规范化 │ → │ ② 文字转音素 │ → │ ③ 韵律预测 │ → │ ④ 声学模型 + │
│ │ │ (G2P) │ │ 时长/音高/能量 │ │ 声码器 │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
£15.50 → schedule → 每个音素读多长、 频谱 → 波形
fifteen pounds 美 /ˈskɛdʒuːl/ 音调怎么走、 (最终的声音)
and fifty pence 英 /ˈʃɛdjuːl/ 哪里停顿
① 文本规范化:先把“写法”变成“读法”
数字、符号、缩写要先转换成能读出来的词。例如,£15.50 可以展开为 “fifteen pounds and fifty pence”,30th 可以展开为 “thirtieth”。这一步错了,后面再好也没用。价格、日期、电话号码,都卡在这一步。
② 文字转音素(G2P):决定“读哪些音”
G2P(Grapheme-to-Phoneme)把字母转成音标。英美差异就在这里体现,比如 schedule:美音 /ˈskɛdʒuːl/,英音 /ˈʃɛdjuːl/。
麻烦的是同形异音词,比如 read(现在时 /riːd/、过去时 /rɛd/)、record(名词和动词重音不同)。单独一个词没有上下文,G2P 只能猜。
③ 韵律预测:决定“像不像人”
知道读哪些音还不够,还要决定每个音读多长、音调怎么起伏、哪里停顿。这部分叫韵律(prosody),是自然不自然的关键。
现代模型的韵律是从大量真人语音里学出来的,而训练数据绝大多数是整句话。记住这一点,后面两个问题都和它有关。
④ 声学模型 + 声码器:生成波形
声学模型把音素和韵律变成频谱,声码器(vocoder)再把频谱变成你听到的波形。WaveNet、HiFi-GAN 就是有名的声码器。
四类技术路线
按原理粗略分,TTS 大致走过四条路线。这是为了好讲做的简化,不是业界的正式分代:
| 路线 | 代表 | 原理 | 特点 |
|---|---|---|---|
| 共振峰 / 规则式 | DECtalk、霍金的合成器 | 用声学规则模拟声道 | 清楚、小巧,但机器腔明显 |
| 拼接式 / 统计参数式 | 早期 Siri、导航语音、HTS | 拼接真人录音片段,或用统计模型预测参数 | 单句挺真,接缝或“电音”明显 |
| 神经网络 | WaveNet、Tacotron 2、FastSpeech、VITS、StyleTTS 2 | 用神经网络预测频谱和时长,再生成波形 | 自然度大幅提升 |
| 语言模型式 | VALL-E、Seed-TTS、CosyVoice | 把语音切成 token,像 LLM 写字一样“写”出语音 | 表现力最强,模型也大得多 |
Kokoro 属于第三类。 它基于 StyleTTS 2:先预测每个音素读多长,再合成声音。它只有 8200 万参数,训练总共用了约 1000 个 A100 GPU 小时(模型卡)。发布时它在社区的 TTS Spaces Arena 上排第一,在主榜 TTS Arena 上排第 6–7 名,排在几家商用产品之后,但领先其他开源模型。
小、快、免费、能离线,代价是上限有限。很多商用产品(比如 ElevenLabs、豆包)没有公开内部架构,所以表里没有给它们归类。
🔍 为什么有些模型读单个单词像机器
原因一:模型是“读句子”长大的
韵律模型从整句话里学会“一句话怎么起、怎么收”。给它一个孤零零的单词,它缺少上下文,只能套一个“很短的句子”的模板。
Kokoro 的作者在 VOICES.md 里写得很直白:
- 大多数音色在 100–200 个 token 的“舒适区”表现最好;
- 短输入是弱项,尤其是少于 10–20 个 token 时,原因可能是训练数据里短句太少,或者是模型架构本身;
- 建议把短输入拼在一起再合成。
单个单词通常很短,容易落在这类模型不擅长的输入长度范围内。
原因二:词典腔是一种特殊读法
真人录词典音时,用的是“引用式”读法(citation form):一个词单独、清晰、完整地读出来,语调平稳下降。配音演员知道自己在录词典,TTS 不知道。
所以 Duolingo 训练角色声音时,要在录音脚本里专门放进感叹词和单个单词,还请专家给系统提示、人工修正(Duolingo,2021)。
原因三:短音频本身就难
不只是 Kokoro:Dia 提到不到 5 秒的音频会不自然;Amazon Polly 的生成式音色有一个防止“胡说”的急停机制,可能把一个词截掉一半(AWS 文档)。
🔍 为什么放慢反而更假
直觉上,读慢一点应该更清楚。但真人慢读和统一缩放音素时长,并不是一回事:
真人慢读: I'd like to ── 停顿 ── change my booking ── 停顿 ── to Thursday
多停顿;重读音节拉长;弱读的 to / my 照样弱读
统一拉长: I' d l i k e t o c h a n g e m y b o o k i n g ...
所有音素按同一个比例拉长,连该弱读的也一起拉长
Kokoro 的 speed 参数就是这么实现的:把预测出的每个音素时长统一除以同一个数(源码),等于把整句话均匀“拉面”。
研究也支持这个直觉:
| 研究 | 发现 |
|---|---|
| Tånnander & Edlund 2021 | 128 人听测,各种人工放慢的版本都比不上真人慢读;关键在说话和停顿的比例 |
| Novak 2019 | 让 ESL 学习者自己调速,平均只慢了 11–13%,理解成绩没有提高 |
| Anderson-Hsieh & Dauer 1997 | 观点文章:慢速版之后一定要接一遍正常语速 |
这些研究提示,帮助学习者听清楚时,除了调速,还需要关注停顿和意群划分。慢速版也不能替代正常语速下的连读与弱读。
🏛️ 怎么评价 TTS 好不好
打分方法
| 方法 | 怎么做 | 用在哪里 |
|---|---|---|
| MOS | 每段音频单独打 1–5 分(5 很好、1 很差),取平均。来自电信标准 ITU-T P.800 | 论文里最常见 |
| CMOS | 两段音频成对比较,第二段比第一段好多少,从 −3 到 +3 | 两个系统很接近时更灵敏 |
| 盲听竞技场 | 两段音频隐去名字让人选更喜欢哪个,再算出 Elo 分,和下棋排名一个道理 | 业界排行榜 |
注意:MOS 是相对于每一次测试的听众和对照组而言的,不同论文的 MOS 不能直接比。“MOS 4.5 就接近真人”这种说法要打个问号。
排行榜能看什么、不能看什么
Artificial Analysis 提供 TTS 评测。按它的方法说明,其中的 Arena 盲听偏好测试:
- 评审主要是付费招募、筛选过的英美英语母语者;
- 两段音频隐去名字、随机顺序、必须二选一;
- 每个模型最多用 8 个自家音色(美音、英音的男女各 2 个);
- 收录哪些模型由平台按“行业影响力和竞争力”挑选。
Arena 的名次和 Elo 分会随模型、音色及投票变化,具体数字以当前榜单为准。
| Arena 偏好分能帮助判断 | 单凭偏好分不能确定 |
|---|---|
| 听众更喜欢哪段语音 | 单个单词是否读准 |
| 候选模型在测试语料中的相对表现 | 数字、日期和同形异音词是否读对 |
| 哪些模型值得进一步试听 | 目标口音是否符合某个学习任务 |
| 价格、调用限制及部署条件 |
平台还提供 Pronunciation Robustness(发音鲁棒性) 专项,覆盖同形异音词、数字、日期和术语等。因此要区分“更受听众喜欢”和“读得准确”:Arena 偏好分本身不能替代发音专项测试。
榜首能代表所有场景吗?
榜单可以用来初筛,但具体场景仍需分别评价:句子朗读关注自然度和节奏,词典发音还要检查重音、同形异音词和目标口音。某个模型的整句听感排名靠前,并不说明它在这些方面都同样出色。
合成语音能用来学习吗?
能。ETS 对 653 名考生做过对照:同一套听力题分别用真人和合成语音录制,考生成绩“非常接近”(ETS 2022)。Duolingo 也是在 A/B 测试里发现 Amazon Polly 胜过原来的方案,到 2017 年 5 月已在大多数语言里用上了它(AWS 博客)。
🧠 熟悉的口音为什么可能更容易听懂
听着舒服、容易听懂和发音准确,是三个不同的问题。母语背景可能影响听众对口音的理解。语言学里有个概念叫中介语可懂度优势(interlanguage speech intelligibility benefit)。Bent & Bradlow 在 2003 年发现:对非母语听众来说,一位英语熟练、和自己母语相同的非母语者,说英语和英语母语者一样容易听懂(JASA 2003)。
不过这个结论有前提:原研究只有 5 位说话人,说话人英语水平低时就没有这个效果。后续研究发现,效果取决于任务、熟练度和母语组合,有的研究甚至没测到(Hayes-Harb 等 2008、Stibbard & Lee 2006)。所以更准确的说法是“在某些条件下”。
这类研究讨论的是真人语音,不能直接证明某种合成音色更适合学习。熟悉的口音可能让人更容易理解,但是否适合作为发音示范,还需要单独检查发音、重音和目标口音。
🏛️ 业界是怎么做的
| 产品 | 单词发音 | 句子/长文发音 |
|---|---|---|
| 牛津、剑桥、朗文词典 | 专业配音员录制,英美各一条(Oxford) | 朗文的例句也配了录音 |
| Duolingo | 角色声音先录真人、再训练定制 TTS,脚本里专门放单词 | TTS |
| DuoRadio | — | LLM 写稿 → LLM 审稿打分 → TTS 配音,从 300 集扩到 1.5 万集以上,成本降了 99%(Duolingo,2025) |
| Readlang | 服务端用 Azure 神经 TTS | 同左,保证各设备听到的一样(Readlang,2026) |
| Anki 社区词库 | 先用词典真人录音,缺的用 Wiktionary 补 | 例句用在线 TTS |
这些案例说明,单词发音和句子、长文朗读是不同的任务。真人录音、定制 TTS 和通用 TTS 各有适用场景,不能只用一个自然度分数概括。
想要免费的真人单词录音,可以看 Lingua Libre:志愿者录制,英语有 11 万多条,CC BY-SA 4.0 许可,要署名并按同样协议共享。但不是每个词都有。
⚠️ 常见坑
| 坑 | 现象 | 解决 |
|---|---|---|
| espeak 数据路径太长 | Kokoro 报错找不到 phontab,指向一个不存在的编译机路径 | espeak-ng 对数据目录路径长度有限制,把数据目录复制到短路径即可;用符号链接不行,因为路径会被解析回原位置 |
| 首次运行自动装 spaCy 模型 | 提示找不到虚拟环境 | 提前手动装好 en_core_web_sm |
| 均匀放慢 | 可能破坏原有节奏 | 同时关注停顿和意群划分,并对照正常语速 |
| 同形异音词 | read、record 读错 | 用能指定音标的引擎,比如 Azure 的 <phoneme>、Google Chirp 3 HD 的 IPA 自定义读音(预览功能) |
| 每次生成不一样 | 同一个词两次读得不同 | Azure 的 HD 音色每次输出略有差异,做词典音频宜用标准神经音色,或调低随机性参数 |
📝 总结
| 问题 | 答案 |
|---|---|
| TTS 有多久的历史 | 机械说话机器有两百多年,电子合成始于 1939 年,真正的 TTS 始于 1968 年 |
| 什么时候开始好用 | 1984 年能听懂,2017 年像真人朗读,2023 年起自然、有感情 |
| 怎么工作 | 文本规范化 → 文字转音素 → 韵律预测 → 声学模型 + 声码器,像不像人主要取决于韵律 |
| 为什么有些模型读单词像机器 | 单个词缺少上下文;词典腔是一种特殊读法;短输入可能不符合模型的训练分布 |
| 为什么放慢可能更假 | 统一拉长音素时长,不能复现真人慢读时对停顿和重音的调整 |
| 怎么评价 | MOS、CMOS 和盲听竞技场衡量听感;发音准确度还需要专项测试 |
| 如何理解适用场景 | 发音准确度、自然度和可懂度要分开评价,整句表现不能替代单词发音检查 |
相关链接:
- Kokoro:模型主页 · 在线试听 · 音色列表与评分 · 代码
- Artificial Analysis TTS 排行榜 · 评测方法
- 历史:Klatt 1987,英语 TTS 综述 · WaveNet · Tacotron 2 · VALL-E · Seed-TTS