赞
踩
ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。ChatTTS webUI & API 为 ChatTTS 提供了网页界面和API服务。
资源编排服务(Resource Orchestration Service, ROS)是阿里云提供基于基础设施即代码(Infrastructure as Code, IaC) 理念的自动化部署服务,我们可以通过定义一个 JSON/YAML/Terraform
模板,轻松部署一套云上的 ChatTTS 环境。
⚠️说明:
- 由于服务首次启动会下载模型,需要等待2-5分钟后才能正常访问。
- 本示例使用 GitHub 镜像站点进行克隆,以避免网络问题。
- ChatTTS 安装在
/opt/chat-tts-ui
下,日志文件为app.log
。
我们可以看到通过 ROS 可以非常快捷地部署阿里云上的各种云资源(比如 VPC、VSwitch、ECS 实例等)和应用程序(比如 ChatTTS)。如果想了解是如何做到的,那么可以阅读此章节。
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: String Label: en: Availability Zone zh-cn: 可用区ID AssociationProperty: ALIYUN::ECS::Instance:ZoneId InstanceType: Type: String Label: en: Instance Type zh-cn: 实例类型 AssociationProperty: ALIYUN::ECS::Instance::InstanceType AssociationPropertyMetadata: ZoneId: ${ZoneId} DefaultValueStrategy: recent SystemDiskCategory: Type: String Label: en: System Disk Type zh-cn: 系统盘类型 AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory AssociationPropertyMetadata: LocaleKey: DiskCategory ZoneId: ${ZoneId} InstanceType: ${InstanceType} AutoSelectFirst: true AutoChangeType: false Default: cloud_essd InstancePassword: Type: String Label: en: Instance Password zh-cn: 实例密码 Description: en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in). 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} - false Default: AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$' MinLength: 8 MaxLength: 30 NoEcho: true Resources: Vpc: Type: ALIYUN::ECS::VPC Properties: CidrBlock: 192.168.0.0/16 VSwitch: Type: ALIYUN::ECS::VSwitch Properties: ZoneId: Ref: ZoneId VpcId: Ref: Vpc CidrBlock: 192.168.0.0/24 SecurityGroup: Type: ALIYUN::ECS::SecurityGroup Properties: VpcId: Ref: Vpc SecurityGroupIngress_9966: Type: ALIYUN::ECS::SecurityGroupIngress Properties: SecurityGroupId: Ref: SecurityGroup SourceCidrIp: 0.0.0.0/0 IpProtocol: tcp NicType: intranet PortRange: 9966/9966 InstanceGroup: Type: ALIYUN::ECS::InstanceGroup Properties: VpcId: Ref: Vpc VSwitchId: Ref: VSwitch SecurityGroupId: Ref: SecurityGroup ImageId: ubuntu_22_04 InstanceName: ChatTTS InstanceType: Ref: InstanceType SystemDiskCategory: Ref: SystemDiskCategory Password: Ref: InstancePassword IoOptimized: optimized MaxAmount: 1 DS_Instances: Type: DATASOURCE::ECS::Instances Properties: InstanceIds: Fn::GetAtt: - InstanceGroup - InstanceIds InstallChatTTS: Type: ALIYUN::ECS::RunCommand Properties: InstanceIds: Fn::GetAtt: - InstanceGroup - InstanceIds Type: RunShellScript Sync: true Timeout: 1800 CommandContent: | #!/bin/bash echo "#########################" echo "# Install ChatTTS Web UI" echo "#########################" apt-get update apt-get install -y python3-venv git clone --depth 1 https://gitclone.com/github.com/jianchang512/ChatTTS-ui.git /opt/chat-tts-ui && cd /opt/chat-tts-ui ret_code=$? if [ $ret_code -ne 0 ]; then echo "Git clone https://gitclone.com/github.com/jianchang512/ChatTTS-ui.git failed. Exiting." exit $ret_code fi python3 -m venv venv source ./venv/bin/activate pip3 install -r requirements.txt export WEB_ADDRESS=0.0.0.0:9966 nohup 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.IpAddress end - Fn::GetAtt: - DS_Instances - Instances Metadata: ALIYUN::ROS::Interface: TemplateTags: - acs:example:AI:在ECS实例(Ubuntu 22.04)上搭建文本转语音系统ChatTTS
基于 IaC 的理念,通过定义一个模板,使用 ROS 进行自动化部署,可以非常高效快捷地部署任意云资源和应用(比如 ChatTTS 服务)。相比于手动部署或者通过 API、SDK 的部署方式,有着高效、稳定等诸多优势,也是服务上云的最佳实践。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。