首页 > 编程语言 > Python + edge-tts:一行代码,让你的文本轻松变成语音!

Python + edge-tts:一行代码,让你的文本轻松变成语音!

时间:2023-04-06 21:57:37浏览次数:57  
标签:zh CN Python tts edge 语音 --

大家好,我是树先生!今天给大家介绍一个 Python 库 edge-tts,可以在本地轻松将文本转换成语音,非常方便,并且完全免费! 先来听一下效果: https://www.bilibili.com/audio/au3843189?type=1 怎么样?是不是很熟悉,影视解说中常用开头:这个女人叫小美。。。  

edge-tts 介绍

edge-tts 是一个Python的库,继承了微软 Azure 的文本转语音功能(TTS),且是免费使用的。该库提供了一个简单的 API,可以将文本转换为语音,并且支持多种语言和声音。 只需要一行代码,即可将文本转换为语音!
edge-tts --text "Hello, world!" --write-media hello.mp3

 

详细步骤

1、安装 Python 环境,这里我用的 Python 3.11.1 开发环境,这一步不会的可以参考我之前发过的文章【保姆级】python最新版3.11.1开发环境搭建,看这一篇就够了(附PyCharm激活码)

2、安装 edge-tts 库。

pip install edge-tts

3、安装完成后,在 cmd 窗口中输入 edge-tts 命令,输出如下提示信息,说明已经安装完成。

4、尝试一下,生成第一个 TTS 语音吧,默认会在本地生成一个 hello.mp3 的音频文件。

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

5、这里使用的是默认的语音模型,你还可以通过 --list-voices 选项来查看可用的语音列表,然后通过 --voice 选项来选择你想要的声音。

edge-tts --list-voices
...

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

...

edge-tts --voice zh-CN-YunxiNeural --text "你好,我是程序员树先生" --write-media hello_tree.mp3

6、你还可以通过 --rate 和 --volume 选项来调整语速和音量,-50% 代表降低语速/音量。

edge-tts --rate=-50% --text "Hello, world!" --write-media hello_with_rate_halved.mp3
edge-tts --volume=-50% --text "Hello, world!" --write-media hello_with_volume_halved.mp3

7、以上是在 cmd 命令行中执行的指令,我们也可以使用 python 进行读取文件内容转语音,直接献上代码。

import edge_tts
import asyncio

TEXT = ""
with open('C:\\Users\\Tree\\Desktop\\text2voicetest.txt', 'rb') as f:
    data = f.read()
    TEXT = data.decode('utf-8')
print(TEXT)
voice = 'zh-CN-YunxiNeural'
output = 'C:\\Users\\Tree\\Desktop\\text2voicetest.mp3'
rate = '-4%'
volume = '+0%'


async def my_function():
    tts = edge_tts.Communicate(text=TEXT, voice=voice, rate=rate, volume=volume)
    await tts.save(output)


if __name__ == '__main__':
    asyncio.run(my_function())

在桌面创建一个 text2voicetest.txt 文件,写上你想写的内容,直接运行上述代码,即可生成相应的 MP3 文件,搞定!

 

使用场景

  • 你可以用它来为你的博客文章或者电子书添加语音朗读,让你的读者可以边听边学。
  • 你可以用它来为你的游戏或者动画添加语音配音,让你的角色更有个性和表现力。
  • 你可以用它来为你的 chatGPT 聊天机器人或者智能助理添加语音交互,让你的用户更方便和舒适。
  • 你可以用它来学习不同语言的发音,或者听取不同声音的风格和情感。
  • 你可以用它来在任何地方使用文本转语音服务,无论是云端、本地还是边缘设备。
 

项目地址

https://github.com/rany2/edge-tts

标签:zh,CN,Python,tts,edge,语音,--
From: https://www.cnblogs.com/sj-max/p/17294332.html

相关文章

  • Python ORM Pony SQLite数据库 常用操作
    Pony是一个高级的对象关系映射器ORM框架。Pony它能够使用Python生成器表达式和lambdas向数据库编写查询。Pony分析表达式的抽象语法树,并将其转换为SQL查询。支持SQLite,MySQL,PostgreSQL和Oracle等数据库,本文主要介绍PythonORMPony中SQLite数据库常用操作,及数据增加、删除、修......
  • Python生成随机验证码
    pipinstallpillow 实现代码importrandomfromPILimportImage,ImageDraw,ImageFont,ImageFilterdefcheck_code(width=120,height=30,char_length=5,font_file='kumo.ttf',font_size=28):code=[]img=Image.new(mode='RGB',si......
  • 02:python-函数
     正文#1:调用内置函数#调用绝对值函数abs()intAbs=abs(-20)print(intAbs)#调用最大函数intMax=max(1,2,-1,10)print(intMax)#数据类型转换print(int('124'))#字符串转intprint(int(12.34))#float转intprint(str(12.34))#float转字符串......
  • Python小练习:权重初始化(Weight Initialization)
    Python小练习:权重初始化(WeightInitialization)作者:凯鲁嘎吉-博客园 http://www.cnblogs.com/kailugaji/调用Pytorch中的torch.nn.init.xxx实现对模型权重与偏置初始化。1.weight_init_test.py1#-*-coding:utf-8-*-2#Author:凯鲁嘎吉CoralGajic3#https://w......
  • 【转】python pip 换源阿里云
    via:pythonpip换源阿里云-知乎(zhihu.com)pip换源阿里云只需要在cmd输入一条命令:pipconfigsetglobal.index-urlhttps://mirrors.aliyun.com/pypi/simple ......
  • opencv-python 4.13. 霍夫线变换
    前言霍夫变换是一种特征检测(featureextraction),被广泛应用在图像分析(imageanalysis)、计算机视觉(computervision)以及数位影像处理(digitalimageprocessing)。霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程......
  • Python字节
    python的文件操作中,一个中文字符等于3个字节。1B(byte,字节)=8bit(位)1KB(Kilobyte,千字节)=1024B =(10的3次方)B1MB(Megabyte,兆字节,百万字节,简称“兆”)=1024KB = (10的6次方)B1GB(GB,吉字节,千兆) = 1024MB1TB(TB,万亿字节,太字节) = 1024GB1PB(PB,千万亿字节,拍字节) ......
  • CS50-Python实验5,6
    Week5UnitTestsTestingmytwittr题目描述:测试ProblemSet2中Settingupmytwttr程序;题解:twttr.pydefmain():print("Output:",shorten(input("Input:")))defshorten(word):ans=""foriinword:ifi.lowe......
  • python系列007
    //使用类进行设备控制类文件内容importpyvisaimportnumpyasnpimporttimeclassPiDevice:def__init__(self):self.device_id=None#默认无设备连接deffind_device_address(self,device_id):rm=pyvisa.ResourceMa......
  • 20230406-Python-if判断-day4
    条件语句4月6场景假设:网吧上网去⽹吧进⻔想要上⽹必须做的⼀件事是做什么?(考虑重点)为什么要把身份证给⼯作⼈员?是不是就是为了判断是否成年?是不是如果成年可以上⽹?如果不成年则不允许上⽹?其实这⾥所谓的判断就是条件语句,即条件成⽴执⾏某些代码,条件不成⽴则不执⾏这些......