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 asyncio

import edge_tts

TEXT = "大家好,欢迎关注我的微信公众号: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李良

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/431132.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TB-03F-Kit 基础AT指令的使用

文章目录 前言一、使用前准备1. 确保TB-03F-Kit已经连接到电脑,并且已经烧录好固件。2. 准备号调试助手,并且电脑上已经安装好了串口驱动3. 打开串口调试助手并复位模组 二、指令介绍三、基础指令1. 准备测试2. AT 测试指令3. ATHELP 查看指令4. ATRST 模…

我的NPI项目之Android 安全系列 -- Keymaster到底是个什么

最近因为一直在调研独立secure element集成的工作,不巧的是目前使用的高通平台只有NFC-eSE的方案。高通目前也并不支持独立的eSE集成,codebase中并无相对应的代码。举个例子,目前使用的STM的一款eSE,但是这款eSE的开发STM还没有完…

开发知识点-前端-jQuery

jquery $(xxxx) id #<script src"static/js/jquery.min.js?v2.1.4"></script>jQuery对象上面还定义了 Ajax方法&#xff08;$.ajax()&#xff09;&#xff0c;用来处理Ajax操作。调用该方法后&#xff0c;浏览器就会向服务器发出一个HTTP请求。$.ajax…

pytest-教程-14-fixture之yield关键字

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest conftest.py文件的使用方法&#xff0c;本小节我们讲解一下fixture的yield关键字实现teardown后置操作。 当我们运行我们的测试时&#xff0c;我们会希望确保它们自己清理干净&#xf…

冒泡经典题

&#x1f4d1;前言 本文主要是【】——简单使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff1a;狠…

【Redisson分布式锁】Redisson公平锁实现机制

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

python之双端队列deque

普通队列只能进行队尾插入和出队头的操作&#xff0c;双端队列可以对队头和队尾进行操作&#xff0c;而且相比于list实现的队更具有优越性&#xff0c;list实现在删除和插入时的时间复杂度大约为O(n)&#xff0c;而deque的时间复杂度是O(1) 队头操作&#xff1a;append()、pop(…

蓝桥杯练习系统(算法训练)ALGO-986 藏匿的刺客

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 强大的kAc建立了强大的帝国&#xff0c;但人民深受其学霸及23文化的压迫&#xff0c;于是勇敢的鹏决心反抗。   kAc帝国防…

力扣刷题-82.删除排序链表中的重复元素

给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a;head [1,1,1,2…

计算机组成原理----数据的表示和运算

一&#xff1a;进位计数制 1、进制 B&#xff1a;二进制&#xff1a;0-1 逢二进一、借一当二 O&#xff1a;八进制&#xff1a;0-7 逢八进一 D&#xff1a;十进制&#xff1a;0-9 逢十进一 H&#xff1a;十六进制&#xff1a;0-9、A-F 逢十六进一 r进制2 2、…

第三百八十四回

【toc] 我们在上一章回中介绍了Visibility组件相关的内容&#xff0c;本章回中将介绍Flutter与原生平台通信相关的内容.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 在移动开发领域以Android和IOS SDK开发出的应用程序叫原生开发&#xff0c;开发同一个程序需要…

回溯算法01-组合(Java)

1.组合 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]示例 2&#xff1a; 输入&#x…

四平方和 刷题笔记

/* 四平方和 直接暴力搜索 可能会超时 使用二分辅助搜索 先枚举出 c*cd*d并存入数组 用式子算出 a*ab*b还剩下多少查找sum数组里面是否存在符合条件的数 查找方式使用二分搜索 当逼近答案后 检查一下是否为所需的数 如果是 直接输出 */ #include <cstring> #includ…

社交媒体的未来图景:探索Facebook的数字化之旅

社交媒体已经成为现代社会不可或缺的一部分&#xff0c;其影响力已经深入到人们生活的方方面面。而在众多社交媒体平台中&#xff0c;Facebook无疑是其中的巨头&#xff0c;其数字化之旅更是引领着整个社交媒体行业的发展方向。本文将深入探讨社交媒体的未来图景&#xff0c;以…

事务处理

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 事务处理 事务是保证数据完整性的一种手段。 事务具备 ACID 原则&#xff08;包括原子性、一致性、独立性及持久性&#xff09;&#xff0c;保证一个人更新数据的时候&#xff0c;其他…

C# 中 TryParse 将字符串转换为特定类型的方法

在 C# 中&#xff0c;TryParse 是一个用于将字符串转换为特定类型的方法。它用于尝试解析字符串并将其转换为指定类型的值&#xff0c;而不会引发异常。如果解析成功&#xff0c;它将返回 true 并将解析结果存储在输出参数中&#xff1b;如果解析失败&#xff0c;它将返回 fals…

C# 中 Math.Round 数学函数

在 C# 中&#xff0c;Math.Round 是一个数学函数&#xff0c;用于对一个浮点数进行四舍五入操作。它接受一个浮点数作为输入&#xff0c;并返回一个最接近输入值的整数或指定小数位数的浮点数。 Math.Round 方法有多个重载&#xff0c;其中最常用的重载有以下两种形式&#xf…

就业班 2401--3.5 Linux Day11--DNS解析

DNS域名解析服务 少壮不努力&#xff0c;老大徒伤悲。一、 1.DNS介绍 DNS 是域名系统 (Domain Name System) 的缩写&#xff0c;是因特网的一项核心服务&#xff0c;它作为可以将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网&#xff0c;…

「项目实践」如何实现导购推荐“千人千面”

前言 在电商背景下&#xff0c;为用户提供精准的导购推荐不仅能极大提升购物体验&#xff0c;也成为推动业务增长的关键驱动力。随着人工智能和数据科学的快速发展&#xff0c;实现“千人千面”的个性化推荐已不再是无法触及的梦想。如何在众多商品中准确捕捉用户的偏好&#…

进口及国内细胞分析仪厂家名录大全-贝克曼、安捷伦、希森美康、迈瑞.....

流式细胞仪是一种测量层流中细胞的设备&#xff08;细胞仪&#xff09;&#xff0c;其通过将每个细胞排列在鞘液中&#xff0c;加以激光束照射&#xff0c;可测量散射光和荧光&#xff0c;从而获得有关每个细胞的信息&#xff0c;包含细胞结构&#xff08;如大小、粒度、表面积…