平台介绍
官方介绍:Heygem是一款专为Windows系统设计的全离线视频合成工具,它能够精确克隆您的外貌和声音,让您的形象数字化。您可以通过文字和语音驱动虚拟形象,进行视频制作。无需联网,保护隐私的同时,也能享受到便捷和高效的数字体验。
Linux环境部署应用场景和可行性分析
- 官方宣称只支持Windows平台,并要求Windows机器有直通GPU。可实际工作环境中,存在较多GPU服务搭建在Linux系统的情况,因此无法直接使用Windows版本的部署流程。
- Heygem的模型服务采用docker部署,前端服务为node+vue3开发环境,且最终使用electron打包生成c/s架构的可视化操作界面,理论上都支持跨平台。故而进行了此版尝试,且最终实现了与Windows环境相同的功能。
核心就两点:修改模型服务和前端服务的资源路径。
核心功能
- 外貌、声音克隆
- 文字和语音驱动虚拟形象
- 视频合成
- 多语言
优势
- 全离线操作
- 简单易用、界面简洁
- 多模型支持
官方推荐配置
- CPU:第13代英特尔酷睿 i5-13400F
- 内存:32G及以上(必要)
- 显卡:rtx-4070
Linux环境部署
实测环境
- GPU:NVIDIA GeForce RTX 4090
- CPU:13th Gen Intel® Core™ i7-13700KF
- 内存:64G
- Cuda版本:11.7
- Linux版本:22.04.1-Ubuntu
- Node版本:18.20.7
- Npm版本:10.9.2
- Docker版本:24.0.7
- docker-compose版本:1.29.2
步骤
-
拉取heygem模型服务docker镜像
总计约70G,注意预留足够磁盘空间,可以依次执行以下命令拉取镜像,也可以在步骤二中直接执行docker-compose命令,程序docker-compose会自动拉取镜像。docker pull guiji2025/fun-asr docker pull guiji2025/fish-speech-ziming docker pull guiji2025/heygem.ai
-
拉取heygem前端服务代码
按需切换目录,并拉取项目git clone https://github.com/GuijiAI/HeyGem.ai.git
-
启动模型服务
-
进入HeyGem.ai/deploy目录,编辑docker-compose.yml文件,按需修改挂载目录
-
启动容器服务
docker-compose up -d #最新版deploy下已经有供Linux环境使用的docker-compose文件:docker-compose-linux.yml,可使用以下命令启动:docker-compose -f docker-compose-linux.yml up -d
- 启动前端服务
-
进入HeyGem.ai根目录,执行命令安装依赖。注意:务必确认node版本为18+
npm install
-
按需修改src/main/config/config.js文件的请求地址和文件目录
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
-
安装Linux环境的ffmpeg依赖库
# 更新源 sudo apt update # 安装ffmpeg库 sudo apt install ffmpeg -y # 查看版本 ffmpeg -version
-
进入resources/ffmpeg目录
cd 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/
-
修改 src/main/util/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
- Error: spawn ~/HeyGem.ai/node_modules/electron/distresources/app.asar.unpacked/resources/ffmpeg/inux/bin/ffprobe ENOENT
- 解决办法:检查ffmpeg是否正确安装
- Error: Error invoking remote method ‘mode/addModel’: Error: EACCES: permission denied, copyfile ‘xxx.mp4’->‘~/heygem_data/face2face/temp/xxx.mp4’
- 解决办法:检查docker-compose和config.js文件中路径配置
- Error: Error invoking remote method ‘model/addModel’: TypeError: SQLite3 can only bind numbers, strings, bigints, buffers, and null
- 解决办法:检查docker-compose和config.js文件中路径配置
- 其他报错
- 解决办法:尝试更换模特视频