Chat-TTS:windows本地部署实践【有手就行】


最近Chat-TTS模型很火,生成的语音以假乱真,几乎听不出AI的味道。我自己在本地部署玩了一下,记录一下其中遇到的问题。

环境:

系统:windows 11

GPU: Nvidia 4060

Cuda:12.1(建议安装12.1版本,最新的12.4需要自己编程pyotrch包)

cudnn: 9.2

注意:在windows x86平台上建议使用conda虚拟环境来管理python包,很重要的一点是项目依赖的pynini不能在windows x86平台上编译安装,但是可以通过conda提供的二进制包来安装,省去了很多麻烦

下载文件:

  1. 下载项目代码: git clone https://github.com/2noise/ChatTTS.git

  2. 下载模型权重文件,我使用的是阿里的modelscope,国内下载比较快。 https://modelscope.cn/models/pzc163/chatTTS/summary
    (有条件可以连接huggingface的,也可以不用自己提前下载,直接运行代码等待自动下载。)
    使用modelscope,可以手动在页面下载,或者通过其提供的SDK下载,使用SDK下载会将模型保存在 C:\Users\<你的用户名>\.cache\modelscope路径下。因为是本地加载模型,我将下载模型文件复制到了当前模型工作路径下F:\Chat-TTS\ChatTTS\model\chatTTS,方便使用。在这里插入图片描述

安装依赖包:

  1. 进入下载的ChatTTS项目目录,创建一个新的conda环境conda create -n tts python==3.11.8.我使用了python3.11版本,这个根据自己喜好随意选择。

  2. 创建好环境后激活conda activate tts.

  3. 安装环境依赖pip install -r requirements.txt, 开始根据项目提供的依赖进行安装第三方库。

  4. 其中安装pytorch2.1.2的cuda版本从pytorch的官方源下载比较慢,可以使用阿里的镜像仓库地址:https://mirrors.aliyun.com/pytorch-wheels/cu121/ 从其中下载和自己cuda、python版本匹配的包,如我这里使用的是 pytorch2.1.2, py11,cuda12.1的torch-2.1.2+cu121-cp311-cp311-win_amd64.whl.

  5. 另外,模型运行的时候还要额外安装几个依赖库,这我我一并列出,不在下面赘述:

    conda install -c conda-forge pynini=2.1.5
    pip install nemo_text_processing
    pip install WeTextProcessing
    

尝试运行项目:

  1. 在项目目录下打开example.ipynb, 尝试修改并运行官方给的示例
    在这里插入图片描述

  2. 首先修改模型加载方式为本地加载:

    注释掉原来代码,然后改为本地加载并指定模型的存放路径。如果电脑有gpu可以设置device为cuda来提高模型推理速度,最后因为是在win平台,pytorch的dynamo图模式,不支持compile,所以将compile参数设置为False.
    在这里插入图片描述

  3. 执行推理:

    模型加载完成后,即可开始执行推理,点击当前的运行按钮,gpu开行执行推理并将结果保存为音频文件。
    在这里插入图片描述到这里成功的话就说明模型的推理流程已经通了。

但是通过代码的方式运行起来还是比较麻烦,不过项目还提供了webui来使用,这样调节语音生成的参数也更直观方便。

运行webui:

  1. 和上面一样,修改模型的加载参数为本地:
    在这里插入图片描述

    其实本地加载参数可以通过在启动时添加参数传入的,但是为了方便,这里我就讲默认的参数直接改为本地启动: 在这里插入图片描述

  2. 执行webui.py文件:执行后浏览器会自动打开webui页面,或者自己输入http://localhost:8080/来打开。在这里插入图片描述

    接下来的使用就是抽卡了,我们可以自行修改音频生成的种子数,和文本种子,个人感觉这个生成音色的随机性比较大,没什么规律可言,想抽到自己喜欢的音色只能不停的尝试。

生成过程中,模型会自动给文本插入一下语气词、连接词之类的,让文本读起来更自然。

在这里插入图片描述


好了,总体来说模型部署还是比较简单的,希望大家也能一次性跑起来。

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

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

相关文章

【前端】详解JavaScript事件代理(事件委托)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

3 数据类型、运算符与表达式-3.3.2 整型变量(原码,反码,补码)

在计算机科学中&#xff0c;补码、原码和反码是用来表示带符号整数的二进制编码方法&#xff0c;特别是在计算机内存中存储和处理整数时。这些编码方式帮助计算机区分正数和负数&#xff0c;并支持算术运算。以下是它们的具体含义&#xff1a; 原码&#xff08;True Form or S…

【OC】类与对象

类与对象 定义类接口部分定义成员变量方法说明实现部分 对象的产生与使用对象与指针self关键字避免重复创建 id类型方法详解方法的所属性形参个数可变的方法 成员变量成员变量及其运行机制多个实例中内存示意图模拟类变量单例模式 类是面向对象的重要内容&#xff0c;我们可以把…

JS中一个dom元素能绑定多少事件

在JavaScript中&#xff0c;一个DOM元素可以绑定的事件数量并没有明确的限制&#xff0c;这主要取决于浏览器的实现和内存限制。然而&#xff0c;在实际应用中&#xff0c;为同一个DOM元素绑定过多的事件监听器可能会导致性能问题&#xff0c;尤其是在事件处理函数执行复杂操作…

【系统学C++】二、从C语言到C++(二)

【系统学C】二、从C语言到C&#xff08;二&#xff09; bool 类型怎么打印 bool 类型的值 强弱类型C语言的类型系统C的类型系统总结 NULL 和 nullptrNULLnullptr示例 起别名使用 typedef使用 using 关键字&#xff08;C11及以后&#xff09;注意 void* 万能指针C语言中的 void…

46-4 等级保护 - 网络安全等级保护概述

一、网络安全等级保护概述 原文:没有网络安全就没有国家安全 二、网络安全法 - 安全立法 中华人民共和国主席令 第五十三号 《中华人民共和国网络安全法》已于2016年11月7日由中华人民共和国第十二届全国人民代表大会常务委员会第二十四次会议通过,并自2017年6月1日起正式…

Docker快速部署springboot项目

本文概述 本文主要介绍了怎么将springboot项目打包为docker镜像&#xff0c;并如何在后端服务器上使用docker快速部署springboot应用和nginx应用。 一、打包springboot项目 1、复制原来的application.yml文件然后重命名为application-pro.yml文件&#xff0c;将application-pro…

【数据结构】图之邻接矩阵代码实现与dfs、bfs

一、图的相关概念 图的相关概念包括顶点、边、有向图和无向图等。图是计算机科学中一个核心的数据结构&#xff0c;用于描述对象之间的关系。它由顶点&#xff08;节点&#xff09;的集合和连接这些顶点的边的集合组成。具体分析如下&#xff1a; 顶点&#xff1a;图中的基本构…

linux 关于jq的安装和使用

文章目录 前言 一、jq是什么&#xff1f; 二、安装方法 1.在线安装 2.离线安装 三、使用方法 1. 读取json字符串并解析 2.读取json文件并解析 3.遍历json数组&#xff0c;查询姓名为Bob学生的年龄 总结 前言 今天要写一个自定义的脚本&#xff0c;涉及到对json数据的解…

SOA的设计模式_2.企业服务总线模式

1.企业服务总线&#xff08;|Enterprise Service Bus&#xff0c;ESB&#xff09; 在企业基于SOA实施EAI、B2B和BMP的过程中&#xff0c;如果采用点对点的集成方式存在着复杂度高&#xff0c;可管理性差&#xff0c;复用度差和系统脆弱等问题。企业服务总线&#xff08;…

【微信小程序】事件传参的两种方式

文章目录 1.什么是事件传参2.data-*方式传参3.mark自定义数据 1.什么是事件传参 事件传参:在触发事件时&#xff0c;将一些数据作为参数传递给事件处理函数的过程&#xff0c;就是事件传参 在微信小程序中&#xff0c;我们经常会在组件上添加一些自定义数据&#xff0c;然后在…

定个小目标之刷LeetCode热题(12)

这是一道简单题&#xff0c;使用位运算中的异或运算即可&#xff0c;异或运算有以下性质&#xff1a; 1、任何数异或 0 结果仍然是原来的数&#xff0c;即 a⊕0a 2、任何数和其自身做异或运算&#xff0c;结果是 0 所以我们只需要让数组里的所有元素进行异或运算得到的结果就…

oracle的bitmap索引是什么

Oracle的Bitmap索引是一种特殊的索引类型&#xff0c;主要用于处理那些数值稀疏&#xff08;low-cardinality&#xff0c;低基数&#xff09;的字段&#xff0c;特别是那些值不经常改变的字段。以下是关于Bitmap索引的详细解释&#xff1a; 定义&#xff1a; Bitmap索引是一种…

Python实现删除Word文档中带有“指定内容”的段落文本(7)

前言 本文是该专栏的第7篇,后面会持续分享Python办公自动化干货知识,记得关注。 在处理word文档内容的时候,有时候我们需要一个干净整洁的文本内容。比如说,如下图所示的情况: 在处理上述word文档内容的时候,我们希望将文本底部的“下载链接”以及“附件信息”两个段落,…

持续总结中!2024年面试必问 20 道分布式、微服务面试题(八)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道分布式、微服务面试题&#xff08;七&#xff09;-CSDN博客 十五、Docker和Kubernetes有什么区别&#xff1f; Docker 和 Kubernetes 是两个在容器化领域中非常流行的工具&#xff0c;但它们在功能和用途上…

每日算法——归并排序

什么是归并排序 归并排序是一种分治算法。它将数组不断地分成两半&#xff0c;对每一半进行排序&#xff0c;然后再将排序好的两半合并起来。通过不断重复这个过程&#xff0c;最终得到完全排序的数组。 归并排序的注意点&#xff1a; 空间复杂度&#xff1a;归并排序需要额…

MQ解决的问题

系统中MQ能解决哪些问题&#xff1f; 1.不同语言的程序使用MQ通信 2.分布式&#xff0c;微服务&#xff0c;之间的通信&#xff0c;实现服务质检解耦 3.高并发实现销峰作用 4.实现异步&#xff0c;提高用户体验。

浅谈AI-在公司资金管理中的应用

现在&#xff0c;随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;越来越多的企业开始将其应用到资金管理中。AI在这方面不仅提高了效率和准确性&#xff0c;还大大减少了人为错误和操作风险。下面是AI在企业资金管理中的几种主要应用。 1. 预测未来资金流&…

Mysql使用中的性能优化——搭建Mysql的监测服务

大纲 环境安装配置Mysql安装设置root密码新增远程访问账户修改绑定地址重启 新增 MySQL Server Exporter 用户 安装启动mysqld_exporter安装启动新增配置启动直接启动以Service形式启动 安装启动Prometheus创建用户下载并解压修改配置启动 安装启动grafana安装启动 测试参考资料…

[数据集][图像分类]黑色素瘤分类数据集10015张7类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;10015 分类类别数&#xff1a;7 类别名称:[“0”,“1”,“2”,“3”,“4”,…