什么是Willow推理服务器?
Willow推理服务器(WIS)是一个专注且高度优化的语言推理服务器实现。它的目标是"自动"实现高性能、低成本的自托管,以支持最先进的语音和语言处理任务。WIS主要具有以下特点:
-
支持多种任务:自动语音识别(ASR)、文本到语音转换(TTS)和大型语言模型(LLM)。
-
优化的性能:针对CUDA进行优化,支持从入门级GPU(如Tesla P4、GTX 1060)到高端GPU(如RTX 4090)。也可以仅使用CPU运行。
-
内存优化:在6GB显存内同时加载三个默认Whisper模型(base、medium、large-v2)并支持TTS。LLM支持默认为int4量化。
-
多种传输方式:支持REST、WebRTC和WebSocket。
-
灵活配置:用户可以根据应用需求动态选择和配置Whisper模型和参数。
主要功能
自动语音识别(ASR)
WIS对Whisper模型进行了高度优化,以实现高质量、近实时的语音识别。它支持多种输入方式,包括Willow设备、WebRTC、文件上传等。对于大多数预期的语音任务,处理时间可以控制在数百毫秒以内。
文本到语音转换(TTS)
WIS提供TTS功能,主要用于助手任务(如Willow!)和视障用户。它还支持自定义TTS语音,只需较小的音频录音即可创建和管理自定义语音。
大型语言模型(LLM)
WIS可以选择性地将输入通过配置的LLM进行处理,用于问答、聊天机器人和助手任务。目前支持LLaMA衍生模型,特别推荐使用Vicuna(13B版本)。内置支持量化到int4以节省GPU内存。
WebRTC支持
WIS对WebRTC进行了大量优化,支持从浏览器或WebRTC应用程序实时流式传输音频,以优化质量和响应时间。它还针对长时间运行的会话进行了优化,使用WebRTC音轨管理技术,可以将会话保持开放数天,同时实现数百毫秒内的自托管ASR转录,并节省网络带宽和CPU资源。
硬件要求和性能
WIS主要针对CUDA进行优化,因为便宜GPU(如Tesla P4和GTX 1060)的性能、成本和功耗优势太好了,不容忽视。目前支持的最低硬件配置为GTX 1060 3GB(ASR和TTS需要6GB)。
以下是一些性能基准测试结果:
设备 | 模型 | Beam大小 | 语音时长(ms) | 推理时间(ms) | 实时倍数 |
---|---|---|---|---|---|
RTX 4090 | large-v2 | 5 | 3840 | 140 | 27x |
GTX 1060 | large-v2 | 5 | 3840 | 1114 | 3x |
GTX 1070 | medium | 1 | 3840 | 424 | 9x |
GTX 1070 | base | 1 | 3840 | 70 | 54x |
可以看到,实时倍数随着语音片段的延长而显著增加。使用WebRTC或Willow时,浏览器/Willow和支持的应用程序中的端到端延迟是上述数字加上网络延迟响应时间。
部署和配置
安装依赖
对于CUDA支持,您需要为支持的硬件安装NVIDIA驱动程序。推荐使用Nvidia驱动程序版本530。
# 克隆仓库:
git clone https://github.com/toverainc/willow-inference-server.git && cd willow-inference-server
# 确保安装了nvidia-container-toolkit而不是nvidia-docker
# 在Arch Linux上:
yay -S libnvidia-container-tools libnvidia-container nvidia-container-toolkit docker-buildx
# Ubuntu:
./deps/ubuntu.sh
安装、配置和启动WIS
# 安装
./utils.sh install
# 生成自签名TLS证书(或在nginx/key.pem和nginx/cert.pem放置"真实"证书)
./utils.sh gen-cert [your hostname]
# 启动WIS
./utils.sh run
配置
系统运行时可以通过在WIS根目录放置一个.env
文件来覆盖utils.sh
设置的任何变量进行配置。您还可以通过复制settings.py
到custom_settings.py
来更改更多WIS特定参数。
使用场景和应用
-
家庭助手集成:将WebRTC与Home Assistant仪表板集成,支持直接从桌面或移动设备的HA仪表板流式传输音频。
-
桌面/移动转录应用:开发独立的语音转文本应用程序。
-
桌面/移动助手应用:将Willow集成到各种设备和平台中。
-
自定义语音助手:利用WIS的ASR、TTS和LLM功能,构建个性化的语音交互系统。
-
实时字幕生成:为视频会议、直播等场景提供实时语音转文字服务。
-
多语言支持:随着Meta发布支持1000多种语言的MMS模型,WIS未来可以扩展到更多语言的语音识别和合成。
未来展望
-
更好的TTS:正在寻求社区反馈,以选择更优秀的TTS实现和语音。
-
TTS缓存:支持TTS输出的磁盘缓存,以实现闪电般快速的TTS响应时间。
-
支持更多语言:随着Meta发布MMS,WIS计划支持更多语言的语音转文本和文本转语音。
-
代码重构和模块化:在1.0版本发布之前,WIS将进行代码重构、模块化和文档改进。
-
功能链接(应用程序):可能支持用户定义模块,将多个支持的任务链接在一个请求中,例如:
- 语音输入 -> LLM处理 -> 语音输出
- 语音输入 -> 调用任意API -> 语音输出
总的来说,Willow推理服务器为开发者和用户提供了一个强大、灵活且高效的语音和语言处理平台。通过其优化的性能、多样的功能和开放的架构,WIS为构建下一代智能语音应用开辟了新的可能性。无论是家庭自动化、辅助技术,还是企业级语音服务,WIS都为创新提供了坚实的基础。