大家好!我最近基于 mlx-audio 这个 python 库,vibe coding 出来一个纯本地 TTS 项目——mlx-audio-bridge(GitHub: https://github.com/QuasarRyan/mlx-audio-bridge),专为 Apple Silicon Mac(M1/M2/M3/M4/M5)打造。
它是基于 MLX 框架的音频库 mlx-audio 接入 Qwen3-TTS(阿里最新开源TTS模型)的一个实现,能把本地音频推理桥接成完整兼容 OpenAI 的 /v1/audio/speech 端点!
现在 OpenClaw 官方已原生支持自定义 OpenAI-compatible baseUrl(详见官方TTS文档:https://docs.openclaw.ai/tts),所以我们 Mac 养虾人终于可以抛弃云端 API,实现完全离线、超低功耗的 TTS 语音回复了!
效果有多强?
中文发音自然度拉满,支持 voice clone/voice design
M1 即可快速生成(1.7B-8bit 量化)
直接丢进 OpenClaw 的 messages.tts.openai.baseUrl,自动走本地服务
完全免费、无 API 限额、无网络依赖
下面是完整傻瓜式教程,复制粘贴就能跑!(亲测 M1 + OpenClaw 最新版通过)
确保 Mac 是 Apple Silicon 版(Intel版用户抱歉,MLX 只支持M系列)
安装 Homebrew(如果没有):
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 3. 安装核心工具:
brew install uv ffmpeg cd /opt && sudo git clone https://github.com/QuasarRyan/mlx-audio-bridge.git sudo chown -R $(whoami):staff /opt/mlx-audio-bridge && cd mlx-audio-bridge 创建虚拟环境并安装
UV_CACHE_DIR=.uv-cache UV_PROJECT_ENVIRONMENT=.venv uv sync --python 3.13 --extra dev 项目不会自动下载,需要手动从 Hugging Face mlx-community 集合获取:
推荐 6bit 量化起步(速度/质量平衡最好),实测 M1 跑 1.7B-8bit 几乎可以达到实时1x速率生成:
去 https://huggingface.co/collections/mlx-community/qwen3-tts
Base/CustomVoice/VoiceDesign 分别各下载一个(建议先下 0.6B 轻量版测试)
下载完整个文件夹(包含 safetensors、config.json、speech_tokenizer 文件夹等),放到下述目录里:
/opt/mlx-audio-bridge/models 文件结构应类似下面这样:
# 示例
/opt/mlx-audio-bridge/models/
├── Qwen3-TTS-12Hz-Base-0.6B-8bit/
├── Qwen3-TTS-12Hz-Base-0.6B-4bit/
└── Qwen3-ASR-0.6B-8bit/ (服务器会自动按 8bit→6bit→4bit 顺序选最优模型)
export QWEN_MODEL_DIR=/opt/mlx-audio-bridge/models export API_KEY=local-dev-key # 请将 local-dev-key 替换成自定义密钥,OpenClaw要用 export PORT=8008 # 默认端口 (可选)如果要在局域网/公网上使用
export BIND_ADDRESS=0.0.0.0 启动(推荐用 tmux 或 launchd 后台跑,详见GitHub仓库README.md)
mlx-audio-bridge-server 看到 Listening on http://127.0.0.1:8008 或者是 Listening on http://0.0.0.0:8008 就成功了!
测试一下(终端curl):
curl http://127.0.0.1:8008/v1/audio/speech \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini-tts",
"input": "养虾人你好,这里是本地Qwen3-TTS在为你服务!",
"voice": "alloy",
"response_format": "wav"
}' --output ~/Downloads/test.wav 在下载文件夹中打开 test.wav 听听,中文超自然对吧?
打开你的 openclaw.json(或对应配置文件),在 messages.tts 字段里加入响应配置,示例如下:
{
"messages": {
"tts": {
"auto": "always", // 或 "inbound" / "tagged"
"provider": "openai",
"openai": {
"baseUrl": "http://127.0.0.1:8008", // 或者把127.0.0.1换成mac所在的内网IP地址
"apiKey": "local-dev-key", // 必须和上面export一致
"model": "gpt-4o-mini-tts", // 支持OpenAI所有别名
"voice": "alloy" // alloy/echo/fable等映射到Qwen声音
},
"edge": {
"enabled": false, // 禁用默认的edge tts
},
"maxTextLength": 500 // 最大上传500个字
"timeoutMs": 120000 // 最大120秒超时
}
}
} 保存后重启 OpenClaw(或用 /tts status 检查)。
搞定!以后所有回复都会走本地 Qwen3-TTS 生成语音,直接在 Telegram 里变语音气泡~
语音克隆/微调参数:配置 voices.json(项目deploy文件夹有示例),输入参考音频就能永久克隆你的声音
后台常驻:用 launchd 一键开机自启(项目 deploy 文件夹有plist模板)
多语言:自动识别中文/英文,日语韩语也支持
端口冲突?改 PORT=8009 并同步改baseUrl
模型加载失败?检查文件夹名是否精确匹配 Qwen3-TTS-12Hz-xxx
OpenClaw报错401?密钥不一致
想切换模型?设置export QWEN_TTS_MODEL_NAME=你的模型文件夹名 OpenClaw 官方原生支持自定义 baseUrl(最近才完善)
MLX 原生加速,功耗更低,速度更快(当前场景比torch-audio快数倍)
Qwen3-TTS 2026最新开源,中文表现吊打老模型
完全本地,隐私安全,永不掉线,只付电费,更省钱
现在就去试试吧!跑通后把你的语音效果截图发出来,我们一起在 OpenClaw小站 交流~
养虾人冲!本地 TTS 时代来了!🚀
项目地址:https://github.com/QuasarRyan/mlx-audio-bridge
官方TTS接入文档:https://docs.openclaw.ai/tts