一键云部署:资源编排 ROS 轻松部署文本转语音系统 ChatTTS

news/2025/3/26 8:04:03/文章来源:https://www.cnblogs.com/alicloudros/p/18230222

ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。ChatTTS webUI & API 为 ChatTTS 提供了网页界面和API服务。

资源编排服务(Resource Orchestration Service, ROS)是阿里云提供基于基础设施即代码(Infrastructure as Code, IaC) 理念的自动化部署服务,我们可以通过定义一个 JSON/YAML/Terraform 模板,轻松部署一套云上的 ChatTTS 环境。

部署步骤

  1. 登录ROS 控制台-ChatTTS 部署页面
  2. 配置模板参数:选择 ECS 实例的可用区、实例类型等
  3. 点击【下一步】,然后【创建】。部署完成后,点击资源栈的输出,即可看到 ChatTTS 服务的地址。点击链接即可体验 ChatTTS 的功能。

⚠️说明:

  • 由于服务首次启动会下载模型,需要等待2-5分钟后才能正常访问。
  • 本示例使用 GitHub 镜像站点进行克隆,以避免网络问题。
  • ChatTTS 安装在 /opt/chat-tts-ui 下,日志文件为 app.log


部署原理

我们可以看到通过 ROS 可以非常快捷地部署阿里云上的各种云资源(比如 VPC、VSwitch、ECS 实例等)和应用程序(比如 ChatTTS)。如果想了解是如何做到的,那么可以阅读此章节。

  1. 编写 ROS 模板。在如下模板中定义了:
  • Resources:定义了 VPC、VSwitch、ECS 实例、安全组、安全组规则以及安装 ChatTTS 的命令。
  • Parameters:定义了常用的参数,比如可用区、ECS实例类型类型。
  • Outputs:定义了自定义输出,比如 ChatTTS 服务的地址。
ROSTemplateFormatVersion: '2015-09-01'
Description:en: Build text-to-speech system ChatTTS on the ECS instance (Ubuntu 22.04).zh-cn: 在ECS实例(Ubuntu 22.04)上搭建文本转语音系统ChatTTS。
Parameters:ZoneId:Type: StringLabel:en: Availability Zonezh-cn: 可用区IDAssociationProperty: ALIYUN::ECS::Instance:ZoneIdInstanceType:Type: StringLabel:en: Instance Typezh-cn: 实例类型AssociationProperty: ALIYUN::ECS::Instance::InstanceTypeAssociationPropertyMetadata:ZoneId: ${ZoneId}DefaultValueStrategy: recentSystemDiskCategory:Type: StringLabel:en: System Disk Typezh-cn: 系统盘类型AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategoryAssociationPropertyMetadata:LocaleKey: DiskCategoryZoneId: ${ZoneId}InstanceType: ${InstanceType}AutoSelectFirst: trueAutoChangeType: falseDefault: cloud_essdInstancePassword:Type: StringLabel:en: Instance Passwordzh-cn: 实例密码Description:en: Server login password, Length 8-30, must contain three(Capital letters,lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbolin).zh-cn: 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)。ConstraintDescription:en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers,()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in).zh-cn: 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)。AssociationPropertyMetadata:Visible:Condition:Fn::Equals:- ${SelectInstance}- falseDefault:AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'MinLength: 8MaxLength: 30NoEcho: true
Resources:Vpc:Type: ALIYUN::ECS::VPCProperties:CidrBlock: 192.168.0.0/16VSwitch:Type: ALIYUN::ECS::VSwitchProperties:ZoneId:Ref: ZoneIdVpcId:Ref: VpcCidrBlock: 192.168.0.0/24SecurityGroup:Type: ALIYUN::ECS::SecurityGroupProperties:VpcId:Ref: VpcSecurityGroupIngress_9966:Type: ALIYUN::ECS::SecurityGroupIngressProperties:SecurityGroupId:Ref: SecurityGroupSourceCidrIp: 0.0.0.0/0IpProtocol: tcpNicType: intranetPortRange: 9966/9966InstanceGroup:Type: ALIYUN::ECS::InstanceGroupProperties:VpcId:Ref: VpcVSwitchId:Ref: VSwitchSecurityGroupId:Ref: SecurityGroupImageId: ubuntu_22_04InstanceName: ChatTTSInstanceType:Ref: InstanceTypeSystemDiskCategory:Ref: SystemDiskCategoryPassword:Ref: InstancePasswordIoOptimized: optimizedMaxAmount: 1DS_Instances:Type: DATASOURCE::ECS::InstancesProperties:InstanceIds:Fn::GetAtt:- InstanceGroup- InstanceIdsInstallChatTTS:Type: ALIYUN::ECS::RunCommandProperties:InstanceIds:Fn::GetAtt:- InstanceGroup- InstanceIdsType: RunShellScriptSync: trueTimeout: 1800CommandContent: |#!/bin/bashecho "#########################"echo "# Install ChatTTS Web UI"echo "#########################"apt-get updateapt-get install -y python3-venvgit clone --depth 1 https://gitclone.com/github.com/jianchang512/ChatTTS-ui.git /opt/chat-tts-ui && cd /opt/chat-tts-uiret_code=$?if [ $ret_code -ne 0 ]; thenecho "Git clone https://gitclone.com/github.com/jianchang512/ChatTTS-ui.git failed. Exiting."exit $ret_codefipython3 -m venv venvsource ./venv/bin/activatepip3 install -r requirements.txtexport WEB_ADDRESS=0.0.0.0:9966nohup python3 app.py > app.log 2>&1 &
Outputs:ChatTTSUrl:Description: ChatTTS default address.Value:Fn::Sub:- http://${IP}:9966- IP:Fn::Jq:- First- if .[0].PublicIpAddress != [] then .[0].PublicIpAddress[0] else .[0].EipAddress.IpAddressend- Fn::GetAtt:- DS_Instances- Instances
Metadata:ALIYUN::ROS::Interface:TemplateTags:- acs:example:AI:在ECS实例(Ubuntu 22.04)上搭建文本转语音系统ChatTTS
  1. 在 ROS 控制台中使用此模板创建资源栈。ROS 会自动解析出模板中资源的依赖关系,按照资源依赖顺序创建云资源。如果资源间没有依赖,则会并发创建,从而提升部署效率。ROS 会把这次创建的所有资源存放到一个“资源栈”中,后续可以方便地管理这组资源集合。比如:
  • 将新模板应用到这个“资源栈”中,从而更新里面的资源。
  • 删除这个“资源栈”,从而把所有的资源删掉。

总结

基于 IaC 的理念,通过定义一个模板,使用 ROS 进行自动化部署,可以非常高效快捷地部署任意云资源和应用(比如 ChatTTS 服务)。相比于手动部署或者通过 API、SDK 的部署方式,有着高效、稳定等诸多优势,也是服务上云的最佳实践。

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

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

相关文章

记一次“有手就行”的从SQL注入到文件上传Getshell的简单过程

SQL 注入漏洞的原理是应用程序没有对用户输入进行充分的验证和过滤,导致攻击者可以在输入框中插入恶意的 SQL 代码。当应用程序将用户输入的数据拼接到 SQL 查询语句中时,攻击者插入的恶意代码也会被执行,从而绕过身份验证和访问控制,直接访问或修改数据库中的数据。0x01 前…

使用ollama部署本地大模型

安装docker与docker-compose 安装ollama与anythingllm docker-compose.yml version: "3"services:ollama:image: ollama/ollamacontainer_name: ollamavolumes:- .ollama:/root/.ollamaports:- 11434:11434anythingllm:image: mintplexlabs/anythingllmcontainer_nam…

学习笔记17:DenseNet实现多分类(卷积基特征提取)

转自:https://www.cnblogs.com/miraclepbc/p/14378379.html 数据集描述 总共200200类图像,每一类图像都存放在一个以类别名称命名的文件夹下,每张图片的命名格式如下图: 数据预处理 首先分析一下我们在数据预处理阶段的目标和工作流程获取每张图像以及对应的标签划分测试集…

学习笔记19:图像定位

转自:https://www.cnblogs.com/miraclepbc/p/14385623.html 图像定位的直观理解 不仅需要我们知道图片中的对象是什么,还要在对象的附近画一个边框,确定该对象所处的位置。 也就是最终输出的是一个四元组,表示边框的位置 图像定位网络架构 可以将图像定位任务看作是一个回归…

学习笔记13:微调模型

转自:https://www.cnblogs.com/miraclepbc/p/14360807.html resnet预训练模型 resnet模型与之前笔记中的vgg模型不同,需要我们直接覆盖掉最后的全连接层先看一下resnet模型的结构: 我们需要先将所有的参数都设置成requires_grad = False然后再重新定义fc层,并覆盖掉原来的。…

成熟的双向同步方案,能够解决哪些同步问题?

在企业的数据流转管控过程中,经常会遇到频繁的数据备份、同步,人工重复这样的工作程序,既繁琐又容易出错。因此对于企业而言,选择一款高效且安全的同步软件成为了企业运营中的关键一环,不仅能够提高工作效率,还能确保数据的安全性。在选择双向同步方案时,首先要明确自己…

从数据库设计到性能调优,全面掌握openGemini应用开发最佳实践

据库设计和性能调优最重要的干货都在这里了!本文分享自华为云社区《DTSE Tech Talk openGemini :从数据库设计到性能调优,全面掌握openGemini应用开发最佳实践》,作者:华为云开源。 在本期《从数据库设计到性能调优,全面掌握openGemini应用开发最佳实践》的主题直播中,…

MBD闲谈 第03期:MBD的“禁区”——底层驱动

转载自:autoMBD, 版权归autoMBD所有,转载请注明作者和来源 原文链接:http://www.360doc.com/content/22/0820/17/15913066_1044626106.shtml全文约3562字,你将看到以下内容:底层驱动的那些事底层驱动为啥是MBD“禁区” 底层驱动与模型集成下期预告1 底层驱动的那些事 先…

allure的suites(测试套)中未显示返回值参数,显示No information about test execution is available.(转自大佬,亲测有用)

转自大佬:https://blog.csdn.net/sbdxmnz/article/details/137016423ExecutionNo information about test execution is available.解决方法: 添加代码,因为pytest输出文本形式测试报告时未存储响应内容 # 将接口响应的文本内容附加到Allure报告中 allure.attach(接口响应.…

学习笔记9:卷积神经网络实现MNIST分类(GPU加速)

转自:https://www.cnblogs.com/miraclepbc/p/14345342.html 相关包导入 import torch import pandas as pd import numpy as np import matplotlib.pyplot as plt from torch import nn import torch.nn.functional as F from torch.utils.data import TensorDataset from tor…

笔记2:张量简介

张量生成方法 转自:https://www.cnblogs.com/miraclepbc/p/14329476.html张量的形状及类型张量的计算张量的梯度手写线性回归张量生成方法 张量的形状及类型 张量的计算 张量的梯度 手写线性回归

笔记3:逻辑回归(分批次训练)

转自:https://www.cnblogs.com/miraclepbc/p/14332084.html 相关库导入 import torch import pandas as pd import numpy as np import matplotlib.pyplot as plt from torch import nn %matplotlib inline数据读入及预处理 data = pd.read_csv(E:/datasets/dataset/credit-a.…