在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