2.8k star! 用开源免费的edge-tts平替科大讯飞的语音合成服务

2024-03-05 21:44

本文主要是介绍2.8k star! 用开源免费的edge-tts平替科大讯飞的语音合成服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

edge-tts是github上的一个开源项目,可以免费将文本转为语音,别看它只有2.8k star,替代科大讯飞的收费TTS服务完全没问题,因为这个项目实际是调用的微软edge的在线语音合成服务,支持40多种语言,300多种声音,效果毋容置疑。

下面开始实战。edge-tts项目地址:https://github.com/rany2/edge-tts

1.安装部署

在cmd中运行以下命令安装edge-tts

pip install edge-tts

速度非常快,几秒钟就安装完成了。

2.文本转语音

输入以下命令,将一段英文转为音频。

edge-tts --text "Hello, welcome to subscribe my wechat official account: AI technology practice" --write-media hello.mp3

--text 参数为要转换的文本。

--write-media 参数为转换后要保存的音频文件名。

如下图所示:

转换完成后,在运行命令的目录中(上面例子中的运行目录为c:/Users/liliang)会多出一个hello.mp3,这个mp3就是转换后的音频。

3.支持的语言和音色

edge-tts支持英语、汉语、日语、韩语、法语等40多种语言,共300多种可选声音,执行以下命令查询:

edge-tts --list-voices

如下图所示:

查询结果中的Gender为声音的性别,Name为声音的名字,如zh-CN-YunjianNeural,其中zh表示语言,CN表示国家或地区,可以根据需求选择不同的声音。

使用--voice参数来指定声音名称,下面我使用zh-CN-YunyangNeural声音来合成一个中文音频。

edge-tts --voice zh-CN-YunyangNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

合成陕西方言的女声

edge-tts --voice zh-CN-shaanxi-XiaoniNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在 这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

合成台湾口音

edge-tts --voice zh-TW-HsiaoYuNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

合成东北口音

edge-tts --voice zh-CN-liaoning-XiaobeiNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

合成粤语

edge-tts --voice zh-HK-WanLungNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

4.修改语速、音量、频率

4.1 使用--rate参数修改语速

将速度减慢30%

edge-tts --rate=-30% --voice zh-CN-YunyangNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

将速度加快30%

edge-tts --rate=+30% --voice zh-CN-YunyangNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

4.2 使用--volume参数修改音量

将音量降低70%

edge-tts --volume=-70% --voice zh-CN-YunyangNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

将音量调高70%

edge-tts --volume=+70% --voice zh-CN-YunyangNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

4.3 使用--pitch参数修改频率

频率减少50hz

edge-tts --pitch=-50Hz --voice zh-CN-YunyangNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

频率增加50hz

edge-tts --pitch=+50Hz --voice zh-CN-YunyangNeural --text "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。" --write-media hello_in_cn.mp3

5.使用代码转换

上面都是用命令转换,我们也可以写代码调用,开发http接口来提供语音合成服务。

以下是一个代码示例,将代码保存到一个文件中,如tts.py。

#!/usr/bin/env python3"""
Basic example of edge_tts usage.
"""import asyncioimport edge_ttsTEXT = "大家好,欢迎关注我的微信公众号:AI技术实战,我会在这里分享各种AI技术、AI教程、AI开源项目。"
VOICE = "zh-CN-YunyangNeural"
OUTPUT_FILE = "d:/test.mp3"async def amain() -> None:"""Main function"""communicate = edge_tts.Communicate(TEXT, VOICE)await communicate.save(OUTPUT_FILE)if __name__ == "__main__":loop = asyncio.get_event_loop_policy().get_event_loop()try:loop.run_until_complete(amain())finally:loop.close()

运行python tts.py,稍等即可在d盘生成合成后的音频test.mp3。

6.实现原理

原理非常简单,就是调用了微软的在线语音合成服务,看一下源码中的constants.py和communicate.py便可猜出大概,语音合成是用的websocket服务,获取声音列表是用的https接口,但是作者不知道这个TrustedClientToken是怎样得到的,也没有搜到官方的api文档,猜测是抓包edge浏览器中的朗读所选内容得到的,应该算是免费薅羊毛。

communicate.py,建立websocket连接,收发数据。

文章来源于AI技术实战 ,作者AI李良

这篇关于2.8k star! 用开源免费的edge-tts平替科大讯飞的语音合成服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/777910

相关文章

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

电脑报错cxcore100.dll丢失怎么办? 多种免费修复缺失的cxcore100.dll文件的技巧

《电脑报错cxcore100.dll丢失怎么办?多种免费修复缺失的cxcore100.dll文件的技巧》你是否也遇到过“由于找不到cxcore100.dll,无法继续执行代码,重新安装程序可能会解... 当电脑报错“cxcore100.dll未找到”时,这通常意味着系统无法找到或加载这编程个必要的动态链接库

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D