willow-inference-server
本地化语音AI推理服务:ASR+TTS+WebRTC三合一,6GB显存即可同时跑 Whisper 全系模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
本地化语音AI推理服务:ASR+TTS+WebRTC三合一,6GB显存即可同时跑 Whisper 全系模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是一名独立开发者,正在开发一款隐私敏感的语音助手应用。用户的数据不能上传到第三方服务器,但你又不想放弃流畅的多语言语音交互体验。OpenAI 的 Whisper API 够快,但数据隐私无法保障;本地部署 whisper.cpp 够隐私,但速度慢得让人崩溃。有没有两全其美的方案?
Willow Inference Server(WIS) 就是这个问题的答案。这是一款开源、本地部署、高度优化的语音和语言推理服务器,专注解决"隐私优先 + 性能不妥协"的核心矛盾。GitHub 506 stars,由 Tovera Inc 开发维护,Apache-2.0 开源协议。
WIS 最初是 Tovera 公司为其开源语音助手 Willow 提供后端推理能力而构建的。Willow 是一个树莓派风格的语音助手项目,在 GitHub 上同样获得了不少关注。
随着项目发展,开发者意识到这套推理框架具有极高的通用价值——它不仅服务于 Willow 本身,还可以作为独立的推理服务器,供任何需要本地语音/语言 AI 能力的应用接入。因此,WIS 从 Willow 的内部模块独立出来,成为了一个专注推理性能的通用服务端产品。
项目的核心理念很明确:让普通开发者也能用上企业级的本地 AI 推理能力。为此,WIS 对硬件的要求一再降低——最初需要专业级 GPU,如今最低只需一张 GTX 1060 3GB,就能跑通整套 ASR+TTS 服务。
WIS 的功能设计围绕语音和语言处理展开,主要分为三大模块:
这是 WIS 最成熟、功能最丰富的模块。基于 OpenAI 的 Whisper 模型,通过 CTranslate2 推理引擎(而非原生 PyTorch)进行加速推理,实现 3-648 倍实时速度(取决于 GPU 型号和模型大小)。
支持的传输方式:
支持的语言:99 种语言,包括中文(zh)、英语(en)、日语(ja)、韩语(ko)等主流语言,以及大量小语种。
性能亮点:README 中提供了详尽的 Benchmark 数据。RTX 4090 + Whisper large-v2 模型,3840ms 音频推理仅需 140ms(27 倍实时);即便使用最入门的 Tesla P4(百元级二手 GPU),也能达到 3 倍实时。树莓派 4 上运行 tiny 模型可达到 1.15 倍实时。
基于 Coqui XTTS 模型,支持自定义声音克隆。WIS 提供多套预置音色配置(xtts/male.json、female.json、CLB.json 等),用户也可以用自己的录音训练专属声音。TTS 主要服务于两类场景:
WIS 实现了完整的 WebRTC 服务端能力,包括:
/rtc)和 TypeScript 客户端 SDK(willow-ts-client)WIS 选择 CTranslate2 而非原生 Whisper PyTorch 实现,是性能优化的关键决策。CTranslate2 是 OpenNMT 出品的 Transformer 推理引擎,支持 INT8/FP16 量化,能将推理速度提升 2-4 倍,同时显著降低显存占用。
这也是为什么 WIS 能在 6GB VRAM 内同时加载 Whisper base、medium、large-v2 三个模型的原因。
| 层级 | 技术选型 |
|---|---|
| Web 框架 | FastAPI + Uvicorn + Gunicorn |
| ASR 模型 | OpenAI Whisper + CTranslate2 |
| TTS 模型 | Coqui XTTS |
| 音频处理 | Librosa, PyAV, torchaudio |
| WebRTC | aiortc(Python WebRTC 库) |
| 流媒体服务 | Nginx(反向代理 + TLS 终止) |
| 容器化 | docker-compose(wis + coqui + nginx 三服务) |
docker-compose 中部署了三组服务:
运行时通过 .env 文件覆盖默认配置,核心参数在 settings.py 中管理:
whisper_model_default:默认模型大小(tiny/base/small/medium/large)beam_size:beam search 宽度,影响精度和速度preload_all_models:是否预加载所有模型support_chunking:是否启用显存分块(低显存 GPU 必备)concurrent_gpu_chunks:GPU 并发分块数用户可通过 custom_settings.py 覆盖默认配置,实现个性化部署。
git clone https://github.com/toverainc/willow-inference-server.git
cd willow-inference-server
./deps/ubuntu.sh # 安装系统依赖
./utils.sh install # 安装
./utils.sh gen-cert your-hostname # 生成 TLS 证书
./utils.sh run # 启动服务
启动后访问:
https://your-host:19000/https://your-host:19000/rtchttps://your-host:19000/api/docsREADME 明确提到 WIS 在 Windows WSL2 环境下测试通过,ASR+STT 仅需 4GB VRAM,可在 8GB 显存的 GPU 上与 Windows 桌面任务并行运行。
项目作者在 README 中直接表明立场:"CUDA 优先,CPU 是次要目标"。虽然 CTranslate2 本身支持 CPU 推理,但 WIS 的优化方向始终围绕 GPU 性能展开。对于没有 NVIDIA GPU 的用户,项目建议购买二手 GTX 1070(百元左右)而非依赖 CPU。
README 末尾提到"1.0 版本前会提供可直接部署的 Docker 镜像"。目前 docker-compose 使用的是自行构建镜像,虽然提供了 Dockerfile,但镜像构建流程对新手仍有一定门槛。
当前 TTS 主要使用 Coqui XTTS 模型,README 中提到在征集社区反馈,寻找更好的 TTS 实现方案。Coqui 项目本身也有争议(部分模型存在许可问题)。
三服务架构(wis + coqui + nginx)+ 多环境变量 + GPU 配置,对没有 Docker 和 WebRTC 经验的开发者来说,上手曲线不低。
WIS 体现了 AI 推理部署领域的一个明显趋势:从"能用云服务"到"必须本地化"的范式转变。随着隐私法规趋严和数据主权意识提升,越来越多的开发者寻求在不依赖云服务的前提下部署 SOTA 模型。WIS 通过 CTranslate2 优化 + 多模型显存管理 + WebRTC 实时流这套组合拳,精准命中了"隐私敏感 + 性能敏感"的应用场景。
从技术演进角度看,项目的发展路径也值得关注:最初需要专业级 GPU,如今用百元二手卡就能跑通全套服务。随着 CTranslate2 持续优化和量化技术的进步,未来在更低成本的硬件上部署高质量语音 AI 是完全可期的。
GitHub 仓库:toverainc/willow-inference-server
Stars: 506 | Forks: 59
License: Apache-2.0
主要语言: Python