爱阅书香配置微软tts听书

前言

前置条件

  • 有一台云服务器/支持docker的NAS/电脑(待测试)
  • 安装好 docker

安装服务器端

安装

原版教程见文末,如果几乎一键版搞不定,可以看一看。

支持Linux云服务器和群晖(感谢@rxgame001的测试)
依次执行以下指令(需要机子可以访问dockerhub)

# 建议使用root用户
docker run -d 
  --name ifreetimeTTS 
  -p 3000:3000 
  --restart unless-stopped 
  yunfinibol/ms-ra-forwarder-for-ifreetime:latest

 

如果你想用docker-compose,这个和上面的命令等效

# 创建文件夹,名字任意
mkdir ifreetime_tts&&cd ifreetime_tts

# 下载文件
wget https://gist.github.com/yy4382/d0c2a5e2c19323f4aa651f99317fd53e/raw/docker-compose.yml

# 启动容器
docker-compose up -d
# 搞好了!按照下文的方法验证是否成功,然后在爱阅中配置听书

想要设置token的话,docker run 增加一个参数 -e TOKEN=example,docker-compose 的话按照yaml文件里的注释操作

配置ios端爱阅书香

打开爱阅书香,进入设置->听书->自定义语音库->创建

  • 名称:任意
  • 合成字数:建议200
  • 请求方式:GET
  • 地址:第一步里获取的网址,后边加上 /api/aiyue,最终填进去的应该形如https://ip:3000/api/aiyue,记得点右上角的保存
  • 参数->添加->请输入请求参数:text,内容填%@
  • 解析字段->添加->请输入解析字段与规则:playData,内容填ResponseData
  • 如果在之前部署时选择了使用TOKEN,则 Http配置->自定义HTTP头->添加->请输入HTTP协议头信息:authorization,内容填 Bearer 你的token ,比如说你的TOKEN是example,则内容填 Bearer example,没有设置TOKEN的不用管,设置完回到刚刚的页面
  • 可选:参数->添加->请输入请求参数:voiceName,内容填自己想要的人声(参考这里),不添加这个参数的话默认 zh-CN-XiaoxiaoNeural(要么填好人声,要么不要添加这个参数,不要添加了参数但是内容为空)

爱阅书香配置微软tts听书

测试发音,如果正确就ok了,记得保存后再退出。

原版

稍显麻烦,需要docker 基础知识,但是可以让你知道这一切是如何运作的,放在文末了

ms-ra-forwarder

爱阅书香配置微软tts听书

也可以用 vercel,但是每月只有100G免费流量,听的多的/还搭了其他服务的要小心些

  • 因为微软把Azure的试用关了,所以只能用ra(edge的大声朗读)接口了

ifreetime

  • 项目地址:iranee/ifreetime: iOS爱阅书香TTS自建服务 (github.com)
  • 如果你的服务器已经在运行一个支持php的网站了,直接把项目里的 ra.php 中的 http://127.0.0.1:3000/api/ra 的ip改成你自己在第一步里用的,然后丢到网站里就行
  • 如果没有,那么需要建一个docker容器以运行该php文件(警告:我没写过php,dockerfile 的写法是ChatGPT 给的,不保证最优,但应该能用,反正我成功了)
  1. 新建一个文件夹,假设叫做ifreetime(其他的也行)
  2. 进入文件夹,再建一个叫做src的文件夹,把项目中的ra.php放进去(或者直接把整个项目clone进去也行)
  3. 修改ra.php,把 http://127.0.0.1:3000/api/ra 中的 127.0.0.1:3000 换成第一步中生成的ip+端口
    • 对于服务器,最方便的方法是直接用公网ip+端口,对于群晖,最简单的是用局域网ip+端口
    • 经测试可行的其他替代方案:
      1. 云服务器做好域名解析和反代之后,使用类似 https://tts.example.com/api/ra 的格式(使用 https://tts.example.com 可以访问ms-ra-forwarder)
      2. 使用本地docker的ip,一般是172.17.0.1,所以应该形如 http://172.17.0.1:3000/api/ra
    • 不可行的方案: 不可以使用127.0.0.1,因为在容器里
    • 可能会出问题的方案:域名+端口的形式,比如 https://www.example.com:3000/api/ra 尤其对于nas来说,因为80/443没法用,所以不得不额外加端口。有人这样搞失败了,但不确定是不是因为这个问题。有人这样搞成功了的话,用邮件踢我一脚(邮箱在博客上有写)
  4. 回到 ifreetime 文件夹,新建一个叫 Dockerfile 的文件,内容为
# 设置基础镜像
FROM php:7.3

# 将本地代码复制到容器中的 /var/www/html 目录
COPY src/ /var/www/html/

# 设置容器内的工作目录
WORKDIR /var/www/html

# 暴露容器的 8000 端口
EXPOSE 8000

#启动php服务器
CMD ["php", "-S", "0.0.0.0:8000"]
  1. 构建并运行:在 ifreetime 目录中,依次输入如下指令
docker build -t ifreetime .
docker run -d -p 12222:8000 ifreetime
  1. 这种方法,需要将爱阅中的配置(还有测试的时候)把3000都换成12222.而且/api/aiyue 都换成/ra.php
  2. 打开手机App,进入听书配置 -> 自定义语音库
    创建->高级自定义语音合成名称:任意

    合成字数:建议200

    请求方式:GET

    地址:ra.php网络地址,如果安装上面的方法,是 http://你的ip:12222/ra.php

    参数->添加->请输入请求参数:voiceName,内容填自己想要的人声(参考这里),例如zh-CN-XiaoxiaoNeural

    参数->添加->请输入请求参数:text,内容填%@

    解析字段->添加->请输入解析字段与规则:playData,内容填ResponseData

    测试发音,如果正确就ok了。

爱阅书香配置微软tts听书

原文链接: http://blog.yunfinibol.top
本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
爱阅书香配置微软tts听书
前言 docker 实现 项目地址yy4382/ms-ra-forwarder-for-ifreetime 由 wxxxcxx/ms-ra-forwarder: 免费的在线文本转语音API (github.com) 修改而来,记得给大佬……
<<上一篇
下一篇>>