首页
/ HeyGem.ai 项目 Docker 部署指南:TTS、ASR 与视频生成服务集成

HeyGem.ai 项目 Docker 部署指南:TTS、ASR 与视频生成服务集成

2025-07-06 06:05:04作者:乔或婵

项目概述

HeyGem.ai 是一个集成了多种AI能力的综合项目,通过Docker容器化部署方案,可以快速搭建包含文本转语音(TTS)、自动语音识别(ASR)和视频生成功能的完整AI服务环境。本指南将详细解析其Docker Compose配置,帮助开发者理解并部署这一AI服务栈。

核心服务组件

1. 网络配置

项目首先定义了一个名为ai_network的桥接网络,所有服务都将连接到此网络,实现服务间通信:

networks:
  ai_network:
    driver: bridge

这种设计确保了各服务可以相互发现和通信,同时与外部网络隔离,提高了安全性。

2. 文本转语音服务 (heygem-tts)

heygem-tts:
  image: guiji2025/fish-speech-ziming
  container_name: heygem-tts
  restart: always
  runtime: nvidia
  environment:
    - NVIDIA_VISIBLE_DEVICES=0
    - NVIDIA_DRIVER_CAPABILITIES=compute,graphics,utility,video,display
  ports:
    - '18180:8080'
  volumes:
    - d:/heygem_data/voice/data:/code/data
  command: /bin/bash -c "/opt/conda/envs/python310/bin/python3 tools/api_server.py --listen 0.0.0.0:8080"
  networks:
    - ai_network

技术解析:

  • 基于fish-speech-ziming镜像,这是一个专门优化的TTS引擎
  • 配置了NVIDIA GPU支持,确保高质量的语音合成
  • 数据卷映射将本地d:/heygem_data/voice/data目录挂载到容器内,用于持久化语音数据
  • 通过API服务器提供8080端口的服务,外部映射到18180端口

最佳实践建议:

  • 对于生产环境,建议配置GPU监控以确保资源合理分配
  • 可以调整NVIDIA_VISIBLE_DEVICES参数来指定使用的GPU设备

3. 自动语音识别服务 (heygem-asr)

heygem-asr:
  image: guiji2025/fun-asr
  container_name: heygem-asr
  restart: always
  runtime: nvidia
  privileged: true
  working_dir: /workspace/FunASR/runtime
  ports:
    - '10095:10095'
  command: sh /run.sh
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: all
            capabilities: [gpu]
  networks:
    - ai_network

技术解析:

  • 使用FunASR框架,这是一个高效的语音识别解决方案
  • 配置了特权模式和所有可用的GPU资源
  • 工作目录设置为FunASR运行时目录,确保正确执行识别任务
  • 通过10095端口提供服务

性能优化提示:

  • 对于高并发场景,可以考虑部署多个ASR实例并配置负载均衡
  • 监控GPU内存使用情况,必要时调整count参数限制GPU使用数量

4. 视频生成服务 (heygem-gen-video)

heygem-gen-video:
  image: guiji2025/heygem.ai
  container_name: heygem-gen-video
  restart: always
  runtime: nvidia
  privileged: true
  volumes:
    - d:/heygem_data/face2face:/code/data
  environment:
    - PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
  deploy:
    resources:
      reservations:
        devices:
          - capabilities: [gpu]
  shm_size: '8g'
  ports:
    - '8383:8383'
  command: python /code/app_local.py
  networks:
    - ai_network

技术解析:

  • 使用项目主镜像heygem.ai,包含视频生成核心功能
  • 配置了8GB共享内存(shm_size),这对视频处理非常重要
  • 设置了PyTorch CUDA内存分配策略,优化GPU内存使用
  • 数据卷映射用于持久化面部相关数据
  • 通过8383端口提供服务

关键配置说明:

  • shm_size: '8g':视频生成通常需要大量内存交换,增加共享内存可显著提高性能
  • PYTORCH_CUDA_ALLOC_CONF:这个环境变量帮助避免CUDA内存碎片化问题

部署流程指南

  1. 环境准备

    • 确保已安装Docker和NVIDIA容器工具包
    • 确认GPU驱动版本兼容CUDA版本
  2. 数据目录准备

    • 在D盘创建heygem_data目录结构
    • 确保有足够的存储空间用于语音和视频数据
  3. 服务启动

    docker-compose up -d
    
  4. 服务验证

    • 检查各容器日志确认无报错
    • 通过各自端口测试API是否可用

常见问题解决方案

GPU资源冲突问题: 如果多个服务需要同时使用GPU,可以考虑:

  • 使用NVIDIA_VISIBLE_DEVICES为不同服务分配不同GPU
  • 调整deploy.resources.reservations配置限制各服务GPU使用量

内存不足问题

  • 视频生成服务可能需要更多共享内存,可适当增加shm_size
  • 监控各服务内存使用,必要时增加物理内存或优化模型

性能调优建议

  • 为生产环境配置适当的资源限制(CPU/内存)
  • 考虑使用docker-compose的scale参数横向扩展无状态服务
  • 实现健康检查和自动恢复机制

架构设计思考

这个Docker Compose配置展示了微服务架构在AI项目中的应用:

  1. 服务解耦:TTS、ASR和视频生成作为独立服务,可以单独扩展和更新
  2. 资源隔离:每个服务可以独立配置GPU和内存资源
  3. 统一网络:通过ai_network实现服务间通信,同时保持外部访问可控

这种设计既保证了各AI组件的独立性,又通过Docker Compose实现了统一管理和部署,是AI服务容器化的典型实践。

通过本指南,开发者可以充分理解HeyGem.ai项目的服务架构和部署方式,根据实际需求进行调整和优化,构建稳定高效的AI服务环境。