通过 Docker 部署的免费听书服务,使用微软 Edge 的大声朗读接口,可以使用晓晓、云希等音色听书。新手适用。可以直接导入安卓阅读;爱阅书香需要手动配置。
2024/02/05 更新:可以一键导入爱阅记了!同时,现在有了原生的镜像并且缩减了镜像大小。
Tip
阅读本文前,可以先看一看我的 听书方法整理汇总 哦🤗
Tip
对于想折腾的朋友,可能想要部署在自己的服务器上,本项目同时也提供 Docker 镜像。详见 微软 TTS 听书 - Docker 自建(Edge 接口)。
对于有 Azure TTS API 的朋友,可以看一看 使用官方 API:创建资源、导入软件 这篇文章中的这个小标题,或者直接去 https://tts-importer.yfi.moe 便捷地将听书配置导入阅读、爱阅记、源阅读软件。
前言
- 通过 Vercel 部署,新手向,完全免费,无需电脑、云服务器、NAS,唯一的限制是每个月 100G 的免费流量,一个人只听书的话,只要不是每天都开着一整夜忘关了,基本不可能用完(所以晚上听书记得定时啊🤣)
- 项目地址 yy4382/ms-ra-forwarder-for-ifreetime
- 由 wxxxcxx/ms-ra-forwarder: 免费的在线文本转语音API (github.com) 修改而来,记得给大佬点个 star
- 特别感谢 @justnsms 大佬写的代码,没有他的帮助,肯定不可能有这么方便的方法
- 有云服务器、群晖的话,建议 docker 自建,经过多次更新也很方便了,详见我的另一篇博客 (Docker 版教程)
Note
关于需要代理的问题解决方法:
由于 *.vercel.app 的域名在国内是无法直连访问的,如果不添加自己的域名,就需要在听书的时候一直代理访问。但是如果你有一个自己的域名(且没有被墙),那么只要使用这个域名,就可以直连访问了
部署
- 需要有一个 github 账户,没有的先去注册一个,如果实在访问不了 github,可以去注册一个 gitlab 试试,我没试过,但应该也可行
- 这里有两种做法,如果不希望使用 TOKEN (类似密码保护)的,选择“无需 TOKEN”的方法;如果需要使用有 TOKEN 的版本(会使后续设置变得复杂一些),请点击“需要 TOKEN”的方法。
无需 TOKEN: 点这一个按钮
需要 TOKEN: 点这一个按钮
还需要设置一个 TOKEN,跟着指引走就好
用 github 登陆,什么设置都不用改,点 Create 之后等待构建完毕
构建完成后,会出现一个有着网站预览的页面,直接点红色箭头所指的预览,进入部署好的页面,并记下新部署好的页面的网址 应该形如 https://一些字母.vercel.app
添加域名(可选)
Note
本步骤为可选项目,如果配置了可以直连听书,否则需要全程代理。不想添加的可以直接跳到“爱阅书香配置”小标题。
-
获取一个域名。这里以我的域名
tts.yfi.moe
进行演示。目前应该有不少可以免费获取的域名,比如 .eu.org 之类的,请自行谷歌 -
点击 Continue in Dashboard,再点击右上角的 Domains 按钮。
-
输入框中输入你想要的域名,然后点击 Add。比如,我的域名是
yfi.moe
,我想使用它的三级域名tts.yfi.moe
作为 tts 用的域名,那么就填写tts.yfi.moe
。 -
此时,Vercel 会提示没有做 DNS。按照提示,在你的 DNS 服务商中设置好 cname 记录,然后等待一段时间直到 Vercel 不再显示 Invalid Configuration (可以通过域名访问网站)为止。添加 CNAME 记录的方法随服务商而异,请自行搜索。
软件内配置:
阅读 & 爱阅记配置
阅读直接用网络导入就行。
爱阅记要么用手机扫码或者在手机浏览器中点一键导入按钮,这样都是一键导入的;要么复制它直接显示的链接,打开页面,把页面内容复制到 在线语音库管理 -> 右上角菜单 -> JSON 输入
中。
爱阅书香配置
Tip
注意这部分的配置都是大小写敏感的,不要打错了
打开爱阅书香,进入设置 ->听书 ->自定义语音库 ->创建
- 名称:任意
- 合成字数:建议 200
- 请求方式:GET
- 地址:第一步里获取的网址,后边加上
/api/aiyue
,最终填进去的应该形如https://一些字母.vercel.app/api/aiyue
,或者https://设置好的域名(以我为例便是tts.yfi.moe)/api/aiyue
。记得点右上角的保存 - 参数 ->添加 ->请输入请求参数:text,内容填%@
- 解析字段 ->添加 ->请输入解析字段与规则:playData,内容填 ResponseData
- 如果在之前部署时选择了使用 TOKEN,则 Http 配置 ->自定义 HTTP 头 ->添加 ->请输入 HTTP 协议头信息:authorization,内容填
Bearer 你的token
,比如说你的 TOKEN 是example
,则内容填Bearer example
,设置完回到刚刚的页面。没有设置 TOKEN 的不用管这一步 - 可选:参数 ->添加 ->请输入请求参数:voiceName,内容填自己想要的人声(参考 这里),不添加这个参数的话默认 zh-CN-XiaoxiaoNeural(要么填好人声,要么不要添加这个参数,不要添加了参数但是内容为空)。部分语音可能已经被微软关了,所以没法用可以换一个试试。
测试发音,如果正确就 ok 了,记得保存后再退出。
更新
由于 Vercel 默认是先 clone 再部署的,所以更新需要先在 GitHub 和 Vercel 上删去原项目,然后重新点击本文中的按钮进行更新。
问题反馈
Caution
如果出了问题… 先检查一遍自己大小写有没有打错!!!
可以去群里找我,也可以直接在下方评论(如果评论组件没加载出来,请开代理),还可以发邮件给 i@yfi.moe 反馈(QQ/163/126 邮箱发的可能会被微软自动丢到垃圾邮件里,我也没办法,请尽量使用 Outlook 或者 Gmail)
记得附上“查看请求与响应”按钮点开后的内容,方便排查问题。只附上一个 Error Domain=请求失败 Code=-88410 “(null)"
的截图是没用的。