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

2024-06-11 01:52

本文主要是介绍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/来打开。在这里插入图片描述

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

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

在这里插入图片描述


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

这篇关于Chat-TTS:windows本地部署实践【有手就行】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049883

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署