文字转语音(TTS),免费
神经网络语音(Kokoro)和浏览器语音 · 一切都在您的浏览器本地运行。
关于此工具
神经网络语音(Kokoro AI)使用一个拥有 8200 万参数的先进语音合成模型。它通过 WebAssembly 和 ONNX Runtime 100% 在您的浏览器中运行 · 不会向服务器发送任何文字。首次使用时,模型(约 100 MB)会被下载并由您的浏览器缓存。之后会即时加载。提供 13 种美式和英式口音的语音,包括男声和女声,每种都具有自然的语调和韵律。生成的音频可以播放并下载为 WAV 格式。
浏览器语音使用系统内置的 Web Speech API。它们是即时的、无需下载,但语音质量和可用性取决于您的操作系统和浏览器。Chrome 通常提供最广泛的选择。适合快速预览和无障碍测试。
Web Speech API 的工作原理
浏览器暴露了一个 SpeechSynthesis 接口(Web Speech API的一部分,最初由W3C语音API社区组起草),该接口接受文本和所选语音,并通过底层操作系统的TTS引擎产生可听语音。完整的API接口虽小但功能强大:speechSynthesis.speak(utterance) 开始语音,cancel() / pause() / resume() 控制播放,getVoices() 列出OS暴露的所有语音。每个 SpeechSynthesisUtterance 携带文本、语言标签、语音、语速、音调和音量。
音频本身由OS而非浏览器生成。macOS和iOS内置了数十种高质量语音。Windows通过「设置 → 时间和语言 → 语音」安装的语音来提供服务。Android使用Google的文字转语音引擎(或Samsung TTS等替代方案)。Linux默认使用发行版提供的speech-dispatcher / espeak配置,除非安装了更丰富的引擎,否则通常听起来像机器人。
云端与本地的隐私区别
并非每个「浏览器」语音都在您的设备上运行。部分浏览器将文字发送到远程服务器以渲染高质量语音的音频,然后将结果流式传回。这对隐私有影响:
- Safari(macOS / iOS):合成完全在设备上运行。Apple的语音(包括Siri风格的自然语音)内置于OS中。文字不会离开设备。
- Chrome(桌面和Android):对于部分标注为「Google」的语音,文字会发送到Google的TTS服务进行音频渲染。其他与本地OS语音对应的Chrome语音则留在设备上。
SpeechSynthesisVoice.localService属性会告诉您哪个是哪个(true表示设备本地,false表示云端)。 - Microsoft Edge:类似模式。Edge的高质量「Online Natural」语音将文字路由到微软的云端TTS;标准OS语音则为本地。
- Firefox:Web Speech API支持历来有限;在可用的系统上,它使用OS引擎。
如果您的文字较敏感(机密文件草稿、公司内部备忘录、任何您不希望复制给第三方的内容),请选择标注为本地的语音。如果下拉菜单中没有本地语音,请安装OS语音包,它们会出现在那里。
常见使用场景
- 无障碍辅助。屏幕阅读器(VoiceOver、NVDA、JAWS、TalkBack)为盲人和低视力用户承担了主要工作,但快速的TTS工具可帮助任何人(阅读障碍、眼睛疲劳、疲惫)偶尔让文字朗读出来。
- 校对审阅。听到自己的文字被朗读出来,能捕捉到默读时容易忽略的尴尬句子、缺失词语和节奏问题。这是专业作家的常用技巧。
- 语言学习发音练习。听取目标语言中单词的发音;在阅读外语文章且不确定某词发音时很有帮助。
- 做家务时朗读文章。做饭、打扫、锻炼、通勤,任何不方便阅读但可以收听的场合。
- 配音草稿。快速模拟旁白以测试节奏,然后再录制真人配音或委托ElevenLabs等付费TTS服务。
- 教育用途。为课堂内容、词汇训练、听写练习以及多元学习者的无障碍需求生成语音材料。
需要了解的特性和限制
- Chrome的长文本截断问题。Chromium的一个长期bug(679437)会使
speak()在大约15秒后停止,通常在200-250个字符左右。解决方案是将文字分成句子长度的片段,并为每个片段调用speak()。 voiceschanged事件。Chrome上对speechSynthesis.getVoices()的首次调用返回空数组。语音列表是异步填充的;页面需要在显示语音列表之前监听voiceschanged事件。- 用户手势要求。与自动播放带音频类似,浏览器会阻止语音合成,直到用户点击或触碰某些内容。「朗读」按钮满足该手势要求;页面加载时的程序化语音不会生效。
- iOS低电量模式。当iPhone处于低电量模式时,Safari有时会拒绝启动语音合成,直到禁用该模式。
- Android Chrome的暂停/恢复bug。暂停和恢复有时会导致队列中断。如果可靠性重要,请从
speak()重新开始,而非依赖pause()/resume()。 - 超范围的语速/音调会静默失败。将语速设置超过约3.0或低于0.1,或音调超过2.0,会导致部分引擎完全不产生音频,而非将值截断。
语音质量差异为何如此之大
TTS语音的质量完全取决于底层引擎,而底层引擎取决于OS,OS又取决于您安装的内容。1990年代的语音(eSpeak、Microsoft Anna、旧版Mac「Fred」)由连接的音素样本合成,听起来像机器人且生硬。现代语音(Apple的Siri语音、微软的Online Natural语音、Google基于WaveNet的语音、ElevenLabs的订阅语音)使用深度学习生成几乎与人类朗读无法区分的音频。
如果下拉菜单中的语音听起来像机器人,问题不在于本工具,而在于在您的OS中安装更好的语音:
- Windows:设置 → 时间和语言 → 语音 → 添加语音。微软的「Online Natural」语音比离线默认语音明显更好。
- macOS:系统设置 → 辅助功能 → 朗读内容 → 系统语音 → 管理语音。寻找「高级」/「增强」语音;它们在后台下载,能显著提升质量。
- iOS:设置 → 辅助功能 → 朗读内容 → 语音。与macOS相同的命名约定。
- Android:设置 → 辅助功能 → 文字转语音 → Google → 安装语音数据。
- Linux:安装
festival或mbrola以获得比eSpeak更好的质量,或通过API使用云端TTS。
常见错误
- 期望Firefox支持。Firefox的Web Speech API支持一直滞后。在Firefox中访问时,「朗读」按钮将被禁用;请使用基于Chromium的浏览器或Safari以获得可靠的TTS。
- 将机密文字粘贴到Chrome会话并假设是本地处理。Chrome默认的「Google」语音会将文字发送到Google的TTS服务。请选择本地语音或对敏感内容使用Safari。
- 在Chrome中粘贴大量文字。15秒/约250字符的截断会影响任何粘贴段落并期望完整朗读的用户。请拆分文字或使用Safari(无截断限制)。
- 将语速或音调设置超出范围。引擎不会截断值;它会静默地不产生音频。将语速保持在0.5-2.5,音调保持在0.5-1.5以获得可预测的结果。
- 将浏览器TTS视为生产级配音。即使是最好的浏览器语音也足以用于校对、无障碍辅助和草稿,而非用于发布的播客或商业配音。为此,请查看ElevenLabs、Murf或类似付费服务。
- 忘记语音是异步下载的。Chrome上的首次页面访问可能不显示任何语音;片刻后刷新它们就会出现。
常见问题解答
如何判断语音是本地的还是基于云端的?
以编程方式,SpeechSynthesisVoice.localService 属性对于设备本地语音为 true,对于云端语音为 false。在实践中,语音命名约定很有帮助:Chrome中标注为「Google」的语音通常是云端的;与您OS安装的语音对应的语音(如Microsoft David、Apple Samantha、Google Wavenet en-US-Wavenet-D)如果OS中有则为本地语音。Safari的语音始终是本地的。
我可以将音频保存为MP3文件吗?
无法直接通过浏览器的Web Speech API实现,该规范不暴露音频流以供捕获。如果您需要可下载的MP3/WAV,选项包括:使用Audacity等专用配音应用录制系统音频,使用返回音频文件的付费TTS API(Google Cloud TTS、Amazon Polly、ElevenLabs),或使用屏幕录制应用捕获播放内容。
为什么音频断断续续或在句中停止?
Chrome上最常见的原因是长文本bug,语音在约15秒后停止。刷新后用较短的段落再试,或切换到没有该限制的Safari。其他原因:OS语音引擎的系统故障(重启通常可修复),或云端语音在离线时获取失败(切换到本地语音)。
这支持任何语言吗?
适用于您的操作系统安装了语音的任何语言。macOS和iOS内置了数十种语言。Windows需要按语言安装语音包(设置 → 时间和语言 → 语音 → 添加语音)。Android需要下载Google TTS或第三方引擎的语言数据。语音下拉菜单列出了所有可用语音;语言标签(en-US、fr-FR、ja-JP等)告知每个语音生成哪种语言。
这对播客制作有用吗?
用于草稿和节奏测试,有用。用于已发布的节目,质量要求更高,即使是最好的浏览器语音也有微妙的人工感,听众会很快察觉。ElevenLabs和Murf等付费服务提供针对长篇旁白训练的语音模型,效果明显更好,通常仅需每千字符几分钱。
我可以在自己的网站上为盲人/低视力用户使用此功能吗?
网站通常不需要为无障碍目的嵌入TTS,屏幕阅读器等辅助技术(Apple设备上的VoiceOver、Windows上的NVDA/JAWS、Android上的TalkBack)能普遍处理这一问题。嵌入式TTS对于阅读疲劳的视力正常用户或学习者偶尔朗读更为有用。对于无障碍辅助,请专注于语义化HTML、ARIA标签、键盘导航和对比度,这些能让每个屏幕阅读器都运行得更好,包括用户自己的。