外链论坛

 找回密码
 立即注册
搜索
查看: 4|回复: 0

edge-tts微软文本转语音库,来听听这些语音是不是很熟练?

[复制链接]

2565

主题

144

回帖

9914万

积分

论坛元老

Rank: 8Rank: 8

积分
99140921
发表于 16 小时前 | 显示全部楼层 |阅读模式

上期图文教程,咱们分享了Azure设备学习的文本转语音的账号申请与API申请的仔细过程介绍了基于python3实现Azure设备学习文本转语音功能的代码实现过程,虽然咱们能够运用Azure账号免费供给一年的试用期,然则毕竟是要付费的,咱们的API没法长时间运用,好在微软发布了edge-tts库,此库继承了Azure的文本转语音功能,且是免费运用的,本期咱们就介绍一下edge-tts的运用许你听到如下生成的声音,你会发掘很是熟练

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

pip install edge-tts

这儿本期的代码基于python3.9,在自己的cmd窗口中,输入以上安装命令,便会自动安装Edge-TTS

Collecting edge-tts Downloading edge_tts-6.1.3-py3-none-any.whl (26 kB) Collecting aiohttp>=3.8.0 Downloading aiohttp-3.8.4-cp39-cp39-win_amd64.whl (323 kB) |████████████████████████████████| 323 kB 17 kB/s Collecting aiosignal>=1.1.2 Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB) Collecting charset-normalizer<4.0,>=2.0 Downloading charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl (97 kB) |████████████████████████████████| 97 kB 20 kB/s Collecting yarl<2.0,>=1.0 Downloading yarl-1.8.2-cp39-cp39-win_amd64.whl (56 kB) |████████████████████████████████| 56 kB 20 kB/s Collecting frozenlist>=1.1.1 Downloading frozenlist-1.3.3-cp39-cp39-win_amd64.whl (34 kB) Collecting multidict<7.0,>=4.5 Downloading multidict-6.0.4-cp39-cp39-win_amd64.whl (28 kB) Collecting attrs>=17.3.0 Downloading attrs-22.2.0-py3-none-any.whl (60 kB) |████████████████████████████████| 60 kB 20 kB/s Collecting async-timeout<5.0,>=4.0.0a3 Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB) Collecting idna>=2.0 Using cached idna-3.4-py3-none-any.whl (61 kB) Installing collected packages: frozenlist, aiosignal, charset-normalizer, multidict, idna, yarl, attrs, async-timeout, aiohttp, edge-tts Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-22.2.0 charset-normalizer-3.1.0 edge-tts-6.1.3 frozenlist-1.3.3 idna-3.4 multidict-6.0.4 yarl-1.8.2

安装完成后,咱们能够输入edge-tts,若cmd窗口中输出提示信息,说明已然安装完成。

usage: 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%,当然若是加号,便是增多多少。

当然,以上是在CMD命令行中执行的指令,咱们能够运用python进行批量文本转语音

importedge_ttsimport asyncio TEXT = "" with open (1.txt,rb) as f: data = f.read() TEXT = data.decode(utf-8) print(TEXT) voice = zh-CN-YunxiNeuraloutput =4.mp3 rate = -4% volume = +0% async def my_function(): tts = edge_tts.Communicate(text = TEXT,voice = voice,rate = rate,volume=volume) awaittts.save(output)if __name__ == __main__: asyncio.run(my_function())

首要咱们导入edge_tts与asyncio库,并运用with open函数打开一个txt文件。txt便是咱们要生成语音的文本文件。这儿咱们通常是输入的中文,因此呢这儿咱们运用rb读取文件,而后经过decode函数转换一下,避免类似如下的问题

gbk codec cant decode byte 0xae in position 4: illegal multibyte sequence

而后咱们定义好咱们输入的5个参数

text = TEXT 需要转换的文本voice = voice 选取的语音rate = rate 语速volume=volume 音量output 输出文件,通常是MP3文件

而后咱们运用async进行异步请求,若是直接运行,会提示如下错误,因此呢咱们需要运用异步处理的方式。

RuntimeWarning: coroutine Communicate.savewas never awaited tts.save(output) RuntimeWarning: Enable tracemalloc toget the object allocation tracebackhttps://github.com/rany2/edge-tts 项目文件位置

NLP行业近期越来越火,尤其是ChatGPT的流行起始,NLP行业一举打破了CV行业,让更加多的人看到了人工智能的魅力,这儿介绍一下transformer模型,其NLP行业必然绕不开的一个模型。

专栏
动画详解transformer与变体模型
作者:人工智能科研
169.9币
57人已购
查看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-3 18:17 , Processed in 0.064156 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.