React 前端导航

edge-tts微软文本转语音库,快速搭建自己的TTS文本转语音服务

一、Edge-TTS安装

Edge-TTS是一个Python库,它使用微软的Azure Cognitive Services来实现文本到语音转换(TTS)。该库提供了一个简单的API,可以将文本转换为语音,并且支持多种语言和声音。要使用Edge-TTS库,首先需要安装上Edge-TTS库,安装直接使用pip 进行安装即可。

pip install edge-tts

我这里是基于python3.9,在自己的终端窗口中,输入以上安装命令,便会自动安装Edge-TTS

file_1a6e9824c08e489a9335a51d161f3602.png

安装完成后,我们可以输入edge-tts,若cmd窗口中输出提示信息,说明已经安装完成。

sage: edge-tts [-h] [-t TEXT] [-f FILE] [-v VOICE] [-l] [--rate RATE] [--volume VOLUME] [-O OVERLAPPING]
                [--write-media WRITE_MEDIA] [--write-subtitles WRITE_SUBTITLES] [--proxy PROXY]
edge-tts: error: one of the arguments -t/--text -f/--file -l/--list-voices is required

二、基本使用

如果要直接在cmd命令行中使用Edge-TTS,我们只需要使用如下命令来运行即可:

edge-tts --text "Hello, world!" --write-media hello.mp3

以上运行完成后,便会在本地生成一个hello.mp3的音频文件,但是这里是默认的语音,我们需要改变语音,来实现符合自己要求的语音,且默认的语音只支持英文。

我们可以直接在cmd窗口中输入如下命令行来查看edge-tts支持的语音:

edge-tts --list-voices
Name: af-ZA-AdriNeural Gender: Female
........
........
........
Name: zh-CN-XiaoxiaoNeural Gender: Female
Name: zh-CN-XiaoyiNeural Gender: Female
Name: zh-CN-YunjianNeural Gender: Male
Name: zh-CN-YunxiNeural Gender: Male
Name: zh-CN-YunxiaNeural Gender: Male
Name: zh-CN-YunyangNeural Gender: Male
Name: zh-CN-liaoning-XiaobeiNeural Gender: Female
Name: zh-CN-shaanxi-XiaoniNeural Gender: Female
Name: zh-HK-HiuGaaiNeural Gender: Female
Name: zh-HK-HiuMaanNeural Gender: Female
Name: zh-HK-WanLungNeural Gender: Male
Name: zh-TW-HsiaoChenNeural Gender: Female
Name: zh-TW-HsiaoYuNeural Gender: Female
Name: zh-TW-YunJheNeural Gender: Male
Name: zu-ZA-ThandoNeural Gender: Female
Name: zu-ZA-ThembaNeural Gender: Male

这里会打印出来所有支持的语音,字母zh开头的便是支持中文的语音,我们使用zh-CN-YunxiNeural,来听听zh-CN-YunxiNeural生成的语音,你不是听过。这里我们只需要添加--voice命令,来指定输出的语音。

edge-tts --voice zh-CN-YunxiNeural --text "hello 大家好,这里是程序员盒子" --write-media hello.mp3

命令行执行完成后,我们可以从cmd命令行中看到,不仅edge-tts可以生成语音,还特意生成了字幕文件,我们可以把这些字幕输入到视频剪辑文件中,就可以自动添加字幕了。

WEBVTT
00:00:00.100 --> 00:00:00.700
hello
00:00:00.800 --> 00:00:01.075
大家
00:00:01.075 --> 00:00:01.387
好
00:00:01.712 --> 00:00:02.000
这里
00:00:02.000 --> 00:00:02.237
是
00:00:02.263 --> 00:00:02.850
人工智能
00:00:02.862 --> 00:00:03.350
研究所

当然edge-tts还支持调整语速与音量,我们只需要添加rate与volume指令

edge-tts --voice zh-CN-YunxiNeural --rate=-4% --text "hello 大家好,这里是人工智能研究所" --write-media hello1.mp3
edge-tts --voice zh-CN-YunxiNeural --volume=-4% --text "hello 大家好,这里是人工智能研究所" --write-media hello1.mp3

rate=-4% 意思是语速降低4%,volume=-4%意思是音量降低4%,当然若是加号,便是增加多少。

三、集成EdgeTTS

问题:在上面的介绍中,我们使用的是命令的方式来运行合成语音文件,但是如果是个web产品,如何集成这个能力呢?其实我们就是希望可以得倒一个API接口,可以直接调用api,实现tts功能的产品化。

这里使用python的FastApi提供了一个POST请求的接口,创建tts.py:

import uvicorn
import edge_tts
import asyncio
from fastapi import FastAPI, Request, Body

app = FastAPI()

@app.post("/api/tts")
async def post_data(text: str = Body('', title = '文本', embed = True),
voice
: str = Body('', title = '语言参数', embed = True),
name
: str = Body('', title = '文件名', embed = True),
rate
: str = Body('', title = '文件名', embed = True),
volume
: str = Body('', title = '文件名', embed = True)):
output
= "/home/work/tts/result/" + name + ".mp3"
tts
= edge_tts.Communicate(text = text, voice = voice, rate = rate, volume=volume)
await tts.save(output)
return {"message": output}

if name == 'main':
uvicorn
.run('tts:app', host = '0.0.0.0', post = 8080)

创建启动文件 tts.sh:

使用nohup后台启动运行服务(线上部署在linux,需要保证服务一直处于运行态)

--host 0.0.0.0表示允许搜索id可以访问这个api服务,

--port8080是访问端口(可以修改)

nohup uvicorn tts:app --host 0.0.0.0 --port 8080 >../tts/tts.log &
#gunicorn tts:app -b 0.0.0.0:8099 -w 4 -k uvicorn.workers.UvicornWorker --daemon
tail -20f ../tts/tts.log

修改tts.sh 为可执行文件:

chmod 777 tts.sh

启动服务

./tts.sh

api测试

curl --location --request POST 'http://127.0.0.1:8080/api/tts' \
--header 'Content-Type: application/json' \
--data-raw '{
    "text": "你好, 这里是AIGOpen,AIGC应用能力开放平台!",
    "name": "123",
    "voice": "zh-CN-XiaoxiaoNeural",
    "rate": "-4%",
    "volume": "+0%"
}'

好啦,人人都可以搭建一套自己的TTS服务啦

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:farmerlzj@163.com。 本站原创内容未经允许不得转载,或转载时需注明出处: 内容转载自: React前端网:https://qianduan.shop/blogs/detail/140

#tts#文本转语音#edge tts#开源#微软tts服务

相关推荐

GitHub上如何发现优秀开源项目

GitHub上无数的开源项目供我们学习,那么在如此多的项目中,如何找到你想要的,有价值的优秀开源项目呢?本站每个月都会更新以前前端开源项目给大家参考学习,但授人以鱼不如授人以渔,本文将介绍如何在github发现优秀项目,节约我们的时间。

node 爬虫开源项目

常用的node爬虫开源项目介绍