在linux服务器部署Heygem

server/2025/3/28 16:42:29/

前言:

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: bridgeservices:heygem-tts:image: guiji2025/fish-speech-zimingcontainer_name: heygem-ttsrestart: alwaysruntime: nvidiaenvironment:- NVIDIA_VISIBLE_DEVICES=0- NVIDIA_DRIVER_CAPABILITIES=compute,graphics,utility,video,displayports:- '18180:8080'volumes:# - d:/heygem_data/voice/data:/code/data # 修改挂载目录- ./heygem_data/voice/data:/code/datacommand: /bin/bash -c "/opt/conda/envs/python310/bin/python3 tools/api_server.py --listen 0.0.0.0:8080"networks:- ai_networkheygem-asr:image: guiji2025/fun-asrcontainer_name: heygem-asrrestart: alwaysruntime: nvidiaprivileged: trueworking_dir: /workspace/FunASR/runtimeports:- '10095:10095'command: sh /run.shdeploy:resources:reservations:devices:- driver: nvidiacount: allcapabilities: [gpu]networks:- ai_networkheygem-f2f:image: guiji2025/heygem.aicontainer_name: heygem-f2frestart: alwaysruntime: nvidiaprivileged: truevolumes:#- d:/heygem_data/face2face:/code/data # 修改挂载目录- ./heygem_data/face2face:/code/dataenvironment:- PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512deploy:resources:reservations:devices:- capabilities: [gpu]shm_size: '8g'ports:- '8383:8383'command: python /code/app_local.pynetworks:- 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 updatesudo apt install ffmpeg -yffmpeg -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.jsconst 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.ppmy.cn/server/178471.html

相关文章

html实现table超出宽度后滑动展示

需求:这是一个详情页面,table等标签都是在后台录入的,要求实现table表格超出屏幕宽度后,可以左右滑动展示的效果。 .knowledgeDetails table{overflow: hidden;height: auto !important;width: 100%

Python散点图(Scatter Plot):数据探索的“第一张图表”

在数据可视化领域,散点图是一种强大而灵活的工具,它能够帮助我们直观地理解和探索数据集中变量之间的关系。本文将深入探讨散点图的核心原理、应用场景以及如何使用Python进行高效绘制。 后续几篇将介绍高级技巧、复杂应用场景。 Python散点图(Scatter Plot):高阶分析、散点…

DeepSeek高校教程大合集(清华,北大,浙大,夏大,天大,湖大,天大,北师大),持续更新

大家好,我是吾鳴。 自从DeepSeek爆火之后,吾鳴就一直在收集和整理关于DeepSeek的教程报告等资料,也收集了有一个多月了。但是有粉丝朋友反馈说,有点凌乱,细找比较麻烦。于是乎吾鳴基于金山文档建设了一个比较简陋的资源…

HTML 列表

HTML 支持有序、无序和定义列表: HTML 列表 有序列表 第一个列表项第二个列表项第三个列表项 无序列表 列表项列表项列表项 HTML无序列表 无序列表是一个项目的列表&#xff0c;此列项目使用粗体圆点&#xff08;典型的小黑圆圈&#xff09;进行标记。 无序列表使用 <u…

信号处理等相关知识点

TDNN(时延神经网络)--CNN神经网络的基础 普通神经网络: 只包含一帧的特征向量 MFCC :用于语音特征提取的算法,提取出音色(很能区分不同人的说话声音)。 TDNN 滤波器:重要特征提取。 迁移学习 小波散射变换 (WST) 小波变换--傅里叶时间无限-》时间局域 点乘:求向…

七桥问题与一笔画问题:图论的奠基石

七桥问题与一笔画问题&#xff1a;图论的奠基石 目录 历史背景问题描述数学模型化欧拉的解决方案欧拉定理及证明一笔画问题现代应用总结 历史背景 18世纪的哥尼斯堡&#xff08;今俄罗斯加里宁格勒&#xff09;是一座被普雷格尔河分割的城市&#xff0c;河中有两个岛屿&…

蓝桥杯 之 最短路径算法

文章目录 求解最短路径&#xff1a;总共是有三种算法 当边的权重为1&#xff0c;也就是不同的点之间的边的距离使用边的数量的时候&#xff0c;就可以使用这个BFS算法&#xff0c;该算法使用优先队列进行求解&#xff0c;当队列不为空的时候&#xff0c;就弹出队首的元素&#…

【用 Trae 读源码】OpenManus 执行流程

前提条件 在 Trae 中打开 OpenManus 工程&#xff0c;使用 build 模式&#xff0c;模型选择 claude-sonnet-3.7 提示词 分析 manus.py 中 main 方法及相关类的执行流程&#xff0c;以流程图的方式展示Manus 执行流程分析 类继承关系 Manus 类的继承链如下&#xff1a; Ba…