Coqui TTS 安装与测试

news/2024/11/8 20:30:15/

前言

本篇记录一下 Coqui TTS 的安装。Coqui-TTS 的主要作者是德国人,这个库似乎之前和 Mozilla 的 TTS (https://github.com/mozilla/TTS)有千丝万缕的关系,但是现在后者的 TTS 已经停止更新,而 Coqui TTS 更新一直很稳定,是目前少数几个更新比较稳定的开源语音库。(其他有 ESPNET,SpeechBrain 等)

GitHub 官网:

GitHub - coqui-ai/TTS: 🐸💬 - a deep learning toolkit for Text-to-Speech, battle-tested in research and production🐸💬 - a deep learning toolkit for Text-to-Speech, battle-tested in research and production - GitHub - coqui-ai/TTS: 🐸💬 - a deep learning toolkit for Text-to-Speech, battle-tested in research and productionhttps://github.com/coqui-ai/TTS

正文

首先直接跳到 Readme 的安装部分。

pip install TTS

或者

git clone https://github.com/coqui-ai/TTS
pip install -e .[all,dev,notebooks]  # Select the relevant extras

直接用 pip 感觉就不太行,当然要 git clone 一下,极客一点。结果第二行就没看懂,pip install -e 是什么,后面方括号是什么……(-e 表示拉了一个链接,目录的更新实时生效;方括号及方括号内的东西其实不加也行)

于是还是 pip install TTS 了

这里普通用户应该直接开始漫长等待就好了,注意 TTS 是依赖 torch 的,由于 torch 庞大的体积,所以可能是要等很久。但是我这里由于环境问题,只能用特定版本的 torch,否则用不了 GPU。。所以就要先安装 torch 在安装 TTS了,避免自动安装的 torch 无法使用。这里 TTS 的依赖是 torch 版本大于 1.7 即可。

下面是克隆环境的 conda 的命令:

conda create --name coquiTTS --clone espnet
--clone 命令能够复制之前的库,速度应该是稍微快一点,但是实测会重新下载 torch,不知道是什么原因,暴躁的我直接 cp 命令手动拷贝了hh(目前似乎没有什么坏的影响,本来还以为会有一些元文件被覆盖会出错

好,影响就是我 pip 安装的包都安装回原来的路径了,手动捂脸哭,本来想着不要影响原来的环境,正确的解法是 加上 --offline

conda create --name coquiTTS --clone original_env  --offline

不知道为什么,torch 本来我本机环境有,还是会要自己下载,offline 模式会报错,说尝试 offline 模式建立远程连接。所以只能

conda create --name coquiTTS --clone original_env

复制环境后,pip 安装 TTS,会有很多乱七八糟的依赖,所以记得设置源。不然会很慢:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install TTS

安装完会有很长很长的输出。(结果是我给安装到原来的环境里了)

测试

先是官方的测试。

tts --list_models

这里的输出是(TTS版本 0.8.0):

 Name format: type/language/dataset/model
 1: tts_models/multilingual/multi-dataset/your_tts
 2: tts_models/en/ek1/tacotron2
 3: tts_models/en/ljspeech/tacotron2-DDC
 4: tts_models/en/ljspeech/tacotron2-DDC_ph
 5: tts_models/en/ljspeech/glow-tts
 6: tts_models/en/ljspeech/speedy-speech
 7: tts_models/en/ljspeech/tacotron2-DCA
 8: tts_models/en/ljspeech/vits
 9: tts_models/en/ljspeech/fast_pitch
 10: tts_models/en/vctk/vits
 11: tts_models/en/vctk/fast_pitch
 12: tts_models/en/sam/tacotron-DDC
 13: tts_models/en/blizzard2013/capacitron-t2-c50
 14: tts_models/en/blizzard2013/capacitron-t2-c150
 15: tts_models/es/mai/tacotron2-DDC
 16: tts_models/fr/mai/tacotron2-DDC
 17: tts_models/uk/mai/glow-tts
 18: tts_models/zh-CN/baker/tacotron2-DDC-GST
 19: tts_models/nl/mai/tacotron2-DDC
 20: tts_models/de/thorsten/tacotron2-DCA
 21: tts_models/de/thorsten/vits
 22: tts_models/de/thorsten/tacotron2-DDC
 23: tts_models/ja/kokoro/tacotron2-DDC
 24: tts_models/tr/common-voice/glow-tts
 25: tts_models/it/mai_female/glow-tts
 26: tts_models/it/mai_female/vits
 27: tts_models/it/mai_male/glow-tts
 28: tts_models/it/mai_male/vits
 29: tts_models/ewe/openbible/vits
 30: tts_models/hau/openbible/vits
 31: tts_models/lin/openbible/vits
 32: tts_models/tw_akuapem/openbible/vits
 33: tts_models/tw_asante/openbible/vits
 34: tts_models/yor/openbible/vits
 1: vocoder_models/universal/libri-tts/wavegrad
 2: vocoder_models/universal/libri-tts/fullband-melgan
 3: vocoder_models/en/ek1/wavegrad
 4: vocoder_models/en/ljspeech/multiband-melgan
 5: vocoder_models/en/ljspeech/hifigan_v2
 6: vocoder_models/en/ljspeech/univnet
 7: vocoder_models/en/blizzard2013/hifigan_v2
 8: vocoder_models/en/vctk/hifigan_v2
 9: vocoder_models/en/sam/hifigan_v2
 10: vocoder_models/nl/mai/parallel-wavegan
 11: vocoder_models/de/thorsten/wavegrad
 12: vocoder_models/de/thorsten/fullband-melgan
 13: vocoder_models/de/thorsten/hifigan_v1
 14: vocoder_models/ja/kokoro/hifigan_v1
 15: vocoder_models/uk/mai/multiband-melgan
 16: vocoder_models/tr/common-voice/hifigan
 

下面是查看模型信息

tts --model_info_by_name tts_models/tr/common-voice/glow-tts

> model type : tts_models
> language supported : tr
> dataset used : common-voice
> model name : glow-tts
> description : Turkish GlowTTS model using an unknown speaker from the Common-Voice dataset.
> default_vocoder : vocoder_models/tr/common-voice/hifigan

tts --text "text for TTS" --out_path ./test_speech.wav

终于到了激动人心的时刻,要合成语音了。执行命令后,开始自动下载预训练模型,用了 3 分钟,经典连接中断报错。网络环境,哎。

 > Downloading model to /root/.local/share/tts/tts_models--en--ljspeech--tacotron2-DDC
Traceback (most recent call last):File "/root/miniconda3/envs/coqui/lib/python3.8/site-packages/urllib3/connectionpool.py", line 703, in urlopenhttplib_response = self._make_request(File "/root/miniconda3/envs/coqui/lib/python3.8/site-packages/urllib3/connectionpool.py", line 449, in _make_requestsix.raise_from(e, None)File "<string>", line 3, in raise_fromFile "/root/miniconda3/envs/coqui/lib/python3.8/site-packages/urllib3/connectionpool.py", line 444, in _make_requesthttplib_response = conn.getresponse()File "/root/miniconda3/envs/coqui/lib/python3.8/http/client.py", line 1348, in getresponseresponse.begin()File "/root/miniconda3/envs/coqui/lib/python3.8/http/client.py", line 316, in beginversion, status, reason = self._read_status()File "/root/miniconda3/envs/coqui/lib/python3.8/http/client.py", line 285, in _read_statusraise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without responseDuring handling of the above exception, another exception occurred:

注意!Coqui 下载模型失败后,并没有检查有没有下载成功。这个再次合成,会报错。需要自己手动删掉下载的目录,再重新下载,否则会一直报错。参考链接:https://github.com/coqui-ai/TTS/issues/927

cd ~/.local/share/tts/
rm -r tts_models--en--ljspeech--tacotron2-DDC/

然后非常玄学的事情发生了,我再次尝试下载时,没有做任何修改,就下载成功了。所以同学们可以多尝试几次。

tts --text "text for TTS" --out_path ./test_speech.wav
100%|████████████████████████████                                                                                                                                                    █████████████████████████████████                                                                                                                                                          █████████████████████████████████                                                                                                                                                          █████████████████████████████████                                                                                                                                                          ████████████████████| 113M/113M [                                                                                                                                                          05:58<00:00, 315kiB/s]> Model's license - apache 2.0> Check https://choosealicense.c                                                                                                                                                          om/licenses/apache-2.0/ for more                                                                                                                                                           info.> Downloading model to /root/.lo                                                                                                                                                          cal/share/tts/vocoder_models--en-                                                                                                                                                          -ljspeech--hifigan_v2
100%|█| 3.80M/3.80M [00:01<00:00,> Model's license - apache 2.0> Check https://choosealicense.c                                                                                                                                                          om/licenses/apache-2.0/ for more                                                                                                                                                           info.> Using model: Tacotron2> Setting up Audio Processor...| > sample_rate:22050| > resample:False| > num_mels:80| > log_func:np.log| > min_level_db:-100| > frame_shift_ms:None| > frame_length_ms:None| > ref_level_db:20| > fft_size:1024| > power:1.5| > preemphasis:0.0| > griffin_lim_iters:60| > signal_norm:False| > symmetric_norm:True| > mel_fmin:0| > mel_fmax:8000.0| > pitch_fmin:0.0| > pitch_fmax:640.0| > spec_gain:1.0| > stft_pad_mode:reflect| > max_norm:4.0| > clip_norm:True| > do_trim_silence:True| > trim_db:60| > do_sound_norm:False| > do_amp_to_db_linear:True| > do_amp_to_db_mel:True| > do_rms_norm:False| > db_level:None| > stats_path:None| > base:2.718281828459045| > hop_length:256| > win_length:1024> Model's reduction rate `r` is                                                                                                                                                           set to: 1> Vocoder Model: hifigan> Setting up Audio Processor...| > sample_rate:22050| > resample:False| > num_mels:80| > log_func:np.log| > min_level_db:-100| > frame_shift_ms:None| > frame_length_ms:None| > ref_level_db:20| > fft_size:1024| > power:1.5| > preemphasis:0.0| > griffin_lim_iters:60| > signal_norm:False| > symmetric_norm:True| > mel_fmin:0| > mel_fmax:8000.0| > pitch_fmin:0.0| > pitch_fmax:640.0| > spec_gain:1.0| > stft_pad_mode:reflect| > max_norm:4.0| > clip_norm:True| > do_trim_silence:False| > trim_db:60| > do_sound_norm:False| > do_amp_to_db_linear:True| > do_amp_to_db_mel:True| > do_rms_norm:False| > db_level:None| > stats_path:None| > base:2.718281828459045| > hop_length:256| > win_length:1024> Generator Model: hifigan_gener                                                                                                                                                          ator> Discriminator Model: hifigan_d                                                                                                                                                          iscriminator
Removing weight norm...> Text: text for TTS> Text splitted to sentences.
['text for TTS']> Processing time: 0.78575992584                                                                                                                                                          22852> Real-time factor: 0.4602105388                                                                                                                                                          021246> Saving output to ./test_speech                                                                                                                                                          .wav

后面这个库应该是提供 tts server 开一个 HTTP 端口做在线 demo 的,但是我这里因为环境问题可能要之后更了。

后记

20230217 更新,发现 TTS 库会限定 librosa==0.8.0,导致我的 librosa 版本不对,然后画频谱图和 Matplotlib 的 API 会不兼容,进而报错。于是默认环境的 TTS 就卸载了。


http://www.ppmy.cn/news/806266.html

相关文章

ASR技术和TTS技术含义及区别

1、TTS和ASR的概念区别 我们比较熟悉的ASR技术&#xff08;Automatic Speech Recognition&#xff0c;语音识别&#xff09;&#xff0c;是将声音转化为文字&#xff0c;可类比于人类的耳朵。 而TTS技术&#xff08;Text-To-Speech&#xff0c;语音合成&#xff09;&#xff…

TTS什么意思,缩写,微软TTS语音引擎(中文)5.1 “TTS”是“文本到语音(Text To Sound)”的简称

微软TTS语音引擎(中文)5.1 “TTS”是“文本到语音&#xff08;Text To Sound&#xff09;”的简称&#xff0c;TTS语音引擎为我们提供清晰和标准的美语发音。TTS5.1目前支持英语和简体中文发音。Windows98本身不支持汉语语音引擎&#xff0c;如果你使用的操作系统是Windows98&a…

windows配置启动若依前后端项目

一、后端 1、环境准备 JDK8、Redis、Mysql、Maven【并配置镜像源】 以上工具全部使用msi/exe安装&#xff0c;并勾选添加到环境变量&#xff0c;如果没有添加到环境变量可以参考其他博主关于每种怎么配置的情况 mysql新增一个目录名为ry-vue的空数据库 2、前往若依官网下载…

frida-ps 连接模拟器

问题描述&#xff1a;frida-ps -help 只有连接usb的选择&#xff0c;没有连接模拟器的选择. C:\Users\xxx>frida-ps -h Usage: frida-ps [options]Options:--version show programs version number and exit-h, --help show this help message and …

游戏贴图高清化MOD简易教程

高清MOD取自这个帖子:https://forums.ppsspp.org/showthread.php?tid26288&highlightFinalFantasy​forums.ppsspp.org 前段时间最终幻想7重置版demo上线PS4&#xff0c;试玩了下&#xff0c;果然虚幻4引擎的表现力不容置疑。 最终幻想7重置版 Demo的流程比较短&#xf…

Android Studio配置联想模拟器,联想模拟器端口号

联想模拟器端口号&#xff1a; 127.0.0.1:11509 在Android Studio控制台输入&#xff1a;

linux ps2模拟器设置,教你PS2模拟器设置手柄的方法

PS2模拟器是一款免费、并且源代码开放的软件&#xff0c;发布于在GNU通用公共许可证下&#xff0c;是一款PlayStation 2模拟器软件。PS2模拟器是世上第一个成功模拟PS2商业游戏的PCSX2模拟器。PS2模拟器下载使用C语言编写&#xff0c;可以在32位微软Windows和Linux操作系统下使…

【PS3模拟器N2N私服联机教程】

PS3模拟器N2N私服联机教程 PS3模拟器现在已经兼容高达系列游戏联机&#xff0c;为了获得更好的游戏体验&#xff0c;我开了三个RPCN私服&#xff0c;都需要配合N2N才能使用。 每个RPCN私服对应不同的N2N服务器地址 使用N2N 必须连接到我的N2N服务器才能使用我的RPCN私服&…