搭建chattts应用,做文字转语音

下载代码

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

下载endpoint并上传:

https://huggingface.co/2Noise/ChatTTS/tree/main

在这里插入图片描述

将上面下载的文件上传到服务器上
在这里插入图片描述

修改webui.py 更改为本地模型地址

import os
import random
import argparseimport torch
import gradio as gr
import numpy as npimport ChatTTSdef generate_seed():new_seed = random.randint(1, 100000000)return {"__type__": "update","value": new_seed}def generate_audio(text, temperature, top_P, top_K, audio_seed_input, text_seed_input, refine_text_flag):torch.manual_seed(audio_seed_input)rand_spk = chat.sample_random_speaker()params_infer_code = {'spk_emb': rand_spk, 'temperature': temperature,'top_P': top_P,'top_K': top_K,}params_refine_text = {'prompt': '[oral_2][laugh_0][break_6]'}torch.manual_seed(text_seed_input)if refine_text_flag:text = chat.infer(text, skip_refine_text=False,refine_text_only=True,params_refine_text=params_refine_text,params_infer_code=params_infer_code)wav = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)audio_data = np.array(wav[0]).flatten()sample_rate = 24000text_data = text[0] if isinstance(text, list) else textreturn [(sample_rate, audio_data), text_data]def main():with gr.Blocks() as demo:gr.Markdown("# ChatTTS Webui")gr.Markdown("ChatTTS Model: [2noise/ChatTTS](https://github.com/2noise/ChatTTS)")default_text = "四川美食确实以辣闻名,但也有不辣的选择。比如甜水面、赖汤圆、蛋烘糕、叶儿粑等,这些小吃口味温和,甜而不腻,也很受欢迎。"        text_input = gr.Textbox(label="Input Text", lines=4, placeholder="Please Input Text...", value=default_text)with gr.Row():refine_text_checkbox = gr.Checkbox(label="Refine text", value=True)temperature_slider = gr.Slider(minimum=0.00001, maximum=1.0, step=0.00001, value=0.3, label="Audio temperature")top_p_slider = gr.Slider(minimum=0.1, maximum=0.9, step=0.05, value=0.7, label="top_P")top_k_slider = gr.Slider(minimum=1, maximum=20, step=1, value=20, label="top_K")with gr.Row():audio_seed_input = gr.Number(value=2, label="Audio Seed")generate_audio_seed = gr.Button("\U0001F3B2")text_seed_input = gr.Number(value=42, label="Text Seed")generate_text_seed = gr.Button("\U0001F3B2")generate_button = gr.Button("Generate")text_output = gr.Textbox(label="Output Text", interactive=False)audio_output = gr.Audio(label="Output Audio")generate_audio_seed.click(generate_seed, inputs=[], outputs=audio_seed_input)generate_text_seed.click(generate_seed, inputs=[], outputs=text_seed_input)generate_button.click(generate_audio, inputs=[text_input, temperature_slider, top_p_slider, top_k_slider, audio_seed_input, text_seed_input, refine_text_checkbox], outputs=[audio_output, text_output])parser = argparse.ArgumentParser(description='ChatTTS demo Launch')parser.add_argument('--server_name', type=str, default='0.0.0.0', help='Server name')parser.add_argument('--server_port', type=int, default=8080, help='Server port')parser.add_argument('--local_path', type=str, default=None, help='the local_path if need')args = parser.parse_args()print("loading ChatTTS model...")global chatchat = ChatTTS.Chat()print('local model path:', args.local_path)chat.load_models('local', local_path="/root/workspace/chattts/ChatTTS/ChatTTS")demo.launch(server_name=args.server_name, server_port=args.server_port, inbrowser=True)if __name__ == '__main__':main()

或者直接用命令运行:

python webui.py --local_path /root/workspace/chattts/ChatTTS/ChatTTS

搭建成功后的效果:

在这里插入图片描述

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

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

相关文章

dpdk-19.11 arm64 环境适配 Mellanox CX4 网卡

环境信息 cpu: arm64 架构 dpdk 版本:19.11 glibc 版本:2.17 网卡型号: Mellanox CX4 网卡,详细 pci 信息如下: 02:00.0 Ethernet controller: Mellanox Technologies MT27710 Family [ConnectX-4 Lx] 02:00.1 Ether…

一份最基础的gitlab-ci文件,其中就maven的build和test

说明的gitlab-ci.yml文件,包含注释解释每个部分的功能: # 定义流水线的各个阶段,包含两个阶段:build 和 test stages:- build- test# 设置Maven的环境变量,指定本地仓库位置 variables:MAVEN_OPTS: "-Dmaven.rep…

java-String 比较

在 Java 中,String 类的对象用于表示字符串。字符串比较是编程中常见的需求,比如判断两个字符串是否相等,或者比较两个字符串的大小等。Java 提供了多种方法来比较 String 对象。 ### 字符串比较的方式 #### 1. 使用 运算符 运算符用于比较…

投资少见效快产量高-UMLChina建模知识竞赛第5赛季第13轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可获得本轮优胜。 如果有第4题,第4题为附加题&am…

2024上海城博会:以绿色·节能·创新为主题,推动长三角一体化发展

2024上海城博会,作为“世界城市日”的重要主题活动之一,再次将全球的目光聚焦于这座东方明珠,展现了其在城市建设与管理领域的卓越成就。本次城博会由联合国人居署、上海市住房和城乡建设管理委员会联合主办,上海市绿色建筑协会承…

codereview时通常需要关注哪些

在团队成员之间互相进行代码审查(codereview)时,通常可以从以下几个方面来确保代码的质量和可维护性: 代码结构和格式: 检查代码是否遵循了项目约定的编码规范和风格指南。确保代码具有良好的可读性,比如合…

Qt 判断文件夹是否存在,不存在则创建

int CHttpFileRequest::CreatDownloadFile(QString path,QString fileName) {QDir mDir;if(!mDir.exists(path)){mDir.mkpath(path);}return 0; }

C语言字符函数与字符串函数详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 [TOC](文章目录) 前言一、针对单个字符的C语言库中的函数(一)、字符分类函数(二)、字符转换函数 二、针对字符串的C语…

opengauss创建和管理分区表

创建和管理分区表 背景信息 openGauss数据库支持的分区表为范围分区表、列表分区表、哈希分区表。 范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日…

Springboot 开发-- 集成 Activiti 7 流程引擎

引言 Activiti 7是一款遵循BPMN 2.0标准的开源工作流引擎,旨在为企业提供灵活、可扩展的流程管理功能。它支持图形化的流程设计、丰富的API接口、强大的执行引擎和完善的监控报表,帮助企业实现业务流程的自动化、规范化和智能化。本文将为您详细介绍 Ac…

Spring (39)微服务架构

微服务架构是一种将单个应用程序作为一套小服务开发的方法,每个服务运行在其自身的进程中,并且通常围绕业务能力构建,使用轻量级的通信机制(常见的如HTTP RESTful API)。这些服务是自包含的,因为它们分别持…

kubesphere报错

1.安装过程报错unable to sign certificate: must specify a CommonName [rootnode1 ~]# ./kk init registry -f config-sample.yaml -a kubesphere.tar.gz _ __ _ _ __ | | / / | | | | / / | |/ / _ _| |__ ___| |/…

pytest-playwright 插件的使用

引言 在自动化测试领域,Playwright 是一个强大的工具,它支持 Chromium、Firefox 和 WebKit 三大浏览器引擎。Playwright 提供了与 Pytest 集成的插件,使得编写端到端测试变得更加简单和高效。本文将介绍如何使用 Pytest Playwright 插件来编…

Git - 创建和应用patch

如何在 Git 中打补丁 创建和应用 Git 补丁需要几个步骤。以下是详细的操作指南: 创建 Git 补丁 修改: 首先,在本地仓库中进行您想要的修改。 保存修改: 使用 "git add "对更改进行暂存。例如 git add modified_file…

Leetcode:最长公共前缀

题目链接:14. 最长公共前缀 - 力扣(LeetCode) 普通版本(横向扫描) 主旨:用第一个字符串与后续的每个字符串进行比较,先获取S1和S2的最长公共前缀,然后将该次比较获得的最长公共前缀…

python中如何使用密码字典

使用itertools循环迭代的模块来实现生成密码字典,用这个模块可以省不少事。 首先要调用itertools。 import itertools as its 然后将字典需要的元素(或者说是关键字)赋给word变量。 我们这里假设密码是纯数字,所以元素就是12345…

创新指南|2024企业如何开启生成式AI创新?从5大应用场景和6步抓手

想要了解如何采用生成式AI来提高企业效率和竞争力?本指南将介绍如何采用生成式AI来实现数字化转型,并打造智能化商业模式。从5大应用场景和6大步骤切入,让您了解如何开启生成式AI创新。立即连线创新专家咨询或观看创新战略方案视频进一步了解…

test2042

语义边缘检测和语义分割的区别 语义边缘检测&语义分割 Semantic Edge Detection vs. Semantic Segmentation 区别difference 任务目标 Task Objective 语义边缘检测 Semantic Edge Detection 识别图像中不同物体之间的边界线或轮廓及语义类别 Identifying the boundaries …

Less is more VS 精一 [生活感悟]

"Less is More”和王阳明的“精一”思想确实有相似之处。 王阳明的“精一”思想强调的是专注于一件事,将其做到极致,这与"Less is More”中提倡的通过减少数量来提高质量的理念不谋而合。两者都强调了专注和深度的重要性,而不是追…

2024如何优化SEO?

在2024年的今天,要问我会如何优化seo,我会专注于几个关键的方面。首先,随着AI内容生成技术的发展,我会利用这些工具来帮助创建或优化我的网站内容,但是,随着谷歌3月份的算法更新,纯粹的ai内容可…