blog

当前位置:首页>文章中心>blog
python edge-tts库实现文字转语音
blog 2024-02-09 1 阅读

python edge-tts库实现文字转语音

小泥巴 小泥吧科技 2024-02-09
Edge-TTS是一个Python库,允许您从 Python 代码中使用 Microsoft Edge 的在线文本转语音服务或使用提供的 or 命令。它使用微软的Azure Cognitive Services来实现文本到语音转换(TTS)。该库提供了一个简单的API,可以将文本转换为语音,并且支持多种语言和声音,输出的音频文件更接近正常人的发音。 安装 edge-tts库
pip install edge-tts
查看edge-tts的命令
usage: edge-tts [-h] [-t TEXT] [-f FILE] [-v VOICE] [-l]
                [--rate RATE] [--volume VOLUME] [--pitch PITCH]
                [--words-in-cue WORDS_IN_CUE] [--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
参数说明 --text 【参数】 指明要保存的mp3的文本。 --write-media 【参数】 指明保存的mp3文件路径。 --voice 【参数】指明了使用哪种语音和风格的发音人,例如zh-CN-YunjianOnlineNatural。系统中可以通过edge-tts --list-voices 查看更多的语音和风格。 --rate 【参数】调整语速,例如-50%,慢速了50%。 --volume 【参数】 调整音量 例如+10% ,声音提高了10%。 -f 【参数】指明要转换语音的文本文件,例如一个txt文件。 语音列表 查看edge-tts支持的语音列表命令:edge-tts --list-voices,使用edge-tts --voice 语音Name即可以使用。 以下是支持中文的语音:
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
常用命令实例
#使用命令行Edge-TTS来产生语音
edge-tts --text "Hello, world!" --write-media hello.mp3

#edge-tts查看支持的语音。
edge-tts --list-voices

#添加--voice命令,指定输出的语音。
edge-tts --voice zh-CN-YunxiNeural --text "hello 大家好" --write-media hello.mp3

#添加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%,当然若是加号,便是增加多少。 使用示例
edge-tts --voice zh-CN-YunxiNeural --rate=-4% --text "hello 大家好,我是Python与
Django学习的小编,欢迎大家阅读我的文章,如果喜欢请点赞收藏转发!谢谢您!" --write-media hello1.mp3
#输出结果
WEBVTT

00:00:00.102 --> 00:00:03.592
hello 大家 好 我 是 Python 与 Django 学习 的

00:00:03.605 --> 00:00:07.563
小编 欢迎 大 家阅读 我 的 文章 如果 喜欢 请

00:00:07.563 --> 00:00:10.039
点赞 收藏 转发 谢谢 您
输出的mp3,大家请试听 批量实现文本转换为语音 通过打开本地demo.txt文本,将其传递传递给edge-tts进行语音转化。通过decode函数转换一下,是为了字符类型报错。
import edge_tts
import asyncio
TEXT = ""
with open ('demo.txt','rb') as f:
    data = f.read()
    TEXT = data.decode('utf-8')
print(TEXT)
voice = 'zh-CN-YunxiNeural'
output = 'demo.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())
使用async进行异步请求,若是直接运行,会提示如下错误
RuntimeWarning: coroutine 'Communicate.save' was never awaited
  tts.save(output)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
 
相关标签:

发表评论:

评论记录:

未查询到任何数据!
QQ咨询
回电话
回拨通话

我们稍后回拨您的电话

座机请加区号

微信联系
微信扫一扫
微信二维码

扫码加微信