Coqui TTS docker 使用记录

news2024/11/17 14:33:27

前言

之前介绍过 Coqui TTS 的安装,不过那个环境被我玩挂掉了……

这次记录一下 docker 版本的使用。

参考网址:Docker images - TTS 0.11.1 documentation

正文

首先按照官网指示先把镜像 pull 下来。(后记:确保 GPU driver 支持 11.8 以上的 CUDA)

docker pull ghcr.io/coqui-ai/tts

至少大约4 GB 以上的内容需要下载,所以要等一会儿了。

好,下载还专门找了 GPU 版本下载,结果发现自己不配。

For the GPU version, you need to have the latest NVIDIA drivers installed. With nvidia-smi you can check the CUDA version supported, it must be >= 11.8

需要保证 CUDA 能支持 11.8 以上的显卡驱动才可以,在下老显卡只配 CPU 版了,白下了。(我使用 CUDA 11.4,成功运行并报错)

重新下载一下 CPU 版本

docker pull ghcr.io/coqui-ai/tts-cpu

执行测试命令。

docker run --rm -v ~/tts-output:/root/tts-output ghcr.io/coqui-ai/tts-cpu --text "Hello." --out_path /root/tts-output/hello.wav

这条命令会运行容器,生成 hello 的语音,并保存在 ~/tts-output 这个目录。然后运行一下,需要下载预训练模型。网络原因,一阵好等了……

 等了 17 分钟,终于下载好了默认模型。下面是输出信息。

user@server:~$ docker run --rm -v ~/tts-output:/root/tts-output ghcr.io/coqui-ai/tts-cpu --text "Hello." --out_path /root/tts-output/hello.wav
  0%|          | 0.00/113M [00:00<?, ?iB/s] > Downloading model to /root/.local/share/tts/tts_models--en--ljspeech--tacotron2-DDC
100%|██████████| 113M/113M [17:07<00:00, 110kiB/s]
 > Model's license - apache 2.0
 > Check https://choosealicense.com/licenses/apache-2.0/ for more info.
 > Downloading model to /root/.local/share/tts/vocoder_models--en--ljspeech--hifigan_v2
100%|██████████| 3.80M/3.80M [00:01<00:00, 2.80MiB/s]
 > Model's license - apache 2.0
 > Check https://choosealicense.com/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:1.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:1.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_generator
 > Discriminator Model: hifigan_discriminator
Removing weight norm...
 > Text: Hello.
 > Text splitted to sentences.
['Hello.']
 > Processing time: 0.36794090270996094
 > Real-time factor: 0.3480223449191248
 > Saving output to /root/tts-output/hello.wav

可以在 ~/tts-output 目录找到新生成的语音。太短了,听感还算可以。难过的是忘了去掉 --rm ,执行完毕后容器给我删了……我下了20分钟的模型啊……

docker + 服务器程序测试

接下来试一下用 docker 开一个服务器。下面命令启动容器,相比官方文档,我删除了 --rm ,避免运行后容器失效。-p 后面的 40499 是宿主机映射的端口。

docker run -it -p 40499:5002  --entrypoint /bin/bash ghcr.io/coqui-ai/tts-cpu

执行后进入容器内的终端。输入下面的命令。

python3 TTS/server/server.py --list_models #To get the list of available models

输出如下:

 Name format: type/language/dataset/model
 1: tts_models/multilingual/multi-dataset/your_tts
 2: tts_models/bg/cv/vits
 3: tts_models/cs/cv/vits
 4: tts_models/da/cv/vits
 5: tts_models/et/cv/vits
 6: tts_models/ga/cv/vits
 7: tts_models/en/ek1/tacotron2
 8: tts_models/en/ljspeech/tacotron2-DDC
 9: tts_models/en/ljspeech/tacotron2-DDC_ph
 10: tts_models/en/ljspeech/glow-tts
 11: tts_models/en/ljspeech/speedy-speech
 12: tts_models/en/ljspeech/tacotron2-DCA
 13: tts_models/en/ljspeech/vits
 14: tts_models/en/ljspeech/vits--neon
 15: tts_models/en/ljspeech/fast_pitch
 16: tts_models/en/ljspeech/overflow
 17: tts_models/en/ljspeech/neural_hmm
 18: tts_models/en/vctk/vits
 19: tts_models/en/vctk/fast_pitch
 20: tts_models/en/sam/tacotron-DDC
 21: tts_models/en/blizzard2013/capacitron-t2-c50
 22: tts_models/en/blizzard2013/capacitron-t2-c150_v2
 23: tts_models/es/mai/tacotron2-DDC
 24: tts_models/es/css10/vits
 25: tts_models/fr/mai/tacotron2-DDC
 26: tts_models/fr/css10/vits
 27: tts_models/uk/mai/glow-tts
 28: tts_models/uk/mai/vits
 29: tts_models/zh-CN/baker/tacotron2-DDC-GST
 30: tts_models/nl/mai/tacotron2-DDC
 31: tts_models/nl/css10/vits
 32: tts_models/de/thorsten/tacotron2-DCA
 33: tts_models/de/thorsten/vits
 34: tts_models/de/thorsten/tacotron2-DDC
 35: tts_models/de/css10/vits-neon
 36: tts_models/ja/kokoro/tacotron2-DDC
 37: tts_models/tr/common-voice/glow-tts
 38: tts_models/it/mai_female/glow-tts
 39: tts_models/it/mai_female/vits
 40: tts_models/it/mai_male/glow-tts
 41: tts_models/it/mai_male/vits
 42: tts_models/ewe/openbible/vits
 43: tts_models/hau/openbible/vits
 44: tts_models/lin/openbible/vits
 45: tts_models/tw_akuapem/openbible/vits
 46: tts_models/tw_asante/openbible/vits
 47: tts_models/yor/openbible/vits
 48: tts_models/hu/css10/vits
 49: tts_models/el/cv/vits
 50: tts_models/fi/css10/vits
 51: tts_models/hr/cv/vits
 52: tts_models/lt/cv/vits
 53: tts_models/lv/cv/vits
 54: tts_models/mt/cv/vits
 55: tts_models/pl/mai_female/vits
 56: tts_models/pt/cv/vits
 57: tts_models/ro/cv/vits
 58: tts_models/sk/cv/vits
 59: tts_models/sl/cv/vits
 60: tts_models/sv/cv/vits
 61: tts_models/ca/custom/vits
 62: tts_models/fa/custom/glow-tts
 Name format: type/language/dataset/model
 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_models/zh-CN/baker/tacotron2-DDC-GST,我们这里就测试这个模型。(后来发现还有几个多国语言版本)

注意这里如果按照官网的写法就是下面,这样执行,是没有进度条的……非常的焦虑

python3 TTS/server/server.py --model_name tts_models/zh-CN/baker/tacotron2-DDC-GST 

大约等了半个小时以上吧,服务器程序成功运行,可惜这里误操作不小心把窗口关了,没有截图了……我重新运行了一下。(这里记得要看容器的端口映射)

 

 左侧的 {"0": 0.1} 是一个 python 字典格式的字符串,测试了几次发现,基本就是"0" 表示 style 0,第 0 种分割,然后后面的 0.1 是对应的权重,试了试,权重超过 0.2 就没法听了。

style 换成其他数字,就会略微改变说话风格,但是影响不大,音色没有改变。

整体来说,测试了几个句子,听感还可以,就是有点机械但是能听清楚内容,略有杂音。人类在安静情况下应该还是能明显辨别是合成语音。

值得注意的一点是,记得给输入内容加句号,否则生成的语音会很地狱。有兴趣的朋友可以测试一下输入 0.5 不加标点符号进行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重生之我是赏金猎人-番外篇-记一次层层突破的攻防演练

0x00 前言 本文简单记述了一下本人在某攻防演练过程中一次层层突破的有趣经历 技术性一般&#xff0c;但是层层突破属实艰难&#xff0c;并用到了比较多的思路&#xff0c;还望各位大佬多多指教 0x01 SSO账号获取 由于目标是某大学&#xff0c;对外开放的服务基本上都是一些…

CSS 预处理工具 Less 的介绍及使用 步骤

文章目录Less是什么Less的使用方法Less 中的注释Less 中的变量Less 中的嵌套Less 中的混合&#xff08;Mixin&#xff09;Less 中的运算Less 中的转译Less 中的作用域Less 中的导入Less实用实例文字超出省略文字垂直居中定位上下左右居中Less是什么 Less 是一门 CSS 预处理语言…

spring的事务控制

1.调用这个方法的对象是否是spring的代理对象&#xff08;$CGLIB结尾的&#xff09; 2.这个方法是否是加了Transactional注释 都符合才可以被事物控制 如果调用方法的对象没有被事物控制&#xff0c;那么被调用的方法即便是加了Transactional也是没用的 事务失效情况&#xf…

基于MATLAB计算MIMO信道容量(附完整代码与分析)

目录 一.介绍 二. 代码 三. 运行结果及分析 3.1 MIMO信道容量&#xff1a;固定发射天线数为4 3.2 MIMO信道容量&#xff1a;固定接收天线数为4 3.3 AWGN信道与瑞利信道容量 四. 总结 一.介绍 本文章将在MATLAB环境中分析MIMO信道容量&#xff0c;AWGN信道容量&#xf…

秒懂SpringBoot之全网最易懂的Spring Security教程

[版权申明] 非商业目的注明出处可自由转载 出自&#xff1a;shusheng007 文章目录概述简介原理默认实现使用Token认证方案JWT认证流程自定义Authentication Provider自定义Provider修改配置认证失败与授权失败处理认证失败处理授权失败处理支持方法级别的授权总结源码概述 现如…

PMP好考吗,有多大的价值?

关于PMP考试题型及考试内容&#xff0c;PMP考试共200道单选题&#xff0c;其中25道题不计分&#xff0c;会被随机抽查&#xff0c;答对106道题以上通过考试&#xff0c;参考比例106/175&#xff0c;60.57%估计答对&#xff08;10625&#xff09;道题及上即可通过&#xff0c;参…

全国进入裁员潮,到底是大厂难混?还是我技不如人?

前言 面对裁员&#xff0c;每个人的心态不同。他们有的完全没有料想到自己会被裁&#xff0c;有的却对裁员之事早有准备。大多数人&#xff0c;我想是焦虑失落的吧。 01 “降本增效”&#xff0c;HR怒提裁员刀 小默 | 32岁 芯片行业 人力资源 1月份&#xff0c;身处芯片行业H…

额度系统设计

一、额度生命周期额度生效/失效&#xff1a;授信的时候风控返回用户额度&#xff0c;当额度有效期到期之后额度失效&#xff1b;额度预扣/占用/释放&#xff1a; 当客户来提款的时候&#xff0c;只要提款金额小于授信额度(可用额度)时&#xff0c;先预扣&#xff0c;处理完系统…

如何让APP在Google Play中成为特色

Google Play覆盖了 190 多个地区&#xff0c;数十亿的用户&#xff0c;所以开发者都会希望APP在应用商店中获得推荐位。 Google Play 上的精选热门应用类型&#xff1a;热门游戏或应用&#xff0c;畅销应用&#xff0c;安装量增长的应用&#xff0c;产生最多收入的应用。 那么…

Pdfium.Net SDK 4.78.2704 完美Crack/Ptach

不限制时&#xff0c;/不限PDF体积、、、、、// version: 4.78.2704 | file size: 52.7 Mb Pdfium .Net SDK C# PDF 库 从头开始或从一堆扫描图像创建 PDF 编辑、合并、拆分和操作 PDF&#xff0c;提取文本和图像 嵌入独立的 Winforms 或 WPF PDF 查看器 支持&#xff1a;.Net…

软件性能测试方案怎么编写?权威的性能测试报告如何申请?

软件性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。性能测试在软件的质量保证中起着重要的作用&#xff0c;它包括的测试内容丰富多样。负载测试和压力测试都属于性能测试&#xff0c;两者可以结合进行。 一、软件性能测…

java中调用配置文件中的数据库路径及账号密码

项目场景&#xff1a; 有的时候因为项目的需求,所以需要隐藏数据库的路径,账号密码 解决方案&#xff1a; 话不多说直接上代码 这个分情况而定的: 在jdbc框架中获取方法: 1.获取数据库 Class.forName("oracle.jdbc.OracleDriver"); 2.获取路径,账号,密码 Properti…

pytorch零基础实现语义分割项目(一)——数据概况及预处理

语义分割之数据加载项目列表前言数据集概况数据组织形式数据集划分数据预处理均值与方差结尾项目列表 语义分割项目&#xff08;一&#xff09;——数据概况及预处理 语义分割项目&#xff08;二&#xff09;——标签转换与数据加载 前言 在本专栏的上一个项目中我们介绍了…

Python 使用pandas处理Excel —— 快递订单处理 数据匹配 邮费计算

问题背景 有表A&#xff0c;其数据如下 关键信息是邮寄地址和单号。 表B&#xff1a; 关键信息是运单号和重量 我们需要做的是&#xff0c;对于表A中的每一条数据&#xff0c;根据其单号&#xff0c;在表B中查找到对应的重量。 在表A中新增一列重量&#xff0c;将刚才查到的…

防水防汗耳机什么品牌好?四款防水效果不错的蓝牙耳机推荐

近年来蓝牙耳机中可谓是火爆全网&#xff0c;非常受到大家追捧&#xff0c;当然&#xff0c;也随着蓝牙耳机的增长&#xff0c;很多人不知道蓝牙耳机该如何选择&#xff0c;其实蓝牙耳机不止要音质表现好&#xff0c;佩戴体验好&#xff0c;还有着防水性能不能差&#xff0c;不…

window字符集与利用向导创建mfc

1.字节对应英语1个字符对应1个字节 多字节中文1个字符对应多个字节 宽字节 Unicode utf-8 3个 GBK2个2.多字节转换 为宽字节TEXT是由自适应编码的转换 TCHER 自适应编码的转换 _T是由自适应编码转换&#xff0c;L("")多字节转宽字节3.统计字符串长度统计字符串长度 c…

Ambari2.7.5集群搭建详细流程

0 说明 本文基于本地虚拟机从零开始搭建ambari集群 1 前置条件 1.1 本地虚拟机环境 节点角色ambari-1ambari-server ambari-agentambari-2ambari-agentambari-3ambari-agent 1.2 安装包 1.3 修改主机名并配置hosts文件 hostnamectl set-hostname ambari-1 hostnamectl se…

2022 年度回顾|The Sandbox 开放元宇宙的发展历程

2023 年又会为大家带来什么呢&#xff1f; 2022 年是很值得庆祝的一年。回顾这一年&#xff0c;The Sandbox 开放游戏元宇宙达成诸多里程碑。我们努力让各方面都更接近我们的愿景&#xff1a;一个开放的、去中心化的元宇宙&#xff0c;通过真正的数位所有权赋予创作者权力。社区…

mysql 通过客户端执行now()函数,时差为8小时

1.场景演示 假设当前北京时间是&#xff1a;2023-02-17 19:31:37。明显执行出来的结果和实际时间晚8小时。 所用Mysql版本为&#xff1a; 解决方式&#xff1a; 需要在my.conf文件中的[mysqld]下添加 default-time-zoneAsia/Shanghai 由于这个mysql8.0是通过 docker 安装的&…

【Python合集】我见过最有趣好玩强大的代码都在这里,涨见识啦~建议收藏起来慢慢学。(墙裂推荐)

前言 大家好&#xff0c;我是栗子同学啦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 Python 凭借语法的易学性&#xff0c;代码的简洁性以及类库的丰富性&#xff0c;赢得了众多开发者的喜爱…