首页 > 其他分享 >一键云部署:资源编排 ROS 轻松部署文本转语音系统 ChatTTS

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

时间:2024-06-04 09:55:02浏览次数:29  
标签:ChatTTS 部署 Ref ECS ALIYUN ROS Type

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: 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
  1. 在 ROS 控制台中使用此模板创建资源栈。ROS 会自动解析出模板中资源的依赖关系,按照资源依赖顺序创建云资源。如果资源间没有依赖,则会并发创建,从而提升部署效率。ROS 会把这次创建的所有资源存放到一个“资源栈”中,后续可以方便地管理这组资源集合。比如:
  • 将新模板应用到这个“资源栈”中,从而更新里面的资源。
  • 删除这个“资源栈”,从而把所有的资源删掉。

总结

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

标签:ChatTTS,部署,Ref,ECS,ALIYUN,ROS,Type
From: https://www.cnblogs.com/alicloudros/p/18230222

相关文章

  • TensorRT c++部署onnx模型
    在了解一些概念之前一直看不懂上交22年开源的TRTModule.cpp和.hpp,好在交爷写的足够模块化,可以配好环境开箱即用,移植很简单。最近稍微了解了神经网络的一些概念,又看了TensorRT的一些api,遂试着部署一下自己在MNIST手写数字数据集上训练的一个LeNet模型,识别率大概有98.9%,实现用pytor......
  • 使用 Helmfile 插件进行 Argo CD 部署 - 未找到卷挂载
    我正试图在我的Rancherkubernetes集群中使用Helmfile插件设置ArgoCD部署,并遵循此参考文档。但是,我遇到了找不到卷挂载的问题。以下是我的设置细节:<代码Deployment.yaml:apiVersion:apps/v1类型:部署元数据:名称:argocd-repo-server命名空间:argocdspec:tem......
  • 搭建Ubuntu Linux虚拟环境并部署docker,搭建远程开发环境
    引言掌握虚拟化技术和容器化工具是开发者的必备技能,最近刚好学了些Linux技术,写一篇笔记来记录一下是如何一步步搭建一个UbuntuLinux虚拟环境的,并在当中部署docker容器。起初是为了安装docker,发现在Windows上安装docker比较麻烦,而在Linux系统上安装docker则比较简单。废话不多......
  • 在Linux中,如何在Linux中进行配置管理和自动化部署?
    在Linux环境中,配置管理和自动化部署是提升运维效率、确保环境一致性及加速软件交付的关键实践。以下是进行配置管理和自动化部署的一般步骤和常用工具介绍:1.配置管理工具选择首先,你需要选择合适的配置管理工具。一些流行的配置管理工具有:Ansible:基于Python,使用YAML编写剧本......
  • redis - [02] 安装部署
    在Windows和Linux操作系统下的安装部署  一、windows版(1)访问redis下载地址:https://github.com/tporadowski/redis/releases(2)将Redis-x64-5.0.14.1.zip下载并解压到合适的目录(3)打开cmd窗口,切换到该目录下运行:redis-server.exeredis.windows.conf运行之后,redis服务就......
  • Linux系统部署常用指令
    1、切换用户su-用户名2、自动补全tab键3、文件常见指令cd文件地址访问文件cd../返回上一级vi文件地址或vim文件地址编辑文件i进入编辑状态esc退出编辑状态:q!不保存修改并退出:wq强制保存修改并退出cp文件地址指定目录复制文件到指定目录tar-zxv......
  • 一种基于E3处理器平台的NAS完整方案(从电脑组装到网站部署)
    一种基于E3处理器平台的NAS完整方案(从电脑组装到网站部署)本文将简要简要介绍本人自建NAS的完整配置,截至发文此NAS已经连续良好运行一年,应当说具有良好的稳定性。本文所述配置包含洋垃圾成分,在仿照本文搭建系统前,请确保自己已掌握相关知识和具备足够的问题解决能力0.概论本文......
  • cilium CLI 部署
    架构支持AMD64AArch64内核版本Linuxkernel>=4.19.57Linux发行版兼容性和注意事项发行版最低版本AmazonLinux2allBottlerocketOSallCentOS>=8.0Container-OptimizedOSallCoreOSallDebian>=10Buster......
  • 泛微e9阿里云linux服务器部署迁移总结
    1.基础部分,linux基础命令打开指定目录:cd[目录名称]创建目录:mkdir[目录名称]查看目录大小:du-sh[目录名称]启动停止服务:进入目录:cd/weaver/resin4/bin/启动服务:./startresin.sh停止服务:./stopresin.sh编辑文件vim【文件......
  • MVC2.0项目部署在IIS Winserver2012
    1、MVC1.0升级2.0初始项目为MVC1.0,用VS2010开发环境直接将项目升级为2.0参考地址:https://www.cnblogs.com/myshell/archive/2010/05/08/1730348.html用的第三种方式进行项目升级2、项目发布,直接重新生成项目,Bin文件夹下需要复制system.web.dllbin文件下不要复制系统文件,否则......