ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

VC Client 容器化部署指南:用 Docker 一键运行 voice-changer 实时变声服务

2026/9/20 23:42:30 拓冰建站 浏览量
VC Client 容器化部署指南:用 Docker 一键运行 voice-changer 实时变声服务 人工智能语音模型推理服务深度学习【免费下载链接】voice-changerリアルタイムボイスチェンジャー Realtime Voice Changer项目地址https://gitcode.com/gh_mirrors/vo/voice-changer点击查看免费下载docker_vcclient/README.md是 Realtime Voice Changer 项目中 VC Client实时变声服务器的 Docker 化部署文档。它给出了从构建镜像、准备权重、启动服务到推送镜像的完整命令链路适用于希望在本地或服务器上以容器方式快速拉起一个可访问、可换模型、可选 GPU/CPU 的变声服务的开发者。读完本文你将掌握npm run build:docker:vcclient、bash start_docker.sh及相关环境变量的完整用法并理解镜像内部从Dockerfile→setup.sh→exec.sh→MMVCServerSIO.py的启动链路。一、docker_vcclient 是什么docker_vcclient是 voice-changer 仓库中面向客户端 / 变声服务器形态的独立 Docker 构建单元对应根目录 package.json 中的build:docker:vcclient脚本。它与docker/主服务镜像、docker_trainer/训练镜像并列专门用于打包实时变声服务器并预置了服务器端 Python 推理环境与 Web GUI 前端前端构建产物位于 client/demo/dist 对应的 webpack 输出。整个 VC Client 镜像的运行时入口是服务器主程序 server/MMVCServerSIO.py它同时提供 REST API 与 Socket.IO 服务浏览器端官方文档明确仅支持 Chrome通过页面完成模型加载、音色切换与实时变声。二、构建镜像npm run build:docker:vcclient在仓库根目录执行npm run build:docker:vcclient该命令在根目录 package.json 中定义为build:docker:vcclient: date %Y%m%d%H%M%S docker_vcclient/dummy DOCKER_BUILDKIT1 docker build -f docker_vcclient/Dockerfile docker_vcclient/ -t vcclient它做了两件事把当前时间戳写入docker_vcclient/dummy用于让 Docker BuildKit 感知构建上下文变化以 docker_vcclient/Dockerfile 为构建文件、以docker_vcclient/为构建上下文生成名为vcclient的本地镜像。构建成功后本地会出现vcclient:latest镜像-t vcclient未指定 tag 时默认latest。镜像内容从 Dockerfile 看基础环境Dockerfile 揭示了镜像的技术栈FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 RUN apt-get update \ apt-get install -y python3-pip espeak gosu libsndfile1-dev emacs git \ apt-get clean \ rm -rf /var/lib/apt/lists/* WORKDIR / ADD dummy / RUN git clone https://github.com/w-okada/voice-changer.git -b v.1.5.3.13 RUN chmod 0777 /voice-changer/server WORKDIR /voice-changer/server RUN pip install numpy1.23.5 \ pip install pyworld0.3.3 --no-build-isolation \ pip install -r requirements.txt ADD /setup.sh /voice-changer/server ADD /exec.sh /voice-changer/server ENTRYPOINT [/bin/bash, setup.sh]要点基础镜像为nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04源码中另保留了 CUDA 12.0.1 的注释备选项意味着该镜像自带 NVIDIA CUDA 11.8 cuDNN 8 运行库可直接支持 GPU 推理系统层安装了python3-pip、espeak文本转语音引擎、gosu降权执行工具、libsndfile1-dev音频文件读取、git构建时会从 Git 仓库 clonev.1.5.3.13标签的代码并固定numpy1.23.5、pyworld0.3.3--no-build-isolation避免重编译隔离环境随后按 server/requirements.txt 安装其余 Python 依赖最终以setup.sh作为 ENTRYPOINT容器启动即进入用户创建与服务器拉起流程。三、运行前准备权重与目录挂载英文版 READMEdocker_vcclient/README_en.md明确要求先把外部模型权重放入docker_vcclient/weights具体需要哪些权重取决于你使用的变声引擎类型$ tree docker_vcclient/weights/ docker_vcclient/weights/ ├── checkpoint_best_legacy_500.onnx ├── checkpoint_best_legacy_500.pt ├── hubert-soft-0d54a1f4.pt ├── hubert_base.pt └── nsf_hifigan ├── NOTICE.txt ├── NOTICE.zh-CN.txt ├── config.json └── model同时运行时脚本 start_docker.sh 会把仓库下的两个目录挂载进容器宿主机目录容器内目录用途docker_folder/model_dir/voice-changer/server/model_dir存放转换模型slot 模型对应启动参数--model_dir model_dirdocker_folder/pretrain/voice-changer/server/pretrain存放预训练权重hubert、crepe、rmvpe、nsf_hifigan 等对应各pretrain/...启动参数因此一个完整的部署目录通常形如docker_folder/ ├── model_dir/ # 转换模型 └── pretrain/ # 预训练权重从 server/const.py 可以推断服务器支持的变声引擎类型包括MMVCv13、MMVCv15、so-vits-svc-40、DDSP-SVC、RVC、Diffusion-SVC、Beatrice、LLVC、EasyVC而音高提取器Pitch Extractor类型包括harvest、dio、crepe、crepe_full、crepe_tiny、rmvpe、rmvpe_onnx、fcpe。准备权重时应依据你计划使用的引擎按需放置对应文件例如 RVC 依赖 hubert、rmvpe、nsf_hifigan 等。权重放置完成后需重新构建镜像docker build阶段会把docker_vcclient/weights作为构建上下文的一部分或直接在运行时通过挂载目录提供。四、启动服务bash start_docker.sh在仓库根目录执行bash start_docker.sh脚本默认行为start_docker.sh默认镜像dannadori/vcclient:20230826_211406未设置USE_LOCAL时从 Docker Hub 拉取默认端口18888映射规则为-p ${EX_PORT}:18888容器内固定 18888默认 GPU开启--gpus all并设置--shm-size1024M注入环境变量EX_IP宿主机 IP、EX_PORT、LOCAL_UID、LOCAL_GID宿主机当前用户 uid/gid供容器内降权使用服务端以-p 18888 --https true启动即容器内监听 18888 端口且启用 HTTPS同时通过命令行参数注入全部预训练权重路径-p 18888 --https true \ --content_vec_500 pretrain/checkpoint_best_legacy_500.pt \ --content_vec_500_onnx pretrain/content_vec_500.onnx \ --content_vec_500_onnx_on true \ --hubert_base pretrain/hubert_base.pt \ --hubert_base_jp pretrain/rinna_hubert_base_jp.pt \ --hubert_soft pretrain/hubert/hubert-soft-0d54a1f4.pt \ --nsf_hifigan pretrain/nsf_hifigan/model \ --crepe_onnx_full pretrain/crepe_onnx_full.onnx \ --crepe_onnx_tiny pretrain/crepe_onnx_tiny.onnx \ --rmvpe pretrain/rmvpe.pt \ --model_dir model_dir \ --samples samples.json这些参数分别对应 contentvec 500PyTorch/ONNX 双版本、HuBERT base、日语 HuBERTrinna、HuBERT-Soft、NSF-HiFiGAN 声码器、CREPEfull/tiny 两个 ONNX 版本与 RMVPE 音高提取器——正是上一节docker_folder/pretrain中需要准备的权重清单。启动后在浏览器中访问宿主机的https://宿主机IP:端口即可看到变声控制界面。文档特别提示目前仅支持 Chrome 浏览器。由于服务以--https true启动访问时使用的是 HTTPS 协议自签名证书场景下浏览器会提示风险确认。五、启动选项RUN with options原文档给出了三个可作用于start_docker.sh的环境变量全部在脚本顶部有默认值定义环境变量可选值默认值作用USE_GPUon/offon是否使用 GPU 推理EX_PORT任意可用端口号18888宿主机对外映射端口USE_LOCALon/offoff是否使用本地构建的vcclient镜像而非远程拉取5.1 关闭 GPUCPU 模式USE_GPUoff bash start_docker.sh脚本在USE_GPUoff时走 CPU 分支去掉--gpus all其余挂载与参数保持一致。适合无独显或仅做功能验证的环境。需注意CPU 模式下实时推理延迟会显著高于 GPU 模式且仍要求镜像基础环境CUDA 运行时库可被 CPU 回退执行。5.2 修改端口EX_PORTport bash start_docker.sh例如EX_PORT3000 bash start_docker.sh将宿主端口 3000 映射到容器内 18888浏览器访问地址随之变为https://宿主机IP:3000。多实例并行部署时可通过不同EX_PORT区分。5.3 使用本地镜像USE_LOCALon bash start_docker.sh脚本会将DOCKER_IMAGE切换为本地镜像名vcclient即第二章npm run build:docker:vcclient构建出的镜像跳过远程拉取。适合离线环境或需要调试自建镜像的场景。六、容器内部启动链路理解容器内部执行顺序有助于排查镜像构建成功但启动异常的问题。从 Dockerfile 与 setup.sh、exec.sh 可以还原出完整链路ENTRYPOINT 进入 setup.shsetup.sh读取LOCAL_UID/LOCAL_GID默认 9001用useradd -u $USER_ID -o -m user创建非 root 用户并对tmp_dir赋权chmod uogrwx降权执行 exec.shexec /usr/sbin/gosu user /bin/bash exec.sh $以普通用户身份把外层docker run追加的所有参数-p 18888 --https true --hubert_base ...等透传给exec.sh启动服务器exec.sh执行python3 MMVCServerSIO.py $即用透传的参数启动 server/MMVCServerSIO.py从而拉起完整变声服务器REST Socket.IO Web GUI。也就是说你在start_docker.sh里看到的所有--xxx参数最终都会经由docker run ... vcclient -p 18888 --https true ...→gosu user exec.sh→MMVCServerSIO.py一路传递到 Python 服务端成为模型初始化与推理配置。七、推送镜像到仓库仅开发者npm run push:docker:vcclient对应根目录 package.json 中的脚本push:docker:vcclient: bash script/003_pushDockerVCClient.sh。脚本 script/003_pushDockerVCClient.sh 的实现为data_tagdate %Y%m%d_%H%M%S docker login docker tag vcclient dannadori/vcclient:$data_tag docker push dannadori/vcclient:$data_tag即以时间戳如20260919_071234作为 tag把本地vcclient镜像重新打标为dannadori/vcclient:时间戳并推送。这是发布流程专用命令官方文档标注only for devs仅维护者使用普通用户无需执行。八、常见问题与排障提示以下排查方向均基于上文源码事实可作为快速定位思路浏览器打不开页面确认访问协议为 HTTPS--https true确认端口与EX_PORT一致且仅使用 Chrome 访问启动即报模型文件缺失检查docker_folder/pretrain与docker_folder/model_dir是否已放入 start_docker.sh 中列出的全部权重content_vec_500、hubert_base、hubert_base_jp、hubert_soft、nsf_hifigan、crepe_onnx_full/tiny、rmvpeGPU 不可用确认宿主已安装 NVIDIA 驱动与 nvidia-container-toolkit或改用USE_GPUoff bash start_docker.sh以 CPU 模式运行使用本地镜像失败确认已先执行npm run build:docker:vcclient生成vcclient镜像再用USE_LOCALon bash start_docker.sh容器内权限问题setup.sh会按LOCAL_UID/LOCAL_GID创建用户并赋予tmp_dir写权限若挂载目录属主异常可检查宿主机目录权限与传入的 uid/gid。九、总结docker_vcclient为 voice-changer 提供了开箱即用的容器化实时变声方案npm run build:docker:vcclient构建镜像bash start_docker.sh一键启动USE_GPU、EX_PORT、USE_LOCAL三个环境变量即可覆盖 GPU/CPU、端口定制与本地镜像三种主要部署形态。其内部以nvidia/cuda:11.8为基础环境通过setup.sh降权、exec.sh透传参数、MMVCServerSIO.py拉起服务权重统一由docker_folder/pretrain与docker_folder/model_dir挂载提供。如需深入服务器端实现可继续阅读 server/MMVCServerSIO.py、server/const.py 与 server/VoiceChangerManager.py。赞分享人工智能语音模型推理服务深度学习【免费下载链接】voice-changerリアルタイムボイスチェンジャー Realtime Voice Changer项目地址https://gitcode.com/gh_mirrors/vo/voice-changer点击查看免费下载相关推荐Hermes Studio构建企业级AI代理平台的完整解决方案Hermes Studio构建企业级AI代理平台的完整解决方案 在当今AI技术快速发展的时代企业需要一个既能满足本地部署需求又能提供强大可扩展性的AI代理人工智能语音模型推理服务深度学习Realtime Voice Changer Client for RVC 使用教程v1.5.2.4从模型部署到实时变声调优全指南Realtime Voice Changer Client for RVC 使用教程v1.5.2.4从模型部署到实时变声调优全指南 本教程面向要在 Rea人工智能语音模型推理服务深度学习Docker容器化部署一键部署大模型服务Docker容器化部署一键部署大模型服务 本文全面介绍了使用Docker容器化技术部署大模型服务的完整解决方案。从Docker的基础优势分析开始详细阐述了环大模型人工智能教程本地部署微调上一篇WPackagist完全指南如何使用Composer革命性管理WordPress插件和主题下一篇如何快速配置PostgreSQL连接池PgBouncer完整实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考