SaySynth: 说话机器的简史
摘要
从机械到神经AI系统的说话机器发展史的详细概述,并介绍了作者基于macOS文本转语音框架的SaySynth项目背景。
暂无内容
查看缓存全文
缓存时间: 2026/06/03 06:37
# SaySynth:说话机器的简史
来源:https://brian.abelson.live/log/2025/12/20/saysynth-composition-codes.html
*这些是我在 2025 年 12 月 21 日于 composition.codes (https://composition.codes/) 所做演讲的扩展笔记。
幻灯片在此 (https://brian.abelson.live/slides/saysynth.html)。
视频在此 (https://www.youtube.com/watch?v=tX3nEPt0fKk)。*
SaySynth (https://gitlab.com/abelsonlive/saysynth) 是我基于 macOS 文本转语音框架——更广为人知的是 **say** 命令——构建的一台合成器。但为了解释我为什么构建它以及我认为它为何重要,我想先绕道回顾一下说话机器更广泛的历史。
## 说话机器的分类
历史上大致存在四种说话机器:
**机械式**——字面意义上的物理装置:风箱迫使空气通过簧片,配合不同的旋钮、阀门和哨子来塑造不同的共振峰和音素。操作者是乐器的一部分。
**共振峰/规则式**——更像一台合成器:一个振荡器和一个梳状滤波器模拟声道共振的形状。系统建模语音的声学特性,而不录制任何实际语音。
**采样式(拼接式)**——从内部装有留声机的粗糙玩具,到复杂的“双音子”合成器,后者拼接所有可能音素转换的录音。GPS 语音和 90 年代及 2000 年代自动客服电话线都是这样构建的。
**生成式(神经/人工智能)**——如今大多数人想到的类型。这些基本上是采样式系统的极致延伸:处理的不是音素对的录音,而是由神经网络逐个预测的单个数字样本。
## 简史
### 冯·肯佩伦的说话机(1773)
人们通常会提到的第一台说话机器。操作者推动空气通过簧片,用手移动一块皮革来模拟声道的形状,同时用单独的哨子处理更嘈杂的辅音(如 S 和 T)。尽管粗糙,但其基本架构——振荡器源,通过模拟声道来塑形——本质上与今天共振峰合成器中的结构相同。
### 约瑟夫·法贝尔的 Euphonia(1845)
法贝尔在冯·肯佩伦的设计基础上迭代出了更复杂的版本:十六个按键,每个产生一个不同的音素。你可以开始看到这些系统中*操作者*的重要性。为了让它看起来不那么吓人,法贝尔在机器前面装上了一张女性面孔,据说有时还会在机械装置前挂一条裙子。我怀疑这产生了适得其反的效果。
### 爱迪生说话玩偶(1890 年代)
这并非传统意义上的说话机器,却是首台拼接式机器:玩偶内部装有微型留声机,播放童谣录音。爱迪生认为将录制的声音嵌入玩具中能帮助人们适应这项技术。保存下来的录音表明他想错了。
### VODER(1939)
在 1939 年世界博览会上展示的 VODER 在其时代确实引人注目——一台单声道合成器,包含振荡器、噪音发生器以及一套实时塑形音素的控制装置,音高由脚踏板控制。我觉得它最有趣的地方在于,它的“令人印象深刻”完全依赖于其操作者——被称为“Voderettes”的女性,她们训练了*数年*才能产生可理解的语音。发明者获得了所有荣誉,而操作者在历史上大多无名。
### MUSA——多声道说话自动机(1978)
MUSA 在意大利开发,是首批实用的双音子合成器之一。他们甚至压制了一张包含结果的黑胶唱片。它使用了所有可能的音素转换的录音(大约 2000 种组合),然后应用数字信号处理使它们平滑连接。这种方法在 90 年代和 2000 年代主导了商业 TTS。
### S.A.M.——软件自动语音(1982)
首款商用语音合成器,适用于 Commodore 64、Atari 和 Apple II。SAM 的特别之处在于它向用户暴露了音高、速度和语调的控制。制造它的公司后来为 Macintosh 的 Macintalk 提供了底层技术——这就是故事变得个人化的地方。
## 两个反复出现的模式
在继续之前,值得注意的是在整个历史中反复出现的两件事。
**说话机器常常通过唱歌来展示。** 从 HAL 9000 在《2001:太空漫游》中唱“Daisy Bell”,到 Siri,唱歌一直是 TTS 的终极概念验证,因为它迫使系统处理音高变化、节奏和表现力。但其中隐含着一个主张:唱歌是人类语言表达的顶峰,一台说话机器如果不能唱歌,就不算是真正的“人类”。
**说话机器编码了产生它们的文化的偏见。** 法贝尔在他的 Euphonia 上放了一张女性面孔以使其看起来不那么吓人。Voderettes 训练多年却被遗忘。如今大多数 AI 助手默认采用女性编码。这并非偶然——它反映了一个一致且令人不安的模式:我们试图通过将机器女性化来使其看起来平易近人,同时让背后的实际人类劳动变得不可见。
## Macintalk 和 **say** 命令
1984 年,苹果推出了基于共振峰的 TTS 系统 Macintalk。在发布时,史蒂夫·乔布斯让 Mac 自我介绍——这个演示在当时引起了集体的狂热,事后看来有点尴尬。
如果你在 90 年代拥有一台苹果电脑,你可能记得玩过像 Bad News、Cellos、Bubbles、Whisper 或 Princess 这样的声音。2001 年,随着 Mac OS X(Cheetah)的发布,苹果为这一功能添加了命令行界面:
``
say -v Fred "I sure like being inside this fancy computer"
``
大多数人不知道的是,**say**(以及底层的语音框架)隐藏着一个低层级的 DSL,用于在音素级别控制韵律。这是它的样子:
``
[[inpt TUNE]]
~
AA {D 120; P 176.9:0 171.4:22 161.7:61}
r {D 60; P 166.7:0}
~
y {D 210; P 161.0:0}
UW {D 70; P 178.5:0}
_
S {D 290; P 173.3:0 178.2:8 184.9:19 222.9:81}
...
[[inpt TEXT]]
``
每个音素可以分配一个持续时间(**D**,以毫秒为单位)和一个音高曲线(**P**,作为频率-位置对)。上面那段大致对应于“are you brushing your teeth?”,将其分解为组成音素,然后以明确的时机和音高重新组合。你可以用它获得令人惊讶的表现力——不是自然的声音,而是以另一种方式富有表现力。
我找不到太多其他人使用这种语法的例子。它记录在苹果开发者档案网站上,现已弃用,从当前 macOS 中移除。(这就是为什么我需要带一台旧 Mac mini 来进行演示。)
## SaySynth
SaySynth 背后的洞察很简单:如果你可以在 **say** DSL 中按音素指定音高,你就可以把它当作合成器来使用。不是试图产生清晰的语音,而是将工具推向它从未被设计用于的方向。
我没有手动编写原始 DSL,而是在其上构建了一个基于 YAML 的音序器。以下是名为“fire”的作品的摘录:
``
name: fire
globals:
start_bpm: 65
rate: 160
stereo: true
tracks:
water:
type: chord
options:
root: F#2
text: wawer
voice: Victoria
chord_notes: [-12, -5, 0, 4, 9, 14]
segment_count: 1/32
randomize_segments: octaves,velocity
volume_range: [0.01, 0.19]
fire:
type: chord
options:
root: F#0
chord_notes: [0, 12]
text: fire!
segment_count: 1/6
randomize_segments: octaves,velocity
volume_range: [0.05, 0.4]
``
每个“和弦”是通过生成多个并行的 **say** 子进程产生的,每个音符一个。由于无法精确同步它们,它们会缓慢地互相漂移入相和出相。系统*未能*完成它应该做的事情,这正是让它听起来有趣的原因——比它应有的样子更有机、更人性化。
我还在(https://gitlab.com/abelsonlive/asclpy)为通过 Ableton 的 Scala(**.ascl**)格式支持替代调律做好了准备,这使得可以使用例如 Wendy Carlos 在*Beauty in the Beast*中的调律而非标准的十二平均律进行演奏。
## 这为什么重要?
> 你现在觉得奇怪、丑陋、不舒服和讨厌的新媒介,总有一天会成为它的标志…… 这是失败的声音:如此多的现代艺术,是事物失控、媒介被推向极限并崩溃的声音。——Brian Eno
科技公司向我们推销的未来版本是 AI 呈指数级改进,直到达到“人性”——奇点。
这个故事忽略的是,人性不是一个固定的目标。资本主义逐渐使人非人化,缩小我们的行为和价值,直到 AI 更容易近似我们已变成的样子。如果你在仓库里训练机器学习模型,或者在呼叫中心运行相同的脚本,你在相关意义上已经像机器一样运作。
说话机器的历史,在一定程度上,是将人类声音的表达范围压缩到可用——可读、可预测、高效——的过程。每一代 TTS 都变得更自然、更不奇怪。**say** 命令的低层级音素 DSL,允许你对音高和时机做真正奇怪的事情,现已弃用。SSML(标准化的现代替代方案)允许你指定*相对*音高,但不能指定实际频率。随着 TTS 在听起来像人方面越来越好,它作为创意工具却越来越无趣。
我认为,与那些本应做某事却失败的工具合作,保护它们自身局限的纹理,具有真正的价值。不是为了怀旧,而是因为那个纹理*就是*关键——因为现在艺术的任务可能是让那些资本主义试图变得不可见和日常的事物变得陌生。
---
*SaySynth 在 GitLab (https://gitlab.com/abelsonlive/saysynth) 上。用它创作的音乐在 Bandcamp (https://abelsonlive.bandcamp.com/album/saysynth) 上。*
相似文章
机器人模仿人类语音
本文讨论了一种能够模仿人类语音的机器人,重点介绍了机器语音合成及交互方面的最新进展。
机器言语的变异
本文通过三个变异——搜索引擎、社交媒体和对话系统——审视算法言语的演变,分析其在机器学习和数字环境中的法律基础与社会影响。
应对合成语音的挑战与机遇
OpenAI 讨论了其语音引擎技术面临的挑战和机遇,强调了安全措施、使用政策以及社会需要提高对合成语音风险的抵御能力。该公司目前仅进行小范围预览,尚未广泛发布该技术,同时倡导改进语音认证并提高公众对人工智能能力的认识。
Speak 通过 AI 实现个性化语言学习
Speak 是一款由 AI 驱动的语言学习应用,通过先进的语音识别和自然 AI 辅导功能实现教育个性化。CEO Connor Zwick 讨论了深度学习突破和 OpenAI 实时 API 如何能够实现更复杂的口音识别和多模态理解,以帮助流畅度训练。
@LinusEkenstam:这是改变生活的科技。我们需要更少的炒作,更多这样的东西。想象一下这能帮助多少人
Bland 发布 Speech v3,声称它是世界上第一个人类语音引擎,并且在 Design Arena 的音频真实感基准测试中名列前茅,超越了 ElevenLabs、Grok、Cartesia 和 OpenAI。