MLX-Audio 实战指南:Apple Silicon 上一体化跑通 TTS、STT 与语音降噪 📅 发布时间:2026/9/20 17:33:40 👁 浏览次数: MLX-Audio 实战指南Apple Silicon 上一体化跑通 TTS、STT 与语音降噪【免费下载链接】mlx-audioA text-to-speech (TTS), speech-to-text (STT) and speech-to-speech (STS) library built on Apples MLX framework, providing efficient speech analysis on Apple Silicon.项目地址: https://gitcode.com/GitHub_Trending/ml/mlx-audioMLX-Audio 是基于 Apple MLX 框架的本地语音处理库覆盖文本转语音TTS、语音识别STT与语音增强/分离STS全链路在 M 系列芯片上原生运行。适合想在 Mac 上免云 API 落地语音合成、实时转写、会议记录的开发者。快速上手一条命令出声最快路径是 pip 安装后直接跑 CLI模型从 HuggingFace 按需拉取无需手动转换。要求 Python 3.10 和 Apple SiliconM1–M4。pip install mlx-audio # 生成并立即播放8bit 量化版 Qwen3-TTS体积小、启动快 mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit \ --text Hello, world! --voice Vivian --playPython API 与 CLI 等价load_model()加载后调用generate()它是个生成器每段文本 yield 一个结果result.audio即mx.array波形。若一条文本产出多段音频CLI 默认存成audio_000.wav、audio_001.wav加--join_audio可合并为单文件。零样本语音克隆给一段参考音频结论ref_audioref_text两个参数即可克隆音色OmniVoice 覆盖面最广646 语言且支持[laughter]、[sigh]等非语言标签。from mlx_audio.tts.utils import load_model model load_model(mlx-community/OmniVoice-bf16) for result in model.generate( textThis sentence uses the reference speaker., languageenglish, ref_audioreference.wav, # 参考录音 ref_textTranscript of the reference audio., # 必须与参考音频一致 duration_s5.0, ): audio result.audio # mx.array 波形⚠️ 经验上ref_text与参考音频内容不匹配时克隆稳定性会明显下降README 明确要求提供匹配的转写文本。想要更轻量的方案CSM 一条 CLI 也能完成mlx_audio.tts.generate --model mlx-community/csm-1b --text Hello --ref_audio ./reference_voice.wav --play。实时流式识别低延迟转写结论流式场景选 Voxtral Realtime4B官方提供 4bit 与 fp16 两个变体4bit 更小更快transcription_delay_ms是延迟与准确度的直接旋钮值越小出字越快、上下文越少。from mlx_audio.stt.utils import load model load(mlx-community/Voxtral-Mini-4B-Realtime-2602-4bit) # 流式转写解码多少输出多少 for chunk in model.generate(audio.wav, streamTrue): print(chunk, end, flushTrue) # 调整延迟/准确度权衡毫秒 result model.generate(audio.wav, transcription_delay_ms240) print(result.text)如果要的是会议记录而非逐字流VibeVoice-ASR微软 9B支持说话人分离 时间戳输出结构化 JSONStart/End/Speaker/Content长音频最长 60 分钟还能通过context传入热词如专业术语提升识别率。服务端实时链路可看 docs/guides/streaming-stt.md 的StreamingSession协议feed/step/close。搭建服务端OpenAI 兼容 API结论一条命令起 FastAPI 服务/v1/audio/speech与/v1/audio/transcriptions是 OpenAI 兼容端点现有指向 OpenAI 音频接口的客户端改个 base_url 就能用。# 起 API 服务加 --start-ui 会额外在 3000 端口启动 Next.js 界面 mlx_audio.server --host 0.0.0.0 --port 8000 # 兼容 OpenAI 的 TTS 调用 curl -X POST http://localhost:8000/v1/audio/speech \ -d {model: mlx-community/Kokoro-82M-bf16, input: Hello!, voice: af_heart} \ --output speech.wav 细节服务端内置模型懒加载与异步锁--tts-max-batch-size 8默认 8为支持的模型开启连续批处理/v1/realtimeWebSocket 端点默认用 Silero VAD 做服务端断句。完整参数见 docs/guides/web-ui-api-server.md。降噪与声音分离结论MossFormer2 SE 做降噪SAM-Audio 做文字描述驱动的源分离从混音里抠出指定声音两者都是from_pretrained直接加载。from mlx_audio.sts import MossFormer2SEModel, save_audio model MossFormer2SEModel.from_pretrained(starkdmi/MossFormer2_SE_48K_MLX) enhanced model.enhance(noisy_speech.wav) save_audio(enhanced, clean.wav, 48000) # 注意保持 48kHz 采样率底层原理为什么在 Mac 上跑得快架构上只有一个统一加载管线load()读模型目录的config.json判定model_type动态导入对应实现再把.safetensors权重灌进mlx.nn.Module——TTS、STT、STS 全部走同一条路新增模型只是加目录不改加载逻辑。生成侧统一用生成器模式非流式时每个文本段 yield 一个GenerationResultstreamTrue时 yield 带is_streaming_chunk标记的小块同一接口覆盖两种用法结果对象自带real_time_factor、peak_memory_usage等字段方便你自己做性能记录。速度来源是 MLX 的惰性求值 Apple Silicon 统一内存低精度权重更省带宽文档中明确低精度权重在 Apple Silicon 上经内存流动更快所以量化是主要提速手段——4bit 体积约为 fp16 的 1/4支持affine、mxfp4、mxfp8、nvfp4四种模式用python -m mlx_audio.convert --q-bits 4一行完成。音频 I/O 层用 miniaudio 处理 WAV/MP3/FLAC其余格式回退 ffmpeg。设计细节可参考 docs/contributing/architecture.md。选型对比什么场景选哪个模型模型类别参数量语言适用场景KokoroTTS82M8轻量多语言54 个语音预设MOSS-TTS-NanoTTS100M20边缘环境零样本克隆Qwen3-TTSTTS0.6B–1.7B中/英/日/韩等多语言 语音设计/情感控制OmniVoiceTTS—646零样本克隆、批量生成Higgs Audio v3TTS4B100对话式 TTS、行内控制KugelAudioTTS7B24 欧洲语言高音质需 ~17GB 内存Whisper (turbo)STT—99通用鲁棒转写Parakeet v3STT0.6B25 欧洲语言欧洲语言高精度Qwen3-ASRSTT1.7B中/英/日/韩等多语言 词级对齐VibeVoice-ASRSTT9B流式 10 / 长音频 50会议纪要、说话人分离Voxtral RealtimeSTT4B多语言低延迟流式转写推荐策略内存紧张或移动端场景选 Kokoro / MOSS-TTS-Nano要多语言克隆选 OmniVoice纯欧洲语言高精度选 Parakeet v3会议场景带说话人标签上 VibeVoice-ASR纯低延迟流式上 Voxtral Realtime 4bit。量化档位TTS 对 3bit 敏感4bit 是文档给出的甜点位STT 普遍能容忍 4bit大模型1B比小模型更扛低比特。坑与排错以下均来自项目文档按踩中概率排序MP3/FLAC/OGG/Opus 保存失败这些格式依赖 ffmpegbrew install ffmpeg后恢复WAV 不需要 ffmpeg。Kokoro 中文/日文效果差缺少文本归一化依赖需pip install misaki日文加misaki[ja]、中文加misaki[zh]。多段音频被拆成多个文件正常行为--join_audio合并--stream默认不落盘要存档需加--save。KugelAudio 加载失败7B bf16 需要约 17GB 内存且上游暂不支持语音克隆固定默认音色。MiMo-Audio 4bit 仍占大量内存其量化策略只覆盖 Qwen2 主干与文本头声学 transformer、语音 embedding 保持浮点audio tokenizer 独立不量化——实际占用高于均匀量化的同规模文本模型。server/sts 依赖冲突webrtcvad 需要setuptools81extras 已 pin 住若环境里手动装了新版 setuptools 会破坏它。克隆音色不稳检查ref_text是否与ref_audio完全对应。非 Mac 无法运行MLX 绑定 Apple Siliconx86 Mac 和 Linux 均不支持。收尾速判适合在 Mac 上做离线/低延迟/数据不出机器的语音功能的开发者——播客转写、本地配音、客服原型、会议记录以及想把 OpenAI 音频 API 客户端直接切到本地的团队。不适合依赖 Linux GPU 集群做高并发推理的部署、对毫秒级尾延迟有 SLA 的实时语音交互产品、以及没有 M 系列硬件的团队。下一步用 8bit Qwen3-TTS 跑通快速上手流式链路试 Voxtral Realtime 4bit 并调transcription_delay_ms再按需读 docs/guides/quantization.md 和对应模型目录的 README如 mlx_audio/stt/models/qwen3_asr/README.md。【免费下载链接】mlx-audioA text-to-speech (TTS), speech-to-text (STT) and speech-to-speech (STS) library built on Apples MLX framework, providing efficient speech analysis on Apple Silicon.项目地址: https://gitcode.com/GitHub_Trending/ml/mlx-audio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考