piapia123
zh

朗读文本(浏览器自带语音)

音视频

所有处理都在浏览器本地完成,数据不上传服务器

朗读文本

文本不经过本站服务器;它会交给**浏览器自带的语音引擎**来念 —— 在部分系统上那个引擎可能用云端语音。本站自身不发送任何请求。

⚠️ 离开页面时会主动停止朗读:`speechSynthesis` 是浏览器全局的,切标签页或关掉页面后声音可能还在响 —— 所以这里在 `pagehide` 与 `visibilitychange` 时会取消它。

把一段文字交给浏览器的语音引擎念出来:选声音、调语速 / 音调 / 音量,长文本可以按标点逐句朗读,屏幕上会显示念到第几句。 两个必须说清楚的边界。第一,文本会交给浏览器的语音引擎 —— 它不经过本站服务器,但在部分系统上那个引擎用的是云端语音,所以不能笼统地说「数据不出浏览器」。这里如实写成「不经过本站服务器」。第二,必须有一个显眼的「停止」按钮:`speechSynthesis` 是浏览器全局的,长文本一旦开始念,切标签页、甚至关掉页面都可能还在响 —— 所以这里除了停止按钮,还会在离开页面时主动取消。 声音清单是异步来的:部分浏览器刚加载时 `getVoices()` 返回空数组,要等 `voiceschanged` 事件才有;不处理的话「声音」下拉永远是空的 —— 这是这类工具最容易漏的一步。声音会按语言分组,默认挑与界面语言同族的那一个。 逐句朗读不只是好看:部分浏览器对单条 utterance 的长度有限制,一条几千字的 utterance 会在中途被截断,而且不报错、不触发结束事件,表现是「念到一半就没了」。按句子切成一条条就绕开了这个坑。

功能

  • 用浏览器自带语音引擎朗读,本页不发送任何请求
  • 声音按语言分组,自动挑与界面语言同族的那一个
  • 语速 0.5-2、音调 0-2、音量可调
  • 逐句朗读:长文本按标点切句,并显示念到第几句
  • 暂停 / 继续 / 停止三个动作齐全 —— 长文本没法靠刷新页面来停
  • 离开页面或切到后台时自动取消,声音不会留在别的标签页里
  • 声音清单为空时会说明原因(等 voiceschanged 或系统没装语音包)
  • 显示朗读的大致时长估算
  • 文本不经过本站服务器(会交给浏览器语音引擎)

使用方法

  1. 把要朗读的文本贴进输入框
  2. 选一个声音、调语速与音调
  3. 需要的话保持「逐句朗读」勾选
  4. 点「朗读」,要停就点「停止」

常见问题

文本会被上传吗?
不会上传到本站服务器 —— 页面本身不发送任何请求。但它会交给浏览器自带的语音引擎,而在部分系统上那个引擎用的是云端语音。所以这里不写「数据不出浏览器」这种绝对话,只承诺「不经过本站服务器」。
为什么一定要有「停止」按钮?
因为 `speechSynthesis` 是浏览器全局的:长文本开始念之后,光靠刷新页面或切标签页是停不下来的,声音可能一直在别的标签页里响。所以这里给了显式的停止,并在离开页面与切到后台时主动取消。
「声音」下拉是空的怎么办?
两种可能。一是浏览器还没把声音列出来 —— `getVoices()` 在部分浏览器里是异步的,要等 `voiceschanged` 事件,稍等片刻会自动出现。二是这台设备根本没收语音包(比如精简安装的系统),那就没有可用声音,工具会说明这一点。
长文本念到一半就断了?
这是浏览器对单条 utterance 的长度限制(尤见于 Chrome):超长的 utterance 会在中途被截断,而且不报错。勾上「逐句朗读」后每句单独成一条,就绕开了这个限制。
能调成别的语言吗?
能。声音清单按语言分组,选一个别语言的声音即可 —— 用什么语音念完全取决于你选的那个声音,而不是文本本身的语种。

相关工具