GithubHelp home page GithubHelp logo

rogueme / ms-ra-forwarder Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wxxxcxx/ms-ra-forwarder

95.0 0.0 203.0 7.78 MB

Home Page: https://yd.cuobar.com/

Dockerfile 0.23% TypeScript 32.31% JavaScript 17.37% HTML 50.09%

ms-ra-forwarder's Introduction

ms-ra-forwarder

创建这个项目的初衷是为了能够在阅读(legado)中听“晓晓”念书。由于其中的脚本引擎不支持 WebSocket ,所以包装了一下微软 Edge 浏览器“大声朗读”的接口。

如果你的项目可以使用 WebSocket ,请直接在项目中调用原接口。具体代码可以参考 service/edge/index.ts

重要更改

2022-09-01:Azure TTS API 好像又改了,旧版用户可能会无法正常使用,请更新到最新版。

2022-07-17:添加 Azure TTS API 支持(没怎么测试,不知道用起来稳不稳定)。因为调用 Azure TTS API 需要获取授权码。其它方式只需要或取一次就可以使用一段时间,而 Vercel 每次调用 API 都需要重新获取授权码。容易超时不说,也加剧了微软服务器的负担,所以不是很推荐部署在 Vercel 的用户使用(虽然也不是不能用~但是万一微软被薅痛了,又改接口就不好了😂)。

2022-07-02:测试目前还支持的格式有 webm-24khz-16bit-mono-opuaudio-24khz-48kbitrate-mono-mp3audio-24khz-96kbitrate-mono-mp3。另外今天下午开始,使用不在下拉列表中声音会出现类似 “Unsupported voice zh-CN-YunyeNeural.” 错误,后续可能也会被砍掉。且用且珍惜吧! 2022-07-01:部署在**大陆以外服务器上的服务目前只能选择 webm-24khz-16bit-mono-opus 格式的音频了! 所以使用 Vercel 的用户需要重新部署一下。

2022-06-16:Edge 浏览器提供的接口现在已经不能设置讲话风格了,若发现不能正常使用,请参考 #12 获取更新。

部署

请参考下列部署方式。

部署到 Vercel

请先 Fork 一份代码然后部署到自己的 Vercel 中 。参考 演示视频

注:由于 Vercel 使用了无状态的云函数,每次请求都需要与重新微软的服务器建立连接,所以速度会相对较慢。

部署到 Heroku

Deploy

部署到 Railway

Deploy on Railway

Docker部署过程

请先自行安装好Docker、Docker Compose、node.js、git,不会可以找百度。

1 拉取镜像

docker pull ljmalyp/ms-tts:latest

运行方式二选一

2.1 启动容器(方式一)

无TOKEN密码启动容器

docker run --name ms-tts -d -p 3000:3000 ljmalyp/ms-tts

TOKEN密码启动容器

docker run --name ms-tts -d -p 3000:3000 -e TOKEN="密码" ljmalyp/ms-tts

2.2 Docker Compose(方式二)

2.2.1 进入home目录

cd /home

2.2.2 获取代码

git clone https://github.com/rogueme/ms-ra-forwarder.git

2.2.3 进入/home/ms-ra-forwarder目录

cd /home/ms-ra-forwarder

2.2.4 创建 docker-compose.yml 文件

在ms-ra-forwarder目录下创建 docker-compose.yml 文件并写入以下内容并保存。

无需自定义的请使用以下内容:

version: '3'

services:
  ms-ra-forwarder:
    container_name: ms-tts
    ports:
     - "3000:3000"
    image: ljmalyp/ms-tts:latest

 需要自定义更改网站文件的请使用以下内容:

version: '3'

services:
  ms-ra-forwarder:
    container_name: ms-tts
    ports:
     - "3000:3000"
    volumes:
     - ./api/:/app/api/
     - ./service/:/app/service/
     - ./dist/:/app/dist/
     - ./public/:/app/public/
    image: ljmalyp/ms-tts:latest

docker-compose.yml 文件目录下执行

 更新环境配置:

docker-compose up -d

如docker-compose.yml文件内容未改变请执行

 重启容器:

docker-compose restart

改动后缀ts文件内容后需要重新编译为js才会生效

进入/home/ms-ra-forwarder目录

cd /home/ms-ra-forwarder

编译ts文件

tsc -w

4 浏览器访问 http://localhost:3000

手动运行

手动运行需要事先安装好 git 和 nodejs。

# 安装依赖
npm install 
# 运行
npm run start

使用

导入到阅读(legado)

请访问你部署好的网站,在页面中测试没有问题后点击“生成阅读(legado)语音引擎链接”,然后在阅读(legado)中导入。

手动调用

接口地址为:

POST /api/ra
FORMAT: audio-16khz-128kbitrate-mono-mp3
Content-Type: text/plain

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xml:lang="en-US">
  <voice name="zh-CN-XiaoxiaoNeural">
    表征这个词印象中就没在中文里见到过
  </voice>
</speak>

定制发音和音色

请求的正文为 ssml 格式,支持定制发音人和说话风格(最新接口不再支持定制说话风格),下面是相关的示例和文档:

文本转语音

通过语音合成标记语言 (SSML) 改善合成

音频格式

默认的音频格式为 mp3 ,如果需要获取为其他格式的音频请修改请求头的 FORMAT(可用的选项可以在 ra/index.ts 中查看)。

限制访问

由于 Vercel 并非无限制的免费,如果需要防止他人滥用你的部署的服务,可以在应用的环境变量中添加 TOKEN,然后在请求头中添加 Authorization: Bearer <TOKEN>访问。注意:这只会阻止未授权的请求调用微软的接口,并不会减少 Vercel Serverless Function 限额的用量(大概会减少一点流量)。

相关项目

其他说明

  • 微软官方的 Azure TTS 服务目前拥有一定的免费额度,如果免费额度对你来说够用的话,请支持官方的服务。

  • 如果只需要为固定的文本生成语音,可以使用有声内容创作。它提供了更丰富的功能可以生成更自然的声音。

  • 本项目使用的是Edge浏览器“大声朗读”功能的接口,不保证后续可用性和稳定性。

  • 本项目仅供学习和参考,请勿商用。

ms-ra-forwarder's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.