TTS 科普:机器是怎么学会说话的

从两百多年前的“说话机器”到今天的大模型语音,顺便搞懂为什么有些模型读单个单词不够自然

October 25, 2026·7 min read·Yimin
#TTS#语音合成#AI#Kokoro#语言学习

TTS 已经能生成很自然的朗读,但读好一句话,不等于读好词典里的一个词。理解它怎样生成发音、语调和节奏,才能看懂不同模型的能力与局限。

🎯 为什么要聊 TTS

TTS(Text-to-Speech,语音合成)就是把文字变成声音。导航、读屏软件、有声书、AI 助手,背后都是它。

在语言学习场景里,有些 TTS 模型会出现这样的差异:

场景可能遇到的表现
读整句话语调和节奏比较自然
读单个单词发音能听懂,语调却显得机械
调慢语速没有更清楚,反而更不自然

为什么同一个模型读句子和读单词,表现可能差这么多?要回答这个问题,得先了解 TTS 是怎么一路走过来的,以及它到底是怎么工作的。


🏛️ 从说话机器到大模型:TTS 简史

时间线

时间事件当时的水平
1780 / 1781圣彼得堡科学院悬赏“怎样用仪器发出 a、e、i、o、u”,Kratzenstein 用五根共鸣管获奖,次年发表能发出元音
1791von Kempelen 发表他研究了二十多年的“说话机器”:风箱当肺、簧片当声带,操作者用手塑造“嘴型”能说出单词和短句
1939贝尔实验室的 Voder 在纽约世博会展出:第一台电子语音合成器,像弹风琴一样用琴键、腕杆和脚踏板操作,操作员要训练大约一年勉强能听懂
1961贝尔实验室用 IBM 704 让电脑唱了《Daisy Bell》。科幻作家克拉克参观时听到,后来写进了《2001 太空漫游》里 HAL 被关机时唱歌的那一幕电脑第一次唱歌
1968日本电子技术综合研究所的梅田(Umeda)等人做出第一个英语 TTS 系统真正意义上的“输入文字、输出语音”
1976–1978Kurzweil 盲人阅读机(扫描印刷品后读出来);德州仪器的 Speak & Spell 学习机,靠一颗专用语音芯片进入实用和消费品
1984DECtalk 上市,基于 MIT Dennis Klatt 的共振峰合成。它的默认声音 “Perfect Paul” 就是照着 Klatt 本人的声音做的清晰可懂,但一听就是机器
1996拼接式成熟:从大量真人录音里挑选最合适的片段拼起来(单元选择,Hunt & Black);同年爱丁堡大学的开源系统 Festival 诞生单句很真,接缝处生硬
1999–2000s统计参数式:用 HMM 统一预测频谱、音高和时长(HTS 工具包 2002 年发布)更灵活,但有“电音”
2016.9DeepMind 发布 WaveNet:用神经网络直接生成波形,盲听测试中把与真人的差距缩小了一半以上;2017 年 10 月上线 Google Assistant质的飞跃
2017.12Google 发布 Tacotron 2:听感评分(MOS)4.53,专业录音是 4.58朗读腔第一次接近真人
2019–2021FastSpeech、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 2021128 人听测,各种人工放慢的版本都比不上真人慢读;关键在说话和停顿的比例
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 和盲听竞技场衡量听感;发音准确度还需要专项测试
如何理解适用场景发音准确度、自然度和可懂度要分开评价,整句表现不能替代单词发音检查

相关链接: