
unmute
给文本 LLM 装上耳朵和嘴巴,秒变语音助手
unmute 是一个让文本大模型获得语音输入和语音输出能力的开源工具,核心目标是把原本只能处理文字的 LLM 变成可以自然对话的语音助手。它通过串联语音识别、LLM 推理和语音合成三个环节,实现类似实时语音聊天的体验。项目支持接入多种主流语音识别与 TTS 服务,也允许本地部署模型,用户只需配置好 API 或本地模型路径,就能让任意文本 LLM 开口说话并听懂人话。相比从零搭建语音对话系统,unmute 把音频采集、流式识别、对话管理和语音合成封装成可运行的管道,降低了实验门槛。适合开发者快速验证语音交互想法,或为已有文本 LLM 增加语音接口。项目用 Python 编写,结构清晰,便于二次开发和替换组件。
项目数据
使用教程
环境要求
- 支持 CUDA 的 GPU,显存至少 16 GB
- CPU 架构必须为 x86_64(官方无 aarch64 计划)
- 操作系统:Linux,或 Windows + WSL;不支持原生 Windows 与 macOS
- 远程访问需能使用 SSH 端口转发
安装与启动步骤
-
1检查硬件环境
先确认显卡为 CUDA GPU 且显存≥16GB,架构 x86_64;系统用 Linux 或 Windows+WSL,Mac 与原生 Windows 均不支持。
-
2克隆仓库
把 unmute 源码拉到本地,仓库内同时包含 Docker Compose 与无 Docker 两套部署说明,按需选择。
git clone https://github.com/kyutai-labs/unmute cd unmute -
3选择部署方式
官方推荐 Docker Compose:单机一条命令启停全部服务、环境可复现;也可用 Dockerless 手动逐个启动服务。
-
4安装 pre-commit 钩子
无 Docker 方式需先装好 pre-commit 可执行文件,建议用 pip 全局安装而非虚拟环境,再在仓库里安装钩子。
pip install pre-commit pre-commit install --hook-type pre-commit -
5启动后端服务
用 uv 运行 FastAPI 后端主程序,开发模式自带自动重载;上线时把 dev 换成 run 走生产模式。
uv run fastapi dev unmute/main_websocket.py -
6打开前端连接
前端默认监听 3000 端口、后端 8000;Docker Compose 方案默认走 80 端口,浏览器打开后点 connect 建立 websocket。
-
7远程访问做端口转发
本机执行 SSH 隧道;Compose 只需转发 80,Dockerless 要分别转发后端 8000 和前端 3000。
ssh -N -L 3333:localhost:80 unmute-box ssh -N -L 8000:localhost:8000 -L 3000:localhost:3000 unmute-box -
8运行负载测试
用自带脚本模拟多路并发对话,测量延迟与吞吐;server-url 指向后端 websocket 地址即可。
uv run unmute/loadtest/loadtest_client.py --server-url ws://localhost:8000 --n-workers 16
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
--server-url | 是 | loadtest 脚本要连接的后端 WebSocket 地址 | ws://localhost:8000 |
--n-workers | 否 | loadtest 并发模拟对话的 worker 数量 | 16 |
如何确认成功
浏览器打开 localhost:3000(或端口转发后的 localhost:3333),点 connect 能建立 websocket 并正常语音对话;loadtest 脚本能持续输出延迟与吞吐数据。
常见问题
Q:能在 Mac 或原生 Windows 上运行吗?
A:不能。官方明确仅支持 Linux 或 Windows+WSL,macOS 与原生 Windows 均未支持,分别对应 issue #74 和 #84。
Q:对显卡有什么硬性要求?
A:需要一块支持 CUDA 的 GPU,显存至少 16GB,CPU 架构必须为 x86_64,官方没有支持 aarch64 的计划。
Q:三种部署方式该选哪个?
A:推荐 Docker Compose(1 台及以上 GPU,很简单);无 Docker 方式适合灵活拆分服务;Docker Swarm 仅展示官方如何扩展 unmute.sh,官方不提供调试支持。
Q:远程服务器上为什么点 connect 没反应?
A:HTTP 连接下浏览器出于安全限制通常禁止使用麦克风,即使能直接访问服务器也必须做 SSH 端口转发,改成通过 localhost 访问。
Q:前端后端的端口分别是多少?
A:无 Docker 方案后端为 8000、前端为 3000;Docker Compose 方案默认跑在 80 端口。
注意事项
- Docker Swarm 部署只用于展示官方如何部署和扩展 unmute.sh,多节点调试困难,官方不提供支持。
- 非 HTTPS 场景下必须做端口转发,因为浏览器只允许 localhost 使用麦克风。
- 官方建议用 uv 管理 Python 依赖,文档中的命令默认基于 uv。
- 服务数量较多,优先用 Docker Compose 以获得可复现环境并避免依赖问题。
核心亮点
- 把语音识别、LLM 和 TTS 串成完整对话管道,开箱即可跑通语音聊天
- 支持接入多种主流 ASR/TTS 服务,也兼容本地模型,灵活替换组件
- Python 实现,代码结构清晰,方便开发者按需定制和二次开发
不足之处
- 实时性和打断处理依赖具体后端配置,默认体验可能不够流畅
- 文档和示例相对精简,新手接入本地模型时可能需要自行摸索
适用场景
- 为已有文本 LLM 快速增加语音对话能力
- 开发本地部署的语音助手原型
- 验证语音交互产品想法时作为基础框架
替代项目
bark、whisper、piper
项目介绍
同类项目推荐
obs-localvocal
开源
直播录屏时,本地AI实时生成字幕,保护隐私零延迟
OBS plugin for local speech recognition and captioning using AI
LiveCaptions-Translator
开源
实时捕获系统音频,一键翻译成你懂的语言
Lightweight and powerful real-time audio/speech translation tool based on Windows Li···
speechbrain
开源
一站式 PyTorch 语音工具箱,快速搞定识别、说话人验证等任务
A PyTorch-based Speech Toolkit
whisper-diarization
开源
给语音转写加上说话人标签,会议记录一目了然
Automatic Speech Recognition with Speaker Diarization based on OpenAI Whisper