上期图文教程,咱们分享了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.mp3rate=-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与变体模型
作者:人工智能科研所
查看
|