edge

您所在的位置:网站首页 tts项目 edge

edge

2023-04-09 12:51| 来源: 网络整理| 查看: 265

头条号:人工智能研究所 微信号:启示AI科技 视频号:启示科技

上期图文教程,我们分享了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=2.0 Downloading charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl (97 kB) |████████████████████████████████| 97 kB 20 kB/s Collecting yarl=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=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=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进行批量文本转语音

import edge_tts import asyncio TEXT = "" with open ('1.txt','rb') as f: data = f.read() TEXT = data.decode('utf-8') print(TEXT) voice = 'zh-CN-YunxiNeural' output = '4.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())

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

'gbk' codec can't decode byte 0xae in position 4: illegal multibyte sequence

然后我们定义好我们输入的5个参数

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

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

RuntimeWarning: coroutine 'Communicate.save' was never awaited tts.save(output) RuntimeWarning: Enable tracemalloc to get the object allocation traceback https://github.com/rany2/edge-tts 项目文件地址

NLP领域最近越来越火,特别是ChatGPT的流行开始,NLP领域一举打破了CV领域,让更多的人看到了人工智能的魅力,这里介绍一下transformer模型,其NLP领域必然绕不开的一个模型。加入圈子,学习更多transformer模型。

更多transformer模型 VIT模型 swin transformer模型 参考头条号:人工智能研究所

体验ChatGPT功能,请加入AI ChatGPT圈子



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3