HeyGem数字人-Linux部署服务端+客户端-开发踩坑记录

前言

本文记录了我在部署和开发 硅基流动开源数字人HeyGem.ai 过程中遇到的一些问题与解决方案,适合有一定基础的 AI 开发者或项目集成者参考。

在这里感谢一些大佬的参考:

1、https://blog.youkuaiyun.com/abments/article/details/146412372?spm=1001.2014.3001.5502

2、https://blog.youkuaiyun.com/m0_65258238/article/details/146448424?ops_request_misc=%257B%2522request%255Fid%2522%253A%25223ce94c9cfe5f3be9f79a4bef89e251a4%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=3ce94c9cfe5f3be9f79a4bef89e251a4&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-5-146448424-null-null.142^v102^pc_search_result_base7&utm_term=heygem%20linux&spm=1018.2226.3001.4187



3、https://blog.youkuaiyun.com/coder_dai/article/details/146501672?spm=1001.2014.3001.5501

4、https://blog.youkuaiyun.com/wumule/article/details/146845742?spm=1001.2014.3001.5502

服务端

步骤1:

拉取heygem模型服务docker镜像
总计约70G,注意预留足够磁盘空间,可以依次执行以下命令拉取镜像,也可以在步骤二中直接执行docker-compose命令,程序docker-compose会自动拉取镜像。

docker pull guiji2025/fun-asr
docker pull guiji2025/fish-speech-ziming
docker pull guiji2025/heygem.ai

如果下载速度过慢或被墙,可以换国内源

docker pull crpi-87t8jkvf79rj7hal.cn-huhehaote.personal.cr.aliyuncs.com/modelers_park/fun-asr:latest

docker pull crpi-87t8jkvf79rj7hal.cn-huhehaote.personal.cr.aliyuncs.com/modelers_park/fish-speech-ziming:latest

docker pull crpi-87t8jkvf79rj7hal.cn-huhehaote.personal.cr.aliyuncs.com/modelers_park/heygem.ai:latest

 ·下载好后可以运行 docker images 查看,一定要确保3个镜像都下载成功。

步骤2:

拉取heygem前端服务代码

git clone https://github.com/GuijiAI/HeyGem.ai.git

步骤3:

。修改镜像地址和挂载目录

首先进入HeyGem.ai/deploy目录,编辑docker-compose-linux.yml文件,按需修改挂载目录,记得确保文件路径存在,可以mkdir先创建好,免得后面报错。如果是用国内源下载的,还得修改镜像为本地下载的。

heygem-tts:

    image: crpi-87t8jkvf79rj7hal.cn-huhehaote.personal.cr.aliyuncs.com/modelers_park/fish-speech-ziming:latest

heygem-asr:

    image: crpi-87t8jkvf79rj7hal.cn-huhehaote.personal.cr.aliyuncs.com/modelers_park/fun-asr:latest

 

heygem-gen-video:

    image: crpi-87t8jkvf79rj7hal.cn-huhehaote.personal.cr.aliyuncs.com/modelers_park/heygem.ai:latest

。启动模型服务

docker-compose -f docker-compose-linux.yml up -d

启动后运行 docker ps 查看情况,如图是启动成功的。

客户端

步骤1:

。启动前端服务

进入HeyGem.ai根目录,执行命令安装依赖。注意:务必确认node版本为18+

npm install

按需修改src/main/config/config.js文件的请求地址和文件目录

// 根据自己的实际路径修改
export const assetPath = {
  model: path.join(os.homedir(),'heygem_data', 'face2face', 'temp'), // 模特视频
  ttsProduct: path.join(os.homedir(),'heygem_data', 'face2face', 'temp'), // TTS 产物
  ttsRoot: path.join(os.homedir(),'heygem_data', 'voice', 'data'), // TTS服务根目录
  ttsTrain: path.join(os.homedir(),'heygem_data', 'voice', 'data','origin_audio') // TTS 训练产物

注意:如果docker-compose-linux.yml文件中的 - ~/heygem_data/voice/data:/code/data  用了“~”,则这里要用os.homedir(),不然会报SQLite3的错。

步骤2:

。安装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/

步骤3:

修改 src/main/util/ffmpeg.js文件中的路径为我们刚才添加的。

function initFFmpeg() {
  const ffmpegPath = {
    'development-win32': path.join(__dirname, '../../resources/ffmpeg/win-amd64/bin/ffmpeg.exe'),
    'development-linux': path.join(__dirname, '../../resources/ffmpeg/linux/ffmpeg'),
    'production-win32': path.join(
      process.resourcesPath,
      'app.asar.unpacked',
      'resources',
      'ffmpeg',
      'win-amd64',
      'bin',
      'ffmpeg.exe'
    ),
    'production-linux': path.join(
      process.resourcesPath,
      'app.asar.unpacked',
      'resources',
      'ffmpeg',
      'linux',
      'bin',
      'ffmpeg'
    )
  }

  if(process.env.NODE_ENV === undefined){
    process.env.NODE_ENV = 'production'
  }

  const ffmpegPathValue = ffmpegPath[`${process.env.NODE_ENV}-${process.platform}`]
  log.debug('ENV:', `${process.env.NODE_ENV}-${process.platform}`)
  log.info('FFmpeg path:', ffmpegPathValue)
  ffmpeg.setFfmpegPath(ffmpegPathValue)

  const ffprobePath = {
    'development-win32': path.join(__dirname, '../../resources/ffmpeg/win-amd64/bin/ffprobe.exe'),
    'development-linux': path.join(__dirname, '../../resources/ffmpeg/linux/ffprobe'),
    'production-win32': path.join(
      process.resourcesPath,
      'app.asar.unpacked',
      'resources',
      'ffmpeg',
      'win-amd64',
      'bin',
      'ffprobe.exe'
    ),
    'production-linux': path.join(
      process.resourcesPath,
      'app.asar.unpacked',
      'resources',
      'ffmpeg',
      'linux',
      'bin',
      'ffprobe'
    )
  }

步骤4:

。启动前端服务

npm run start

完成!稍等一会就能看到客户端打开。

常见问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值