Mac 本地跑语音 AI:MLX-Audio 一站式 TTS、STT 实战指南

发布时间:2026/11/12 19:41:42

Mac 本地跑语音 AI:MLX-Audio 一站式 TTS、STT 实战指南 Mac 本地跑语音 AIMLX-Audio 一站式 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-audio如果你的 Mac 上同时堆着会议录音转文字和批量生成有声书两个需求又不想把音频传到云端MLX-Audio 是目前比较直接的答案它构建在 Apple MLX 框架Apple 自研的机器学习运行时负责把张量计算调度到 Apple Silicon 的 GPU 和统一内存上之上一行命令完成文本转语音TTS和语音转文本STT并附带语音增强、声源分离与音乐生成能力当前版本 0.5.4要求 Python 3.10 以上和 M1 至 M4 芯片。五分钟跑通第一个例子安装只需一条命令按功能分组装依赖可以只拿需要的部分# 只装 TTS 相关依赖stt、sts、all 同理 pip install mlx-audio[tts] # 用 0.6B 的 8 位量化模型生成第一句语音并直接播放 mlx_audio.tts.generate \ --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit \ --text Hello, world! --voice Vivian --play--voice选预设说话人--play生成完立即播放加--stream可以边生成边出声。模型权重从 Hugging Face 拉取并缓存到本地第二次运行不再下载。Python 侧的调用模式完全一致load_model负责按模型名自动识别架构并加载权重from mlx_audio.tts.utils import load_model model load_model(mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit) # generate 是一个生成器每段文本 yield 一个结果对象 for result in model.generate_custom_voice( textWelcome to MLX-Audio!, speakerRyan, languageEnglish, ): print(result.audio.shape[0], samples) # result.audio 是 mx.array 波形结果对象里还带sample_rate、audio_duration、real_time_factor相对实时倍速和peak_memory_usage峰值内存GB等字段方便你量化评估每段生成实际花了多少资源。项目定位一张表看清能干什么MLX-Audio 的定位是Apple Silicon 上的本地音频推理工具箱不训练模型专注把已有的开源语音模型转换、量化后跑在本机。适合三类人——要在 Mac 上做离线语音应用的开发者、需要批量生成/转写音频的创作者、想评估语音模型但没 GPU 服务器的研究者。核心能力一览模块能力代表模型与规模关键数字TTS预置声音、语音克隆、语音设计Kokoro82M、Qwen3-TTS0.6B/1.7B、Higgs Audio v34B、OmniVoice、MOSS-TTS-Nano100M、Ming Omni TTS16.8B-A3BOmniVoice 覆盖 646 语言Higgs v3 支持 100 种语言Kokoro 提供 54 个语音预设STT离线/流式转写、词级对齐、说话人分离Whisper99 语言、Qwen3-ASR、Voxtral Realtime4B、Parakeet v325 种欧洲语言、MMS1000 语言、VibeVoice-ASR最高 9BVibeVoice-ASR 长音频支持到 60 分钟Voxtral Realtime 有 4bit 与 fp16 两档STS语音增强、声源分离、语音对话MossFormer2 SE、DeepFilterNet 1/2/3、SAM-Audio、NemotronLabs VoiceChat11B-4bitMossFormer2 输出 48kHzSortformer 声纹分离支持最多 4 人VAD端点检测、说话人日志Silero VAD、Sortformer v1/v2.1流式语言无关音乐带歌词歌曲生成MiniMax Music 344.1kHz 立体声输出核心机制统一加载流水线 生成器接口理解架构只需看两点。第一目录结构按模块 × 模型组织每个模型一个独立子包互不干扰mlx_audio/ ├── tts/ # 每个模型一个目录qwen3_tts/、kokoro/、omnivoice/… ├── stt/ # whisper/、parakeet/、voxtral_realtime/… ├── sts/ # 增强、分离、语音对话 ├── vad/ # Silero、Sortformer ├── lm/ # 内置的 LM 推理代码从 mlx-lm 移植 ├── audio_io.py # 读写音频miniaudio ffmpeg ├── convert.py # HF 权重转换与量化 └── server.py # FastAPI 服务OpenAI 兼容第二所有模型共用一条加载流水线load(模型名)→ 下载或解析本地路径 → 读config.json判断model_type→ 查映射表动态导入对应模型类 → 实例化mlx.nn.Module并载入.safetensors。共享逻辑在 mlx_audio/utils.py各模块的utils.py只是薄封装。TTS 的generate()统一设计为生成器非流式时每段文本产出一次GenerationResult加streamTrue后按小块持续 yield最后一个块带is_final_chunkTrue标记。详细的模块说明见 架构设计文档。能力聚焦语音克隆、流式转写与量化零样本语音克隆场景手头只有一段 10 秒的参考录音想让模型用这个人的声音读新文本。做法是把参考音频和它的逐字文本一起传给generate()模型据此拟合音色。OmniVoice 是最直接的例子它用双向 Qwen3 骨干加迭代式掩码生成音色克隆对参考文本的准确性敏感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_text参考音频的逐字文本, # 必须与参考音频内容一致 duration_s5.0, # 控制输出时长 ): audio result.audioref_text与参考音频对不上时克隆效果会明显下降这是实践中最常见的坑duration_s和num_steps分别控制时长与扩散步数。CLI 同样支持--ref_audio配合--play可以立刻试听。低延迟流式转写场景直播字幕或实时会议记录文字要边说边出。Voxtral Realtime4B和 Parakeet 都实现了streamTrue转写结果按增量返回不需要等整段音频处理完from mlx_audio.stt.utils import load # 4bit 档推理更快fp16 档精度更高 model load(mlx-community/Voxtral-Mini-4B-Realtime-2602-4bit) for chunk in model.generate(audio.wav, streamTrue): print(chunk, end, flushTrue) # transcription_delay_ms 越小延迟越低精度略有损失 result model.generate(audio.wav, transcription_delay_ms240)对麦克风实时输入项目另有统一的StreamingSession协议feed喂 PCM、step取增量文本API 服务器的 WebSocket 实时端点就是基于它实现的协议定义见 流式 STT 指南。量化用一半内存装下更大的模型自建模型或压缩现成模型都走mlx_audio.convert。以 Kokoro-82M 为例4 位量化后体积约为 fp16 的 1/4python -m mlx_audio.convert \ --hf-path prince-canuma/Kokoro-82M \ --mlx-path ./Kokoro-82M-4bit \ --quantize --q-bits 4 --q-mode affine--q-mode支持affine默认、mxfp4/mxfp8Microscaling 浮点格式、nvfp4四档--q-group-size调整分组大小。多数模型在 mlx-community 下已有 4bit/6bit/8bit 预量化版本直接load即可无需自己转换。完整参数与混合精度配方如mixed_4_6见 量化指南。性能与取舍不同内存预算下的选型仓库给出的量化体积对照是硬数据3 位约 1/5、4 位约 1/4、6 位约 2.5 倍、8 位约 2 倍相对 fp16。文档同时给了明确的经验结论TTS 模型在 3 位下容易出可闻伪影4 位是质量与体积的平衡点STT 模型普遍更能耐受 4 位1B 以上的大模型比小模型更能扛低比特。按内存预算给三条建议预算选型说明内存紧张约 8GBKokoro 82M / MOSS-TTS-Nano 100M 的 4bit或 Phonon-1 Micro285MB做 STT单条命令即可跑通中等16GBQwen3-TTS 1.7B 或 Voxtral 4B 的 6bit/4bitParakeet 0.6B 做 STT语言覆盖和音质兼顾充足32GBHiggs Audio v3 4B、VibeVoice-ASR 9B 的 bf16/8bit7B 级模型 bfloat16 约需 17GB追求上限质量需要说明的是仓库本身不发布端到端基准分数推理速度依赖具体芯片和模型最可靠的方式是看每次生成返回的real_time_factor和peak_memory_usage字段用自己的机器实测。接入指南CLI、Python 与 API 三种姿势CLI 适合脚本与一次性任务六个入口命令分别对应转换、STT、TTS、音乐、服务与 STS在 pyproject.toml 的[project.scripts]中注册。Python API 适合嵌入工程load/load_model拿到模型后直接调generate()。要集成进现有后端最省事的是 OpenAI 兼容 APImlx_audio.server --host 0.0.0.0 --port 8000 curl -X POST http://localhost:8000/v1/audio/speech \ -H Content-Type: application/json \ -d {model: mlx-community/Kokoro-82M-bf16, input: Hello!, voice: af_heart} \ --output speech.wav服务端点包括/v1/audio/speechTTS、/v1/audio/transcriptionsSTT、/v1/audio/separations分离、/v1/models的加载/卸载管理以及 WebSocket 实时转写。--tts-max-batch-size默认 8控制兼容请求的连续批处理上限完整参数表见 Web UI 与 API 服务器指南。常见报错要点输出 MP3/FLAC/OGG/Opus 失败几乎都是没装 ffmpegWAV 不需要brew install ffmpeg即可解决Kokoro 报文本处理错误通常是缺misaki包日语/中文需misaki[ja]/misaki[zh]模型加载失败先确认网络能否访问 Hugging Face或改用本地路径加载。常见问题量化后音质变差怎么办官方建议从 4 位或 6 位起步听到伪影再升 8 位TTS 要凭耳朵判断STT 可看词错率二者不能互相替代。流式转写延迟太高调低transcription_delay_ms代价是精度或选 4bit 权重档实时麦克风场景走服务器 WebSocket 端点而非离线文件转写。能离线跑吗能。模型下载并缓存到本地后不再依赖网络音频读写走 miniaudio除非 WAV 格式外只依赖本地 ffmpeg。说话人分离和转写能一起用吗可以组合Silero VAD 做端点检测切段Sortformer 做说话人日志STT 模型负责转写三段都是独立模块。收尾MLX-Audio 把 40 多个语音模型收敛到一套加载—生成—保存接口下让你在一台 Mac 上完成从录音转写、语音克隆到歌曲生成的完整链路。它不追求云端服务的吞吐换取的是数据不出本机与零 API 费用。适合现在上手的是正在 Mac 上构建离线语音功能、或需要批量处理音频且在意隐私的开发者。学习资源快速上手Python、架构设计文档、量化指南、模型文档总览。【免费下载链接】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),仅供参考
延伸阅读

更多相关文章

2026/11/2 12:17:03

如何将 PowerShell 7 设为 Windows Terminal 默认启动项

1. 为什么折腾默认项:PowerShell 5.1 和 7 其实不是同一个东西先说说我为什么专门写这篇。前几天帮一个同事处理终端环境,他跟我说“我已经装了 PowerShell 7,为什么 Windows Terminal 打开还是老版的?”,我过去一看&a…

2026/11/2 15:30:27

RAG系统效果评估实战:用RAGAS量化忠实性与答案相关性

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/12 19:39:07

无锡建筑电工证哪里考 电子证书怎么拿不被坑

无锡建筑电工证哪里考 电子证书怎么拿不被坑 你是不是也在找无锡建筑电工证哪里考,结果被一堆中介、代办机构绕得晕头转向?别急,今天就给你说清楚, 无锡建筑电工证哪里考 ,怎么避坑拿 电子证书 ,不花冤枉钱还能稳稳拿到证。…

2026/11/12 19:39:07

南宁电工证审证怎么搞?上岗必备的全流程解析

南宁电工证审证怎么搞?上岗必备的全流程解析 不知道去哪报名怕被中介坑?南宁电工证审证是很多从事电工行业人员的刚需,尤其是对于许昌水利工程从业者来说,电工证不仅是上岗必备,更是职业发展和薪资提升的“敲门砖”。本文从真实经验出发,结合河南省安全…

2026/11/12 19:39:07

仙桃报考电工证网上查询学历不高也能报上名

仙桃报考电工证网上查询学历不高也能报上名 学历不高怕报不上名?仙桃报考电工证网上查询其实没那么复杂,只要流程走对,谁都能顺利报考。很多人觉得电工证是“高门槛”证,但其实只要你愿意花点时间准备,学历不是问题。而且随着电力行业对专业人员的重视,…

2026/11/12 19:39:07

应聘电工需要的电工证多少钱?考了真能找份好工作吗?

应聘电工需要的电工证多少钱?考了真能找份好工作吗? 你现在找工作,电工证就是硬门槛,不带这个证,连面试机会都没有。电工证到底值不值得考?多少钱?考了真能找个好工作吗?这些问题,我来给你掰扯清楚。 电工证到底有没有用?别被“没用”的声音骗了…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/11 20:27:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/12 9:51:42

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑