跳转到内容

TTS 语音合成提供商概览

为什么 TTS 会改变你的国际象棋学习方式

Section titled “为什么 TTS 会改变你的国际象棋学习方式”

当你复盘一盘带注释的棋局时,你的眼睛需要同时承担双重任务——既要跟踪棋盘上的棋子,要阅读旁边的解说。你的视线在棋盘和注释面板之间来回跳动,每一次切换都会让你短暂地丢失对局面的把握。你不得不重新找到棋子的位置、重新推演变化、重新在脑海中构建画面。

文本转语音(TTS)彻底解决了这个问题。

开启 TTS 后,你逐步浏览棋局时,注释会被朗读给你听。你的眼睛可以始终停留在棋盘上。你看着马落在 f3,同时一个声音告诉你为什么这是一步有力的发展着法。你看到兵形的变化,同时解说为你讲解背后的战略构思。棋盘和文字同步呈现,就像一位教练坐在你对面指导你一样。

这在以下场景中尤其强大:

  • 开局研究 ——在你观察局面发展的同时,聆听每步棋背后的思路
  • 对局复盘 ——逐步浏览你自己带注释的棋局,自然地吸收其中的经验教训
  • 残局练习 ——将注意力集中在关键格子上,同时由解说引导你的思路
  • 语言沉浸 ——用法语、德语、西班牙语、俄语、日语、中文或韩语学习国际象棋,所有棋术用语都会被正确翻译。你会听到 “Cavalier f3, echec” 而不是 “Knight f3, check”。用你最习惯的语言来学棋。
  • 无障碍 ——适合那些觉得听比读更轻松的棋手,或者想在离开书桌时继续学习的人

一旦你尝试过,再回到无声注释会感觉就像在看一部静音的电影。

En Parlant~ 内置了五个 TTS 提供商,从拥有录音棚级音质的云端 API 到完全不需要联网的本地方案,应有尽有。你只需选择其中一个即可开始使用。以下按语音质量从高到低排列。

目前可用的最佳语音质量。ElevenLabs 生成的语音富有表现力、接近真人,带有鲜明的个性——有的声音听起来像有声书的朗读者,有的像新闻播音员。提供数十种独特的声音可供选择。支持 34 种以上的语言,包括出色的 CJK(日语、中文、韩语)发音,以及阿拉伯语、印地语和所有主要欧洲语言。

免费套餐每月提供 10,000 个字符(足够朗读 2-5 盘带注释的棋局)。付费方案起价 $5/月,可使用 30,000 个字符。设置非常简单:创建账户、复制 API 密钥、粘贴到 En Parlant~ 中即可。

需要联网。最适合追求极致语音品质的用户。

ElevenLabs 设置指南

在质量、语言支持和性价比之间取得了最佳平衡。Google 的 WaveNet 神经网络语音在 30 多种语言中都表现得自然清晰——包括 CJK、阿拉伯语、印地语、孟加拉语、菲律宾语、越南语以及所有主要欧洲语言。免费额度非常慷慨——每月一百万个字符,足以覆盖数百盘带注释的棋局。

设置大约需要 5 分钟:创建一个 Google Cloud 账户,启用 Text-to-Speech API,生成 API 密钥。除非你超出免费额度(用国际象棋注释来说几乎不可能),否则不会产生任何费用。

需要联网。最适合大多数用户。

Google Cloud 设置指南

完全在你的电脑上运行的高质量本地 AI。使用约 25MB 的轻量级神经网络模型,提供 8 种富有表现力的声音(4 种男声、4 种女声)。质量出人意料地好——自然的语调、清晰的发音、真实的表现力。

权衡之处在于硬件要求:KittenTTS 使用 PyTorch 进行 CPU 推理,因此需要一颗现代的多核处理器。在 8 核机器上表现出色;在较旧的笔记本上可能会感到延迟。目前仅支持英语。

每条注释首次朗读时会有短暂的生成延迟(在快速 CPU 上约 1-2 秒,较慢的硬件上更长)。此后音频会缓存在内存中,重放时即时响应——在你已经听过的着法之间前后切换完全没有延迟。你还可以在设置中预先缓存整盘棋局的所有注释,这样在开始学习之前每条注释就都准备好了。

无需联网。无需 API 密钥。本地方案中的最佳质量。

KittenTTS 设置指南

一个通过 Docker 在你的电脑上运行的开源 TTS 服务器。所有数据都不会离开你的电脑。它捆绑了多个 TTS 引擎(Larynx、Festival、eSpeak、Coqui-TTS),仅英语就提供 75 种以上的声音。

权衡之处在于语音质量:这些是较老的神经网络和基于规则的引擎,因此输出听起来比 ElevenLabs 或 Google 更加机械。最适合欧洲语言(英语、德语、法语、西班牙语、俄语、荷兰语、瑞典语、意大利语等)——不支持 CJK。说实话,如果你已经愿意花精力去设置一个本地模型,KittenTTS 能以更少的麻烦提供更好的质量。除非 OpenTTS 有大量的使用需求,否则我们可能会在未来的版本中将其弃用。

无需联网。无需 API 密钥。最适合追求最大隐私性和丰富声音选择的用户。

OpenTTS 设置指南

你的操作系统内置的语音合成。无需安装任何东西,无需 API 密钥,无需服务器。选择它就可以直接使用。语音质量比较基础——你会听到操作系统级别 TTS 特有的机械音色——但它可以零设置即时使用。

在 Linux 上通常是 eSpeak 或 speech-dispatcher;在 macOS 上是系统语音;在 Windows 上是 SAPI。语言支持完全取决于你的操作系统安装了哪些语音包。

无需联网。最适合快速测试。

系统 TTS 设置指南

提供商类型质量设置语言支持
ElevenLabs云端 API卓越API 密钥34+(含 CJK)
Google Cloud云端 API非常好(WaveNet)API 密钥30+(含 CJK)
KittenTTS本地神经网络 AIPython + venv仅英语
OpenTTS本地 Docker一般Docker仅欧洲语言
系统(OS 原生)系统内置基础无需设置取决于操作系统

硬件提示: 本地提供商(KittenTTS 和 OpenTTS)在你的 CPU 上运行神经网络推理。它们需要一颗现代多核处理器(建议 8 核以上)才能在无明显延迟的情况下生成语音。你可以把它想象成在你的电脑上多运行了一个棋引擎。如果你的电脑较老或性能较低,请使用云端提供商。

如果你追求最丰富的语音品质,从 ElevenLabs 开始——免费套餐足以让你体验。如果想在质量和免费用量之间取得最佳平衡,Google Cloud 每月可以覆盖数百盘棋局。如果想要高质量的本地 TTS 且不依赖云服务,KittenTTS 是绝佳选择(前提是你有一颗现代 CPU)。如果想零设置快速测试,系统 TTS 可以即时使用。如果追求最大隐私性和丰富的声音选项,OpenTTS 通过 Docker 在本地运行一切。

所有 TTS 设置都在 设置 > 声音 中:

设置项功能说明
Text-to-SpeechTTS 功能的总开关
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 朗读支持众多语言,并提供完整翻译的国际象棋词汇。以下是一些示例:

语言国际象棋示例
EnglishKnight f3, check. A strong developing move.
FrancaisCavalier f3, echec. Un coup de developpement fort.
EspanolCaballo f3, jaque. Un fuerte movimiento.
DeutschSpringer f3, Schach. Ein starker Entwicklungszug.
日本語ナイト f3、チェック。強い展開の手。
РусскийКонь f3, шах. Сильный развивающий ход.
中文马 f3,将军。一步控制中心的强力出子。
한국어나이트 f3, 체크. 중앙을 지배하는 강력한 전개 수.

每一个国际象棋术语——棋子名称、“将军”、“将杀”、“王车易位”、“吃”、以及 “妙着” 和 “失误” 等着法评价——都会以所选语言朗读。PGN 文件中的注释会按原文朗读,因此请用你想听到的语言来注释你的棋局。

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 按钮可以让你在编辑注释后强制重新生成。

  • 使用自动朗读。 开启 “Auto-Narrate on Move”,然后只需用方向键逐步浏览棋局即可。解说会随着你的操作自然地响起,就像有一位教练在你身旁一样。

  • 注释你自己的棋局。 TTS 在你聆听你自己棋局的解说时效果尤为突出。先注释你的棋局,然后开启朗读逐步浏览。一边盯着局面,一边听到 “吃掉这个兵看起来很诱人,但你整个王翼还没有发展起来”,这种感觉和单纯阅读文字完全不同。

  • 尝试不同的速度。 有些棋手喜欢 1x 的速度用于仔细研究,有些则偏好 1.3x 用于快速复盘。速度滑块可以实时调整播放速度,不会额外消耗 API 字符。

  • 使用喇叭图标。 着法列表中每条注释旁都有一个小喇叭图标。点击它即可单独听取该条注释。

  • 切换语言来学习国际象棋词汇。 如果你正在用第二语言学习国际象棋,将 TTS 语言设置为相应语言。你会在聆听中自然地学会 “Cavalier”(马)、“echec”(将军)和 “mat”(将杀)等术语。

遵循以下指南,可以让你的 PGN 注释产生最佳的朗读效果。

使用标准的 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”

使用标准的 PGN 记谱:6...Bf5。预处理器会将点号转换为逗号以产生自然的停顿,而不是读出 “dot dot dot”。

句号会在 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