当前位置: 首页 > article >正文

在linux服务器部署Heygem

前言:

Heygem官方文档上提供了基于windwos系统的安装方案。在实际使用过程中个人电脑的配置可能不够。这个时候如果服务器配置够的话,可以尝试在服务器上装一下。但是服务器一般都是linux系统的,于是这篇教程就出现了…


在这里插入图片描述

可行性分析

通读安装文档发现Heygem应用分为服务端和客户端,服务端基于docker容器所以不区分系统是linux还是windows。应用端基于electron构建的,electron是可以跨平台使用的,所以理论上也可以在linux服务器上构建。有了上面的基础我们可以继续操作了…

环境

  • Ubuntu 22.04.1
  • Docker version 24.0.7
  • Docker Compose version v2.21.0
  • node v18.20.7
  • CPU 13th Gen Intel® Core™ i7-13700KF
  • 显卡 NVIDIA 4090 24G
  • 内存 64G

官方推荐配置

  • CPU:第13代英特尔酷睿 i5-13400F
  • 内存:32G及以上(必要)
  • 显卡:rtx-4070

安装docker

  • 安装教程很多,不再赘述。已经按照跳过。

安装docker-compose

  • 安装教程很多,不再赘述。已经按照跳过

启动Heygem服务端

  • 新建文件目录Heygem
  • 新建文件docker-compose.yml
  • 写入docker-compose.yml,内容参考 https://github.com/GuijiAI/HeyGem.ai/blob/main/deploy/docker-compose.yml
networks:
  ai_network:
    driver: bridge

services:
  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 # 修改挂载目录
     - ./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
  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
  heygem-f2f:
    image: guiji2025/heygem.ai
    container_name: heygem-f2f
    restart: always
    runtime: nvidia
    privileged: true
    volumes:
      #- d:/heygem_data/face2face:/code/data # 修改挂载目录
      - ./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

  • 启动docker-compose服务
docker compose up -d

紧接着就是漫长的等待了…此时我们可以并行按照我们的客户端

启动Heygem客户端

  • 下载客户端源码 https://github.com/GuijiAI/HeyGem.ai.git

  • 进入HeyGem.ai目录

  • 安装node环境,建议 v18.20.7版本

  • 安装ffemp服务

    	sudo apt update
    	sudo apt install ffmpeg -y
    	ffmpeg -version
    
    • 进入到目录resources/ffmpeg下
    • 创建文件夹 mkdir -p linux/bin
    • 下载预编译二进制(选择适用于 Ubuntu 22.04 的版本)
    wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
    tar xvf ffmpeg-release-amd64-static.tar.xz
    
    • 复制文件到项目目录
    cp ffmpeg-*-amd64-static/ffmpeg linux/bin/
    cp ffmpeg-*-amd64-static/ffprobe linux/bin/
    
    
    • 赋予执行权限
    chmod +x .linux/bin/ffmpeg
    chmod +x ./linux/bin/ffprobe
    
    • 手动复制运行依赖
    # 回到 HeyGem.ai目录下
    mkdir -p ./node_modules/electron/dist/resources/app.asar.unpacked/resources/ffmpeg/linux/bin/
    cp -r ./resources/ffmpeg/linux/bin/ ./node_modules/electron/dist/resources/app.asar.unpacked/resources/ffmpeg/linux/bin/
    
  • 修改配置文件

    	vim src/main/config/config.js
    	# 根据自己的实际路径修改
    export const assetPath = {
      model: path.join('XXXX/HeyGem','heygem_data', 'face2face', 'temp'), // 模特视频
      ttsProduct: path.join('XXXX/HeyGem','heygem_data', 'face2face', 'temp'), // TTS 产物
      ttsRoot: path.join('XXXX/HeyGem','heygem_data', 'voice', 'data'), // TTS服务根目录
      ttsTrain: path.join('XXXX/HeyGem','heygem_data', 'voice', 'data','origin_audio') // TTS 训练产物
    }
    
    
    
  • 修改 ffmpeg.js

vim src/main/util/ffmpeg.js

const ffmpegPathValue =
  process.env.NODE_ENV === 'development'
    ? 'ffmpeg' // 开发环境直接使用系统安装的版本
-    : path.join(
+    : path.join(
        process.resourcesPath,
        'app.asar.unpacked',
        'resources',
        'ffmpeg',
+       'linux', // 新增 Linux 子目录
        'bin',
-       'ffmpeg.exe'
+       'ffmpeg'
      )

const ffprobePathValue =
  process.env.NODE_ENV === 'development'
    ? 'ffprobe' // 开发环境直接使用系统安装的版本
-    : path.join(
+    : path.join(
        process.resourcesPath,
        'app.asar.unpacked',
        'resources',
        'ffmpeg',
+       'linux', // 新增 Linux 子目录
        'bin',
-       'ffprobe.exe'
+       'ffprobe'
      )

  • 启动服务
    npm run start # 不要使用npm run dev命令 
    

  • 常见错误
    • Missing X server or $DISPLAY
    [838724:0321/095319.155461:ERROR:ozone_platform_x11.cc(245)] Missing X server or $DISPLAY
    [838724:0321/095319.155479:ERROR:env.cc(258)] The platform failed to initialize.  Exiting.
    
    
    • 解决办法

    更换ssh连接客户端,推荐使用MobaXterm


http://www.kler.cn/a/595139.html

相关文章:

  • 3月21号
  • 【设计模式】三十一、状态模式
  • [数据结构]排序之 归并排序(有详细的递归图解)
  • 微服务分层架构详解:表示层、应用层与基础设施层的协同工作
  • Python学习第二十二天
  • WPF UI元素保存为图像文件
  • L2和内积inner dot区别
  • Vue 3 自定义指令:实现自动滚动效果
  • 去中心化金融的风起与未来:从边缘创新到主流趋势
  • 4.1、网络安全模型
  • QT并发编程进阶--线程安全与同步技巧详解
  • Nexus L2 L3基本配置
  • VS010生成可由MATLAB2016调用的DLL文件方法
  • Sympy入门之微积分基本运算
  • 建模中的特征衍生技巧总结(含各类常用衍生函数)
  • sougou AI close
  • MyBatis 的一次缓存与二次缓存
  • 如何使用AIOps明确Devps的问题归责
  • 混合精度-基于torch内部
  • 尝试在软考65天前开始成为软件设计师-计算机网络