Repository navigation
Read Aloud ZH
CFRSS 本身不含文字转语音引擎。它对接的是你自己部署的朗读服务 —— 一个把 微软「大声朗读」(Edge TTS)转发出来的小 Worker。
跳过这一步,其他功能照常可用,只是没有 🔊 按钮。
上游项目是 yy4382/read-aloud,可以跑在 Cloudflare Workers、Vercel 或 Node.js Docker 上。
Cloudflare Workers(推荐): 打开该仓库,点它自己的 Deploy to Cloudflare 按钮。然后在 Cloudflare 面板里进入这个新 Worker 的 Settings → Variables and Secrets,添加:
TOKEN=YOUR_TOKEN
或者用 Docker:
docker run -d --name read-aloud -p 3000:3000 \
-e TOKEN=YOUR_TOKEN yunfinibol/read-aloud:main一定要设
TOKEN。 它的作用相当于密码:不设的话,任何人只要知道你的网址 就能白用你的服务。CFRSS 会把它作为查询参数带上,所以除了你自己,谁都不需要 知道它。
记下最终拿到的地址 —— 可能是 https://something.workers.dev,也可能你绑了
自己的域名。
设置 → 朗读配置,三个字段:
| 字段 | 填什么 |
|---|---|
| 服务地址 | 你的部署地址,例如 https://tts.example.com(不要带路径) |
| API KEY | 第 1 步里设置的同一个 TOKEN
|
| 音色 |
自动识别,或指定一个音色 |
点 测试。CFRSS 会通过你的服务合成一小段样例并播放出来。能听到人声就成功了。
下拉框内置 19 个精选音色:
| 语言 | 音色 |
|---|---|
| 普通话 | 晓晓、晓伊、云希、云健、云扬,外加辽宁、陕西口音 |
| 粤语 / 台湾 | HiuMaan、HiuGaai、晓臻、晓雨 |
| English | Aria、Jenny、Guy(美)、Sonia(英) |
| 其他 | Nanami(日)、SunHi(韩)、Svetlana(俄) |
自动识别是默认值,通常也是最好的选择:它按每个段落的文字脚本挑选音色, 所以中文文章里夹着英文引文,读起来依然自然。
CFRSS 从不把你的 TOKEN 交给浏览器。浏览器向 CFRSS 要音频,CFRSS 在服务端
补上 token,再去调你的服务:
GET {服务地址}/api/synthesis
?text=<段落文本>
&voiceName=<音色>
&format=audio-24khz-48kbitrate-mono-mp3
&token=<你的 TOKEN>
因为 token 只在服务端,它永远不会暴露给页面;合成接口也和应用其他部分一样受登录 保护。
哪些共享、哪些按设备保存:
| 设置项 | 作用域 | 原因 |
|---|---|---|
| 服务地址、API KEY | 全局共享 | 它们是服务凭据 |
| 音色 | 按设备 | 只有英文引擎的电子阅读器和手机,不该被迫用同一个音色 |
CFRSS 把文章切成段落,逐段合成,你听当前这段时它已经在预取下一段。正在朗读 的段落会高亮并自动滚动到可见位置,方便你跟上或往回跳。
单次请求的文本上限是 5000 字符 —— Edge TTS 在超长输入上会退化,这也正是要分段 而不是整篇发送的原因。
| 现象 | 可能原因 |
|---|---|
| 测试返回 401 / 403 | API KEY 和服务端的 TOKEN 不一致。 |
| 测试返回 404 | 服务地址不对,或者带了路径。应该只填域名本身。 |
| 测试报网络错误 | Worker 访问不到这个地址。确认它是公网可达的、拼写没错。 |
| 测试通过但没声音 | 浏览器拦截了自动播放,手动点一次播放即可。 |
| 读到一半停了 | 某一段合成失败。再点播放,会从那一段继续。 |
| 语言口音不对 | 别用「自动识别」,直接指定音色。 |