MLX-Audio 实战:M 芯片上跑通本地语音合成与转写的最短路径
2026/9/20 5:42:22 网站建设 项目流程

MLX-Audio 实战:M 芯片上跑通本地语音合成与转写的最短路径

【免费下载链接】mlx-audioA text-to-speech (TTS), speech-to-text (STT) and speech-to-speech (STS) library built on Apple's MLX framework, providing efficient speech analysis on Apple Silicon.项目地址: https://gitcode.com/GitHub_Trending/ml/mlx-audio

给 macOS 应用加语音功能,却不想依赖云端 TTS API:每次调用都要走外网,费用按字数计,长文本批量生成又慢又贵。反过来,两小时的会议录音属于敏感数据,也不方便直接丢给在线转写接口。MLX-Audio 是构建在 Apple MLX 框架上的语音 AI 库,文本转语音、语音转文本、语音转语音都直接在 M1–M4 芯片上本地运行。

从 pip 安装到第一条声音,30 秒

安装只要一行,CLI 自带--play开关,生成完直接出声,不用管文件路径:

pip install mlx-audio mlx_audio.tts.generate \ --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit \ --text "你好,这是本地运行的 MLX-Audio" \ --voice Vivian --play

--voice只对带预设音色的模型生效(如上例的 Qwen3-TTS CustomVoice 版),Base 版没有预设音色,需要传参考音频或用 csm-1b 这类克隆模型。模型首次运行会从模型仓库自动下载,CLI 与 Python 共用同一份缓存。完整参数见 CLI 快速上手文档。

模型能力地图:TTS、STT、STS 各选谁

仓库内置 20 多个 TTS 模型、20 个 STT 模型和 7 个 STS 模型,不必全懂,先看这张表:

能力代表模型语言覆盖备注
文本转语音 TTSKokoro-82M、Qwen3-TTS、Higgs Audio v3、OmniVoice、CSM、Chatterbox、Voxtral TTS、VoxCPM2英、中、日、韩及 20 余种欧洲语言;OmniVoice 覆盖 600+语速调节、音色预设、零样本声音克隆
语音转文本 STTWhisper、Parakeet、Qwen3-ASR、VibeVoice-ASR、Voxtral Realtime99+ 种(Whisper)、25 种欧洲语言(Parakeet v3)流式转写、热词、说话人标签
语音转语音 STSSAM-Audio、DialogueSidon、MossFormer2、DeepFilterNet、NemotronLabs VoiceChat与语言无关音源分离、降噪、实时语音对话
语音活动检测 VADSilero VAD、Sortformer与语言无关流式端点检测、说话人分离
音乐生成MiniMax Music 3多语言歌词44.1 kHz 立体声输出

输出格式方面,WAV 开箱即用,MP3/FLAC/OGG/Opus 依赖系统里的 ffmpeg。平台限定 Apple Silicon(M1–M4),Python 3.10+;iOS/macOS 端另有 mlx-audio-swift Swift 包可做端上集成。

深挖一:用 transcription_delay_ms 做流式转写

会议字幕、语音助手这类场景等不了整段结果。MLX-Audio 的 STT 侧有三类支持流式的模型:Voxtral Realtime 面向低延迟,Nemotron 3.5 ASR 走 cache-aware 流式,VibeVoice-ASR 用 chunk 切分处理长音频。用法统一,给generate()stream=True

from mlx_audio.stt.utils import load model = load("mlx-community/Voxtral-Mini-4B-Realtime-2602-4bit") for chunk in model.generate("audio.wav", stream=True): print(chunk, end="", flush=True)

Voxtral Realtime 还有一个transcription_delay_ms参数,直接权衡延迟与准确率:值越低越快,但错误率更高,默认约 240ms。做实时字幕的话先调这个值。仓库的examples/streaming_transcription.py是完整的流式 demo,跑一遍就能看到效果。

深挖二:4-bit 量化让内存占用降到四分之一

7B 参数的模型以 bfloat16 加载要吃掉约 17GB 内存(README 以 KugelAudio 为例),低配 MacBook 直接装不下。MLX-Audio 自带量化转换工具,转完之后load_model就能直接加载 4bit 版本:

python -m mlx_audio.convert --hf-path <HF 仓库> --mlx-path <输出目录> --quantize --q-bits 4

支持affine(2/3/4/6/8 bit)、mxfp4mxfp8nvfp4等模式。TTS 场景下 8bit 与 bf16 的听感差异基本不可闻,上文示例里的 0.6B 模型就是现成的 8bit 版,低内存机器建议直接从这类量化版起步。

接入路径:CLI、Python 包与 OpenAI 兼容 API

命令行:mlx_audio.tts.generate(合成)和python -m mlx_audio.stt.generate(转写),上文示例就是完整形态。Python 集成只需一行from mlx_audio.tts.utils import load_model,波形以result.audio(mx.array)返回,自行落盘或交给播放器都行。

要给前端或其他设备提供服务,启动 API 服务器:mlx_audio.server --host 0.0.0.0 --port 8000。最常用的两个端点:POST /v1/audio/speech做文本转语音,请求格式与 OpenAI 兼容,现有 SDK 客户端改一下 base_url 就能接上;POST /v1/audio/transcriptions做语音转文本。

Web UI 需要先克隆仓库(git clone https://gitcode.com/GitHub_Trending/ml/mlx-audio),用pip install -e ".[dev, server]"装依赖,再到mlx_audio/ui/目录执行npm install && npm run dev,即可看到带 3D 音频可视化的界面。examples/bible-audiobook/里还有一个批量生成有声书的例子,展示了长文本切分后批量调用 Kokoro 的流程。

踩坑与调优:ffmpeg、内存、音色预设

保存 MP3 报错→ 系统缺 ffmpeg。WAV 不依赖它,但 MP3/FLAC/OGG/Opus 都要。解法:brew install ffmpeg

模型加载 OOM 或明显偏慢→ bf16 大模型超出内存。换成-8bit/-4bit后缀的版本,或改用更小的模型(Kokoro-82M 只有几百 MB,日常音色足够快)。

Kokoro 生成中文或日文报缺文本处理器→ 缺 misaki 依赖。解法:pip install misaki,中文还需misaki[zh]

一句话带走

记住这几点就够了:

  • pip install mlx-audio一行搞定安装,模型首次运行从仓库下载,CLI 与 Python 共用缓存。
  • 选型:轻量音色用 Kokoro-82M,中英混排用 Qwen3-TTS CustomVoice,声音克隆用 csm-1b,高准确率转写用 Parakeet v3 或 Whisper,实时字幕用 Voxtral Realtime。
  • 低内存机器从 8bit/4bit 量化版起步,听感几乎无损,内存占用降为四分之一。
  • API 服务器是 OpenAI 兼容的,现有客户端改 base_url 即可,不用重写对接代码。

【免费下载链接】mlx-audioA text-to-speech (TTS), speech-to-text (STT) and speech-to-speech (STS) library built on Apple's MLX framework, providing efficient speech analysis on Apple Silicon.项目地址: https://gitcode.com/GitHub_Trending/ml/mlx-audio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询