在自己的服务器上跑开源配音工具 VoiceStudio,部署前后最常问的 10 个问题

12次阅读
没有评论

共计 5727 个字符,预计需要花费 15 分钟才能阅读完成。

先给最短路径。一台 x86 的 Linux 机器,装好 Docker,下面三条命令跑完,在本机浏览器打开 http://localhost:3900 就能用:

export OMNIVOICE_API_KEY="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
docker pull ghcr.io/debpalash/voicestudio:stable
docker run -d --name omnivoice \
  -p 127.0.0.1:3900:3900 \
  -e OMNIVOICE_API_KEY="$OMNIVOICE_API_KEY" \
  -v omnivoice-data:/app/omnivoice_data \
  ghcr.io/debpalash/voicestudio:stable

命令全部来自项目的 Docker 安装文档(docs/install/docker.md)。我这次没有在自己的服务器上把镜像拉下来跑一遍,下面凡是要看你机器情况的地方,我会写清楚是文档怎么说的。

1. VoiceStudio 是干什么的?

一句话:在你自己的机器上做声音克隆、按描述设计新声音、给视频配音、听写转录和做有声书。README 写的是支持 646 种语言,默认引擎叫 VoiceStudio,底层用的是 k2-fsa 的 OmniVoice,也可以换别的引擎。

它有桌面版(macOS、Windows、Linux),有手机预览版,也有 Docker 镜像。Docker 版把后端和网页界面打包在一起,你用浏览器访问,适合放在没有桌面环境的服务器上。

数字先放这里:截至 10 月 27 日下午,GitHub 上约 9 万个 star(89,959),约 9,900 个 fork,许可证 AGPL-3.0。v0.5.7 在北京时间 10 月 26 日 22:59 发布,10 月 27 日下午它在 GitHub Trending 日榜上显示当天新增 2,297 个 star。

在自己的服务器上跑开源配音工具 VoiceStudio,部署前后最常问的 10 个问题
图片来源:VoiceStudio 项目 README

2. 我的 VPS 没有显卡,能跑吗?

能跑,就是慢。README 的硬件表里写得很直白:没有独立显卡的机器可以完整使用,速度会慢一些,CPU 版 PyTorch 大约需要 5 GB 空闲磁盘。

有 NVIDIA 显卡的机器,在 docker run 里加一个 --gpus all:

docker run -d --name omnivoice --gpus all \
  -p 127.0.0.1:3900:3900 \
  -e OMNIVOICE_API_KEY="$OMNIVOICE_API_KEY" \
  -v omnivoice-data:/app/omnivoice_data \
  ghcr.io/debpalash/voicestudio:stable

前提是宿主机装好了 NVIDIA Container Toolkit,不然 --gpus 这个参数会直接报错。

AMD 显卡要换成 :stable-rocm 镜像,把显卡设备直接映射进去:

docker run -d --name omnivoice \
  --device /dev/kfd --device /dev/dri \
  -p 127.0.0.1:3900:3900 \
  -e OMNIVOICE_API_KEY="$OMNIVOICE_API_KEY" \
  -v omnivoice-data:/app/omnivoice_data \
  ghcr.io/debpalash/voicestudio:stable-rocm

内存要多少,文档没有给一个统一的数。它的说法是不同引擎需求不同,看 docs/performance.md。我自己的判断是 1 GB、2 GB 内存的小鸡不用试了,模型文件本身就有几个 GB。这一点我没有实测,只是按模型体积推的。

3. 我是 ARM 机器,能用 Docker 吗?

大多数情况不行。主镜像(:stable、:latest 这些)只有 linux/amd64。在 ARM 机器上直接拉,文档说会看到这个错误:

no matching manifest for linux/arm64/v8 in the manifest list entries

分三种情况:

  • ARM 服务器带 NVIDIA 显卡(文档点名 DGX Spark / GB10、GH200、GB200):用专门的 :stable-cuda-arm64 镜像。
  • Apple Silicon 的 Mac:别用 Docker,装原生 macOS App,能用上 Metal 加速。容器里调不到 Mac 的 GPU。
  • 其他 ARM 机器:可以在 pull 和 run 的镜像名前面加 --platform linux/amd64 走模拟,文档原话是 inference can be much slower,而且只对 CPU 有意义。

还有一个容易忽略的:Intel 芯片的 Mac 只能跑界面,要连一台远程后端。

在自己的服务器上跑开源配音工具 VoiceStudio,部署前后最常问的 10 个问题

4. OMNIVOICE_API_KEY 是干嘛的?能不设吗?

不能省。文档解释了原因:Docker 的网络地址转换让后端没法确认浏览器是不是在本机,所以设置页和诊断这些管理操作必须带一个管理员 Key,哪怕端口只绑在 127.0.0.1 上也一样。

用 compose 启动时,配置文件里写的是 ${OMNIVOICE_API_KEY:?...},没设这个变量,compose 会直接拒绝启动,并提示你先 export 一个长随机 Key。

网页第一次打开会让你输入这个 Key,它换成一个短期会话,不会把主 Key 存在浏览器里。所以生成 Key 的那个终端先别关,或者把 Key 记到密码管理器里。

5. 用 docker run 还是 docker compose?

只是想试试,开头那条 docker run 已经够了。打算长期放在服务器上,再换成文档标注推荐的 compose。它要先把仓库克隆下来,因为 compose 文件在 deploy/ 目录里:

git clone https://github.com/debpalash/VoiceStudio.git
cd VoiceStudio
export OMNIVOICE_API_KEY="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
# 三选一
docker compose -f deploy/docker-compose.yml --profile cpu up -d
docker compose -f deploy/docker-compose.yml --profile gpu up -d
docker compose -f deploy/docker-compose.yml --profile rocm up -d

compose 起来的容器名和 docker run 不一样:CPU 版叫 omnivoice-studio,NVIDIA 版叫 omnivoice-studio-gpu,ROCm 版叫 omnivoice-studio-rocm。后面看日志、进容器时别敲错。

我更偏向长期用 compose,它自带健康检查,更新也只要两条命令(第 10 问)。

6. 第一次启动为什么半天打不开?

先是镜像本身大。我用 GitHub 容器仓库的接口查了 :0.5.7 的 amd64 镜像,20 层压缩后加起来 5,808,023,806 字节,约 5.8 GB,这还没算模型。小硬盘的 VPS 先 df -h 看一眼。

镜像拉完、容器起来以后,它还要下模型。docker.md 写的是首次运行下载约 2.4 GB 模型权重,compose 文件开头的注释写的是约 4 GB。两处数字不一样,按 4 GB 准备磁盘和时间比较稳。

看下载进度:

docker logs -f omnivoice           # docker run 启动的
docker logs -f omnivoice-studio    # compose CPU 版

compose 文件里的健康检查跑的是 curl -sf http://localhost:3900/health,等它通过再打开页面。

模型从 Hugging Face 下载。VoiceStudio 会自动在 huggingface.co 和镜像站 hf-mirror.com 之间测速选一个快的,人在海外一般会走官方站。想固定某一个,设环境变量 HF_ENDPOINT。

后面如果在设置里装「Max」模型包,体积会大很多。README 的截图里,Max 包 5 个模型一共 8.5 GB,其中 VoiceStudio TTS 2.4 GB,Whisper large-v3 2.9 GB。

在自己的服务器上跑开源配音工具 VoiceStudio,部署前后最常问的 10 个问题
在自己的服务器上跑开源配音工具 VoiceStudio,部署前后最常问的 10 个问题
图片来源:VoiceStudio 项目 README

7. 镜像标签选 :stable 还是 :latest?

选 :stable。

很多项目的 :latest 就是最新正式版,这个项目不是。它的 :latest 和 :main 是 main 分支每次提交滚动构建的预览版,发正式版不会动它。:stable 才跟着 GitHub Release 走。

想再稳一点,可以钉死到具体版本号,比如 :0.5.7(我查过这个标签已经发布)。这样哪天上游推了有问题的新版,你的服务不会跟着变。代价是要自己记得手动升级。

8. 想在手机或另一台电脑上用,怎么安全地连过去?

默认配置只让本机访问,这是故意的。端口映射写的是 127.0.0.1:3900:3900,左边那个 127.0.0.1 决定了只有服务器自己能连。

按安全程度从高到低,有三种连法。

SSH 隧道。 不改任何配置,在你自己的电脑上执行(这条是通用 SSH 用法,不是项目文档里的):

ssh -L 3900:127.0.0.1:3900 用户名@服务器IP

连上以后,在自己电脑浏览器打开 http://localhost:3900 。关掉 SSH,通道就断了。

Tailscale 这类私有组网。 项目文档写了它返回的是相对地址,放在 Tailscale 或反向代理后面也能用。本站之前有一篇用 Tailscale 搭回国通道的教程,装法一样,装好后用 Tailscale 分配的地址访问。这种方式需要把端口从 127.0.0.1 改成能被组网网卡访问到。

域名加反向代理。 要改端口映射,再配 HTTPS。如果网页和接口放在不同域名下,文档要求设两个变量:

docker run -e OMNIVOICE_API_KEY="$OMNIVOICE_API_KEY" \
  -e OMNIVOICE_PUBLIC_API_BASE=https://api.your-host.example \
  -e OMNIVOICE_ALLOWED_ORIGINS=https://ui.your-host.example \
  -p 0.0.0.0:3900:3900 \
  ghcr.io/debpalash/voicestudio:stable

有一条我建议当成硬规矩:不要把 3900 端口直接用 http 暴露到公网。compose 文件的注释原话是流量一离开完全可信的局域网,就要用 HTTPS 或加密的私有网络。API Key 只能证明你是谁,挡不住别人在路上看到你的请求。

在自己的服务器上跑开源配音工具 VoiceStudio,部署前后最常问的 10 个问题

9. 能不能让脚本或 AI 助手调用它?

这是它和一般配音软件差别最大的地方。后端在 3900 端口上开了几种接口,docs/speech-platform.md 里列了这些:

  • OpenAI 兼容的转录接口:POST /v1/audio/transcriptions,现成的 OpenAI SDK 改个地址就能用
  • 实时转录 WebSocket:/v1/audio/transcriptions/stream
  • MCP:POST /mcp/,给 Claude Code、Codex 这类助手接

先用这条命令看它支持什么:

curl http://127.0.0.1:3900/.well-known/voicestudio-speech

文档写的是本机回环地址的调用不用带凭据,远程调用要带上 Key。不过第 4 问说过,Docker 的地址转换会让后端看不出请求来自本机,所以容器部署时我建议脚本一律带上 Authorization: Bearer $OMNIVOICE_API_KEY,省得被拒了再排查。

10. 声音克隆有哪些不能碰的?怎么更新和卸载?

先说授权。README 里 License 那一节的原话是 Clone voices only with permission,只克隆你获得许可的声音。软件本身是 AGPL-3.0,可以商用,但要满足 AGPL 的条件;模型权重、音色和生成内容的使用条件另算,在 Model Manager 里能看到各个模型的来源说明。拿它给自己的视频配音没问题,拿别人的声音去做东西之前,先把授权问清楚。

还有一个设置:文档说产品分析默认需要你在首次启动时同意才会打开,想彻底关掉,启动时加 -e OMNIVOICE_ANALYTICS_DISABLED=1。

更新。compose 部署的,在仓库目录下执行:

docker compose -f deploy/docker-compose.yml --profile cpu pull
docker compose -f deploy/docker-compose.yml --profile cpu up -d

docker run 部署的,先 docker pull 新镜像,再删掉旧容器、用原来的命令重建。数据存在 omnivoice-data 这个卷里,删容器不会丢模型和项目。

卸载。下面是 Docker 的通用命令:

docker rm -f omnivoice
docker volume rm omnivoice-data   # 这一步会删掉已下载的模型和你的项目,确认不要了再执行

我这次没有动手部署,上面这些是对着官方文档一条条核过的。哪位在 2 核 4 GB 的纯 CPU 小鸡上跑过,生成一段 30 秒的配音要多久,欢迎在评论区告诉我一个真实数字。

来源:

正文完
 0

版权声明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。

科技喵仔
版权声明:本站原创文章,由 科技喵仔 于2026-10-27发表,共计5727字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码