文本转语音工具 ChatTTS 使用教程

news2024/11/23 19:24:38

文章目录

  • Part.I Introduction
  • Part.II 一键安装部署
    • Chap.I 下载
    • Chap.II 使用
    • Chap.III 存在的问题
  • Part.III 手动部署
    • Chap.I 快速使用
    • Chap.II 开发教程
  • Reference

Part.I Introduction

ChatTTS (Chat Text To Speech) 是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在 HuggingFace 中开源的版本为4万小时训练且未SFT的版本。

在这里插入图片描述
开发 ChatTTS 的团队称:突破开源天花板!ChatTTS 有如下特点:

在这里插入图片描述
ChatTTS 文本转语音示例如下

B 站_ChatTTS 示例

Part.II 一键安装部署

Chap.I 下载

建议使用『ChatTTS 一键本地安装!目前最简单高效的部署方案【文本转语音】』进行安装部署,使用的是 123 云盘,近 3G 压缩包分分钟下完。

在这里插入图片描述
1、下载好后解压,得到如下文件,双击app.exe,会自动进行环境配置。

在这里插入图片描述
2、环境配置好后会在浏览器中弹出来使用接口(http://127.0.0.1:9966/)。
在这里插入图片描述

Chap.II 使用

参数的含义如下:

  • text:指的是需要转换成语音的文字内容。
  • Refine text:选择是否自动对输入的文本进行优化处理。
  • 随机度:一个控制输出随机性的参数,数值越大,生成的语音随机性越高,这可能导致生成的语音质量有时更好,有时更差。
  • 音色选择:默认值为2222,这是一个数字参数,用于选择声音的类型。可选的数字有2222、7869、6653、4099、5099,可以任选其一,或者输入其他数字以随机选择声音。
  • 定制声音:这是一个正整数参数,用于定制声音的音调和音色。如果设置了此值,将优先使用,而忽略声音选择参数。
  • 提示设置(Prompt):用于添加笑声、停顿等效果。例如,可以设置为[oral_2][laugh_0][break_6]

在这里插入图片描述
合成好之后即可下载

Chap.III 存在的问题

这种方法虽然简单,但是看不到程序内部运行的逻辑,也没有办法更改程序本身的代码,出现问题也没有行之有效的解决方案。笔者在尝试的时候就遇到了一些问题,如下:

1、无法识别[lauge]等提示词
2、前面几秒声音乱入。

Part.III 手动部署

https://github.com/2noise/ChatTTS/tree/main/docs/cn

克隆仓库

git clone https://github.com/2noise/ChatTTS
cd ChatTTS

安装依赖

pip install --upgrade -r requirements.txt

Chap.I 快速使用

建议先执行一遍

python examples/cmd/run.py "Your text 1."

快速使用:命令行交互(生成的音频将保存至 ./output_audio_n.mp3)

python examples/cmd/run.py "Your text 1." "Your text 2."

快速使用:WebUI 可视化界面

python examples/web/webui.py

在这里插入图片描述

PS:建议文字数目不要超过150个。长文本后面就是在瞎说。

Chap.II 开发教程

安装ChatTTS的Python 包,方法有如下三种

1、从 PyPI 安装稳定版

pip install ChatTTS

2、从 GitHub 安装最新版

pip install git+https://github.com/2noise/ChatTTS

3、从本地文件夹安装开发版

pip install -e .

基础用法

import ChatTTS
import torch
import torchaudio

chat = ChatTTS.Chat()
chat.load(compile=False) # Set to True for better performance

texts = ["PUT YOUR 1st TEXT HERE", "PUT YOUR 2nd TEXT HERE"]

wavs = chat.infer(texts)

torchaudio.save("output1.wav", torch.from_numpy(wavs[0]), 24000)

进阶用法

###################################
# Sample a speaker from Gaussian.

rand_spk = chat.sample_random_speaker()
print(rand_spk) # save it for later timbre recovery

params_infer_code = ChatTTS.Chat.InferCodeParams(
    spk_emb = rand_spk, # add sampled speaker 
    temperature = .3,   # using custom temperature
    top_P = 0.7,        # top P decode
    top_K = 20,         # top K decode
)

###################################
# For sentence level manual control.

# use oral_(0-9), laugh_(0-2), break_(0-7) 
# to generate special token in text to synthesize.
params_refine_text = ChatTTS.Chat.RefineTextParams(
    prompt='[oral_2][laugh_0][break_6]',
)

wavs = chat.infer(
    texts,
    params_refine_text=params_refine_text,
    params_infer_code=params_infer_code,
)

###################################
# For word level manual control.

text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text,  params_infer_code=params_infer_code)
torchaudio.save("output2.wav", torch.from_numpy(wavs[0]), 24000)

Reference

  • ChatTTS 中文网
  • Github ChatTTS 开源项目网址
  • Hugging Face模型地址
  • ChatTTS 一键本地安装!目前最简单高效的部署方案【文本转语音】

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

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

相关文章

arcgisPro添加属性域

1、创建一个面要素,结果如下: 2、在【内容】列表中,选中该要素,点击【数据】选项卡,如下: 3、点击【属性域】按钮,如下: 4、点击【新建域】 5、添加一行属性域,如 6、保存…

【生日视频制作】海底石碑雕刻AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程海底石碑雕刻AE模板修改文字特效广告生成神器素材祝福玩法AE模板工程 AE模板套用改图文教程↓↓: 怎么如何做的【生日视频制作】海底石碑雕刻AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 下载AE模板 安装AE软件…

python 注册 Nacos

根据项目需要 将python服务也纳入Nacos 中进行统一管理,所以进行python Nacos 项目适配。 记录本此适配过程。 python 安装不在说明。 系统版本:Linux 5.4.18-87.76-generic KYLINOS SMP Thu Aug 31 09:05:44 UTC 2023 aarch64 aarch64 aarch64 GNU/L…

文心一言 VS 讯飞星火 VS chatgpt (345)-- 算法导论23.2 4题

四、假定图中的边权重全部为整数,且在范围 1 ∼ ∣ V ∣ 1 \sim |V| 1∼∣V∣内。在此种情况下,Kruskal算法最快能多快?如果边的权重取值范围在1到某个常数 W W W之间呢?如果要写代码,请用go语言。 文心一言&#xff…

RPY角的具体描述

目录 一、 RPY角度 二、左乘与右乘 三、xyz固定角和zyx欧拉角旋转矩阵等价 四、参考文献 一、 RPY角度 1.1、X-Y-Z固定角[1] 首先将坐标系{B}和一个已知参考坐标系{A}重合。先将{B}绕旋转γ角,在绕旋转β角,在绕旋转α角,每次旋…

做统计(蓝桥杯初级)

系列文章目录 e,新系列没有目录) 文章目录 系列文章目录前言一、个人名片二、描述三、输入输出以及代码示例1.输入输入样例: 2.输出输出样例: 3.代码示例 四、思路总结 前言 今天我们来做《做统计》 一、个人名片 个人主页&…

Flutter-底部选择弹窗(showModalBottomSheet)

前言 现在有个需求,需要用底部弹窗来添加定时的重复。在这里使用原生的showModalBottomSheet来实现 showModalBottomSheet的Props 名称 描述 isScrollControlled全屏还是半屏isDismissible外部是否可以点击,false不可以点击,true可以点击&a…

剪花布条(KPM模板题)

思路&#xff1a;套用KMP模板即可。 #include<bits/stdc.h> using namespace std; #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define endl \n int ne[200005]; int main() {IOSstring a,b;while(cin >> a){if(a"#") break;cin …

LEAN 类型系统属性 之 算法式相等的非传递性(Algorithm equality is not transitive)注解

由于 subsingleton 使用函数&#xff08;eliminator&#xff09; 的存在&#xff0c;导致算法式相等&#xff08;Algorithm defintional equality&#xff09;的非传递性。 在《定义上相等的非确定性&#xff08;Undecidability of Definitional Equality&#xff09;》 中有&…

[基于 Vue CLI 5 + Vue 3 + Ant Design Vue 4 搭建项目] 10 Ant Design Vue 的注册

1.全局全部注册 这样就可以将 ant design vue 全部组件注册进来 2.全局部分注册 这样就是按需注册了 本次&#xff0c; 我们选择第1种方式&#xff0c;全部注册进来 3.注册全局 css 4.测试一下 在 AboutView.vue 中添加一个 Test 按钮 使用 npm run serve 启动服务 访问 A…

如何通过subprocess在数据采集中执行外部命令 —以微博为例

介绍 在现代网络爬虫开发中&#xff0c;爬虫程序常常需要与外部工具或命令交互&#xff0c;以完成一些特定任务。subprocess 是 Python 提供的强大模块&#xff0c;用于启动和管理外部进程&#xff0c;广泛应用于爬虫技术中。本文将探讨如何通过 subprocess 在爬虫中执行外部命…

k8s 常见问题梳理

1、“cni0” already has an IP address different from 10.244.2.1/24 删除网卡 ifconfig cni0 down ip link delete cni0ip link add cni0 type bridge ip link set dev cni0 up ifconfig cni0 10.244.2.1/24 ifconfig cni0 mtu 1450 up

二.Unity中使用虚拟摇杆来控制角色移动

上一篇中我们完成了不借助第三方插件实现手游的虚拟摇杆&#xff0c;现在借助这个虚拟摇杆来实现控制角色的移动。 虚拟摇杆实际上就给角色输出方向&#xff0c;类似于键盘的WSAD&#xff0c;也是一个二维坐标&#xff0c;也就是(-1,1)的范围&#xff0c;将摇杆的方向进行归一化…

Windows与Linux下 SDL2的第一个窗口程序

Windows效果和Linux效果如下&#xff1a; 下面是代码&#xff1a; #include <stdio.h> #include "SDL.h"int main(int argc, char* argv[]) { // 初始化SDL视频子系统if (SDL_Init(SDL_INIT_VIDEO) ! 0){// 如果初始化失败&#xff0c;打印错误信息printf(&…

HPA自动扩缩容和命名空间资源限制

目录 HPA概念 安装HPA的依赖环境 安装metrics-server 手动扩缩容 自动扩缩容 yaml文件 创建HPA 自动扩容 自动缩容 命名空间资源限制 HPA概念 HPA是针对pod的数量进行自动扩缩容。&#xff08;是针对控制器deployment、replicaset、StatefulSet创建的pod&#xff0…

TS接口、泛型、自定义类型

这里记录下typescript中接口、泛型和自定义类型的使用 接口定义 // 定义一个接口,用来限制Teacher的属性 export interface Teacher {name: string;age: number;gender: string; }export type teacherList Teacher[];// 一个自定义类型 export type Teachers Array<Teach…

【UE5 C++课程系列笔记】02——创建C++类的三种方式

目录 一、从UE编辑器中创建 引用头文件报错的两种解决方式 &#xff08;1&#xff09;方式1 &#xff08;2&#xff09;方式2 二、在文件夹中直接创建 三、在Visual Studio中创建 一、从UE编辑器中创建 在UE编辑器中选择“Tools-》New C Class” 这里新建的类的父类选择…

Gitlab 中几种不同的认证机制(Access Tokens,SSH Keys,Deploy Tokens,Deploy Keys)

前言 公司主要使用 Go 语言做项目&#xff0c;有一些 Gitlab 私有仓库需要引用&#xff0c;在做 CI 时&#xff0c;要自行配置权限以获取代码。 最近发现各个项目组在做 CI 遇到仓库权限问题时的解决方式不尽相同&#xff0c;有用 Project Token 的&#xff0c;有用 Deploy K…

【python】OpenCV—Augmented Reality Using Aruco Markers

文章目录 1、任务描述2、Aruco Markers3、代码实现4、更多例子展示5、涉及到的库cv2.findHomography 6、参考 1、任务描述 借助 Aruco Markers&#xff0c;替换墙面上画面中的内容 2、Aruco Markers OpenCV 中的 aruco 模块共有 25 个预定义的标记字典。字典中的所有标记包含…

新代机床采集数据

新代集團1995年成立於台灣新竹,事業版圖遍布全球,以台灣為中心向外發展,據點橫跨歐洲、美洲、亞洲三大洲。新代長期深耕於機床控制器的軟體及硬體技術研發,專注於運動控制領域,目前已成為亞太市場中深具影響力的控制器領導品牌之一。主營產品包括:機床數控系統、伺服驅動…