TTS 语音合成提供商概览
为什么 TTS 会改变你的国际象棋学习方式
Section titled “为什么 TTS 会改变你的国际象棋学习方式”当你复盘一盘带注释的棋局时,你的眼睛需要同时承担双重任务——既要跟踪棋盘上的棋子,又要阅读旁边的解说。你的视线在棋盘和注释面板之间来回跳动,每一次切换都会让你短暂地丢失对局面的把握。你不得不重新找到棋子的位置、重新推演变化、重新在脑海中构建画面。
文本转语音(TTS)彻底解决了这个问题。
开启 TTS 后,你逐步浏览棋局时,注释会被朗读给你听。你的眼睛可以始终停留在棋盘上。你看着马落在 f3,同时一个声音告诉你为什么这是一步有力的发展着法。你看到兵形的变化,同时解说为你讲解背后的战略构思。棋盘和文字同步呈现,就像一位教练坐在你对面指导你一样。
这在以下场景中尤其强大:
- 开局研究 ——在你观察局面发展的同时,聆听每步棋背后的思路
- 对局复盘 ——逐步浏览你自己带注释的棋局,自然地吸收其中的经验教训
- 残局练习 ——将注意力集中在关键格子上,同时由解说引导你的思路
- 语言沉浸 ——用法语、德语、西班牙语、俄语、日语、中文或韩语学习国际象棋,所有棋术用语都会被正确翻译。你会听到 “Cavalier f3, echec” 而不是 “Knight f3, check”。用你最习惯的语言来学棋。
- 无障碍 ——适合那些觉得听比读更轻松的棋手,或者想在离开书桌时继续学习的人
一旦你尝试过,再回到无声注释会感觉就像在看一部静音的电影。
En Parlant~ 内置了五个 TTS 提供商,从拥有录音棚级音质的云端 API 到完全不需要联网的本地方案,应有尽有。你只需选择其中一个即可开始使用。以下按语音质量从高到低排列。
ElevenLabs
Section titled “ElevenLabs”目前可用的最佳语音质量。ElevenLabs 生成的语音富有表现力、接近真人,带有鲜明的个性——有的声音听起来像有声书的朗读者,有的像新闻播音员。提供数十种独特的声音可供选择。支持 34 种以上的语言,包括出色的 CJK(日语、中文、韩语)发音,以及阿拉伯语、印地语和所有主要欧洲语言。
免费套餐每月提供 10,000 个字符(足够朗读 2-5 盘带注释的棋局)。付费方案起价 $5/月,可使用 30,000 个字符。设置非常简单:创建账户、复制 API 密钥、粘贴到 En Parlant~ 中即可。
需要联网。最适合追求极致语音品质的用户。
Google Cloud TTS
Section titled “Google Cloud TTS”在质量、语言支持和性价比之间取得了最佳平衡。Google 的 WaveNet 神经网络语音在 30 多种语言中都表现得自然清晰——包括 CJK、阿拉伯语、印地语、孟加拉语、菲律宾语、越南语以及所有主要欧洲语言。免费额度非常慷慨——每月一百万个字符,足以覆盖数百盘带注释的棋局。
设置大约需要 5 分钟:创建一个 Google Cloud 账户,启用 Text-to-Speech API,生成 API 密钥。除非你超出免费额度(用国际象棋注释来说几乎不可能),否则不会产生任何费用。
需要联网。最适合大多数用户。
KittenTTS
Section titled “KittenTTS”完全在你的电脑上运行的高质量本地 AI。使用约 25MB 的轻量级神经网络模型,提供 8 种富有表现力的声音(4 种男声、4 种女声)。质量出人意料地好——自然的语调、清晰的发音、真实的表现力。
权衡之处在于硬件要求:KittenTTS 使用 PyTorch 进行 CPU 推理,因此需要一颗现代的多核处理器。在 8 核机器上表现出色;在较旧的笔记本上可能会感到延迟。目前仅支持英语。
每条注释首次朗读时会有短暂的生成延迟(在快速 CPU 上约 1-2 秒,较慢的硬件上更长)。此后音频会缓存在内存中,重放时即时响应——在你已经听过的着法之间前后切换完全没有延迟。你还可以在设置中预先缓存整盘棋局的所有注释,这样在开始学习之前每条注释就都准备好了。
无需联网。无需 API 密钥。本地方案中的最佳质量。
OpenTTS
Section titled “OpenTTS”一个通过 Docker 在你的电脑上运行的开源 TTS 服务器。所有数据都不会离开你的电脑。它捆绑了多个 TTS 引擎(Larynx、Festival、eSpeak、Coqui-TTS),仅英语就提供 75 种以上的声音。
权衡之处在于语音质量:这些是较老的神经网络和基于规则的引擎,因此输出听起来比 ElevenLabs 或 Google 更加机械。最适合欧洲语言(英语、德语、法语、西班牙语、俄语、荷兰语、瑞典语、意大利语等)——不支持 CJK。说实话,如果你已经愿意花精力去设置一个本地模型,KittenTTS 能以更少的麻烦提供更好的质量。除非 OpenTTS 有大量的使用需求,否则我们可能会在未来的版本中将其弃用。
无需联网。无需 API 密钥。最适合追求最大隐私性和丰富声音选择的用户。
系统 TTS
Section titled “系统 TTS”你的操作系统内置的语音合成。无需安装任何东西,无需 API 密钥,无需服务器。选择它就可以直接使用。语音质量比较基础——你会听到操作系统级别 TTS 特有的机械音色——但它可以零设置即时使用。
在 Linux 上通常是 eSpeak 或 speech-dispatcher;在 macOS 上是系统语音;在 Windows 上是 SAPI。语言支持完全取决于你的操作系统安装了哪些语音包。
无需联网。最适合快速测试。
| 提供商 | 类型 | 质量 | 设置 | 语言支持 |
|---|---|---|---|---|
| ElevenLabs | 云端 API | 卓越 | API 密钥 | 34+(含 CJK) |
| Google Cloud | 云端 API | 非常好(WaveNet) | API 密钥 | 30+(含 CJK) |
| KittenTTS | 本地神经网络 AI | 好 | Python + venv | 仅英语 |
| OpenTTS | 本地 Docker | 一般 | Docker | 仅欧洲语言 |
| 系统(OS 原生) | 系统内置 | 基础 | 无需设置 | 取决于操作系统 |
硬件提示: 本地提供商(KittenTTS 和 OpenTTS)在你的 CPU 上运行神经网络推理。它们需要一颗现代多核处理器(建议 8 核以上)才能在无明显延迟的情况下生成语音。你可以把它想象成在你的电脑上多运行了一个棋引擎。如果你的电脑较老或性能较低,请使用云端提供商。
如果你追求最丰富的语音品质,从 ElevenLabs 开始——免费套餐足以让你体验。如果想在质量和免费用量之间取得最佳平衡,Google Cloud 每月可以覆盖数百盘棋局。如果想要高质量的本地 TTS 且不依赖云服务,KittenTTS 是绝佳选择(前提是你有一颗现代 CPU)。如果想零设置快速测试,系统 TTS 可以即时使用。如果追求最大隐私性和丰富的声音选项,OpenTTS 通过 Docker 在本地运行一切。
所有 TTS 设置都在 设置 > 声音 中:
| 设置项 | 功能说明 |
|---|---|
| Text-to-Speech | TTS 功能的总开关 |
| Auto-Narrate on Move | 当你逐步浏览着法时自动朗读注释 |
| TTS Provider | 在五个提供商之间切换 |
| TTS Voice | 特定于提供商的声音选择 |
| TTS Language | 朗读使用的语言——棋术用语会自动翻译 |
| TTS Volume | 朗读音量 |
| TTS Speed | 播放速度(0.5x 到 2x)——调整时无需重新生成音频 |
| ElevenLabs API Key | 你的 ElevenLabs API 密钥(仅在使用 ElevenLabs 时显示) |
| Google Cloud API Key | 你的 Google Cloud API 密钥(仅在使用 Google 时显示) |
| KittenTTS CPU Threads | 推理使用的 CPU 线程数(0 = 自动 / 使用所有核心) |
| TTS Audio Cache | 清除缓存的音频以强制重新生成 |
TTS 朗读支持众多语言,并提供完整翻译的国际象棋词汇。以下是一些示例:
| 语言 | 国际象棋示例 |
|---|---|
| English | Knight f3, check. A strong developing move. |
| Francais | Cavalier f3, echec. Un coup de developpement fort. |
| Espanol | Caballo f3, jaque. Un fuerte movimiento. |
| Deutsch | Springer f3, Schach. Ein starker Entwicklungszug. |
| 日本語 | ナイト f3、チェック。強い展開の手。 |
| Русский | Конь f3, шах. Сильный развивающий ход. |
| 中文 | 马 f3,将军。一步控制中心的强力出子。 |
| 한국어 | 나이트 f3, 체크. 중앙을 지배하는 강력한 전개 수. |
每一个国际象棋术语——棋子名称、“将军”、“将杀”、“王车易位”、“吃”、以及 “妙着” 和 “失误” 等着法评价——都会以所选语言朗读。PGN 文件中的注释会按原文朗读,因此请用你想听到的语言来注释你的棋局。
国际象棋感知的文本预处理
Section titled “国际象棋感知的文本预处理”TTS 引擎不仅仅是朗读原始文本——它理解国际象棋记谱法。在任何文本被朗读之前,预处理步骤会将 PGN 记谱法转换为自然语音:
| PGN 中的写法 | 朗读效果 |
|---|---|
Nf3 | ”Knight f3” |
Bxe6+ | ”Bishop takes e6, check” |
O-O-O | ”castles queenside” |
e8=Q# | ”e8 promotes to Queen, checkmate” |
Rae1 | ”Rook a e1”(消歧义) |
5.Qxd8+(在注释中) | “5, Queen takes d8, check” |
en prise | ”on preez”(法语发音) |
Ra8 is hanging | ”Rook on a8 is hanging” |
R vs R | ”Rook versus Rook” |
6...Bf5(着法编号点) | “6, Bishop f5”(自然停顿,不读 “dot”) |
注释在朗读前会被清理:[%eval]、[%cal]、[%csl] 标签会被移除。与 NAG 符号重复的开头评价词会被删除(因此 ?? {BLUNDER. The rook hangs} 不会出现 “Blunder. Blunder.” 的重复)。
每条朗读在首次生成后都会缓存在内存中。在棋局中前后切换着法时,会直接从缓存中即时重放——无需 API 调用,没有重新生成的延迟。你还可以在后台预先缓存整个棋局树,这样播放时完全没有停顿。
缓存的键值基于 provider:voiceId:lang:text,因此更换声音或提供商会创建单独的缓存条目。更改播放速度不会使缓存失效——速度调整是在客户端对音频元素进行的。
设置中的 Clear Audio Cache 按钮可以让你在编辑注释后强制重新生成。
获得最佳体验的技巧
Section titled “获得最佳体验的技巧”-
使用自动朗读。 开启 “Auto-Narrate on Move”,然后只需用方向键逐步浏览棋局即可。解说会随着你的操作自然地响起,就像有一位教练在你身旁一样。
-
注释你自己的棋局。 TTS 在你聆听你自己棋局的解说时效果尤为突出。先注释你的棋局,然后开启朗读逐步浏览。一边盯着局面,一边听到 “吃掉这个兵看起来很诱人,但你整个王翼还没有发展起来”,这种感觉和单纯阅读文字完全不同。
-
尝试不同的速度。 有些棋手喜欢 1x 的速度用于仔细研究,有些则偏好 1.3x 用于快速复盘。速度滑块可以实时调整播放速度,不会额外消耗 API 字符。
-
使用喇叭图标。 着法列表中每条注释旁都有一个小喇叭图标。点击它即可单独听取该条注释。
-
切换语言来学习国际象棋词汇。 如果你正在用第二语言学习国际象棋,将 TTS 语言设置为相应语言。你会在聆听中自然地学会 “Cavalier”(马)、“echec”(将军)和 “mat”(将杀)等术语。
编写 TTS 友好的注释
Section titled “编写 TTS 友好的注释”遵循以下指南,可以让你的 PGN 注释产生最佳的朗读效果。
注释中的 SAN 记谱
Section titled “注释中的 SAN 记谱”使用标准的 SAN 记谱法。预处理器会自动将其展开:
"After 7.Nf3, White controls e5"会被朗读为 “After 7, Knight f3, White controls e5”"The Bg5 pins the knight"会被朗读为 “The Bishop g5 pins the knight”
NAG 符号(!、??、!? 等)会自动生成对应的口头评价。不要在注释中重复它们:
- 不好的写法:
?? {BLUNDER. A terrible move...}——TTS 会读出 “Blunder. Blunder. A terrible move” - 好的写法:
?? {A terrible move...}——TTS 会读出 “Blunder. A terrible move”
着法编号中的点号
Section titled “着法编号中的点号”使用标准的 PGN 记谱:6...Bf5。预处理器会将点号转换为逗号以产生自然的停顿,而不是读出 “dot dot dot”。
用句号控制节奏
Section titled “用句号控制节奏”句号会在 TTS 中产生自然的停顿。在不同的观点之间使用句号:
{Doubled isolated e-pawns. The f-file is ripped open. The position is strategically won.}[%cal ...] 和 [%csl ...] 标签会在朗读时自动被移除。你可以放心使用它们进行可视化注释,不会影响语音朗读。
关于音频再分发的说明,供基于 En Parlant~ 进行开发的用户参考:
- ElevenLabs ——你保留对所生成音频的所有权利(ElevenLabs Terms of Use,第 c(ii) 节)。你可以自由再分发。
- Google Cloud ——你保留对所生成音频的所有知识产权。没有限制。
- KittenTTS、OpenTTS、系统 TTS ——对所生成音频没有再分发限制。
En Croissant 是一个由 Francisco Salgueiro 创建的开源国际象棋学习工具。Francisco 打造了一款真正出色的作品——一个免费、强大、由社区驱动的国际象棋学习平台——并以 GPL-3.0 许可证发布,让任何人都可以使用、改进和分享。这个 TTS 功能的存在正是得益于他的慷慨。我们对他所奠定的基础深表感激,也很自豪能够为之做出贡献。
TTS 插件由 Red Shed 的 Darrell 开发,并得到了 Claude Code 的协助。五个提供商、多语言支持、多语言翻译的国际象棋词汇、本地 AI 推理、依赖管理——从源码构建,手工测试,用心贡献。
这就是开源的魅力。有人创造了出色的东西,另一个人在此基础上添砖加瓦,最终所有人都从中受益。
我们很想听听 TTS 对你来说使用体验如何。欢迎随时留下评论、建议和反馈。
- 想要我们尚未支持的语言? 请告诉我们——我们可以快速添加新语言。
- 发现了 bug? 告诉我们,我们会尽快修复。
- 有其他 TTS 提供商的想法? 我们很乐意添加。
- 只是想说一声好用? 那也很好,我们很高兴听到。
在 GitHub 上提交 issue,或直接联系 darrell@redshed.ai。