news 2026/9/20 6:56:26

在 Mac 上本地跑通语音合成与识别:MLX-Audio 完整实操教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在 Mac 上本地跑通语音合成与识别:MLX-Audio 完整实操教程

在 Mac 上本地跑通语音合成与识别:MLX-Audio 完整实操教程

【免费下载链接】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

MLX-Audio 是一个基于 Apple MLX 框架的本地语音库,运行在 M 系列芯片(M1/M2/M3/M4)的 Mac 上,同时覆盖文本转语音(TTS)、语音转文字(STT)、语音克隆和音乐生成,适合想在设备端做语音应用或自动化的开发者。

装好两样东西,再跑第一条语音

MLX-Audio 需要 Python 3.10+ 和 MLX 框架,后者随 pip 自动安装。如果你的 Mac 是 Apple Silicon,基础安装就一行:

pip install mlx-audio

要使用 Web 界面或 API 服务,需要带server依赖组从源码安装:

git clone https://gitcode.com/GitHub_Trending/ml/mlx-audio cd mlx-audio pip install -e ".[dev, server]"

另外,保存 MP3、FLAC、OGG 等格式依赖系统里的 ffmpeg,提前装好:

brew install ffmpeg

WAV 格式不依赖 ffmpeg,可以直接生成。

一条命令听到第一句合成音 🎯

装好之后,在终端执行:

mlx_audio.tts.generate \ --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit \ --text "Hello, world!" \ --voice Vivian \ --play

--play让系统直接播放,不用翻找文件。--voice指定 Qwen3-TTS 自带的预设音色,VivianRyan都可以用。

想加快语速,加--speed(默认 1.0):

mlx_audio.tts.generate \ --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit \ --text "这句话会说得更快一些" \ --voice Vivian \ --speed 1.4

一段文字如果生成多个片段,默认存为audio_000.wavaudio_001.wav这样的编号文件;加--join_audio可以合成一个文件。

嵌进自己的 Python 代码

from mlx_audio.tts.utils import load_model model = load_model("mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit") for result in model.generate( "你好,这是本地语音合成。", voice="Vivian", lang_code="Chinese", ): print(f"生成了 {result.audio.shape[0]} 个采样点")

result.audiomx.array波形数据,可以直接写盘或送进播放器。

换模型、换音色、克隆声音 🗣️

MLX-Audio 内置二十多种 TTS 模型,换模型只需改--model

Kokoro-82M是其中比较经典的一款,支持英、日、中、法、西、意、葡、印地八种语言,自带 54 个预设音色。它需要额外安装文本分词工具:

pip install misaki # 日文:pip install misaki[ja] # 中文:pip install misaki[zh]
mlx_audio.tts.generate \ --model mlx-community/Kokoro-82M-bf16 \ --text "欢迎使用 MLX-Audio" \ --voice af_heart \ --lang_code a

lang_code是单字母代码:a美式英语、b英式英语、j日语、z普通话。完整模型列表和语言支持见 docs/models/tts。

用一段参考音频克隆音色

不需要录音棚,几秒的参考音频就够了。CSM 模型支持 zero-shot 语音克隆:

mlx_audio.tts.generate \ --model mlx-community/csm-1b \ --text "你好,来自 Sesame。" \ --ref_audio ./reference_voice.wav \ --play

--ref_audio指向参考音频文件,模型提取音色特征后,让新文本用同样的声音读出来。

反向也跑通:语音转文字

STT 的命令行入口和 TTS 对称,用 Whisper 转写一段录音:

python -m mlx_audio.stt.generate \ --model mlx-community/whisper-large-v3-turbo-asr-fp16 \ --audio audio.wav \ --format json \ --verbose

Whisper 支持 99 种以上语言;如果只需要英文且追求速度,可以换 Parakeet(mlx-community/parakeet-tdt-0.6b-v3,覆盖 25 种欧洲语言)。

Python 里调用同样简短:

from mlx_audio.stt.generate import generate_transcription result = generate_transcription( model="mlx-community/whisper-large-v3-turbo-asr-fp16", audio="audio.wav", ) print(result.text)

打开网页版工作台

MLX-Audio 自带 FastAPI 后端和 Next.js 前端,两个终端分别启动:

# 终端 1:API 服务 mlx_audio.server --host 0.0.0.0 --port 8000 # 终端 2:Web 界面 cd mlx_audio/ui npm install npm run dev

界面跑在http://localhost:3000,API 在http://localhost:8000。界面提供 TTS 生成(可选音色和模型)、STT 上传转写、3D 音频可视化等功能。

API 是 OpenAI 兼容格式,已有的 OpenAI 客户端代码只需改base_url

from openai import OpenAI client = OpenAI( base_url="http://localhost:8000/v1", api_key="not-needed", ) response = client.audio.speech.create( model="mlx-community/Kokoro-82M-bf16", voice="af_heart", input="Hello from the OpenAI client!", ) response.stream_to_file("output.mp3")

量化:让大模型跑得更省 💾

降低权重位宽能直接缩小模型体积。4-bit 模型大约是 fp16 的 1/4 大小,在 Apple Silicon 的统一内存架构下推理也会更快。

量化入口是mlx_audio.convert

python -m mlx_audio.convert \ --hf-path prince-canuma/Kokoro-82M \ --mlx-path ./Kokoro-82M-4bit \ --quantize \ --q-bits 4

常用位宽选择:

  • 4-bit:体积和质量的平衡点,日常使用推荐
  • 6-bit:接近无损,适合对音质敏感的场景
  • 8-bit:几乎无质量损失,体积约为 fp16 的一半

量化模式(affine/mxfp4/mxfp8/nvfp4)和分组大小等完整选项,见 docs/guides/quantization.md。

移动端

如果目标是 iPhone 或 iPad,项目提供了独立的 Swift 包mlx-audio-swift,支持 macOS 14.0+ 和 iOS 16.0+,可以在设备端直接做 TTS,不需要联网。

接下来做什么

  1. 跑一遍examples/里的演示脚本,比如examples/streaming_transcription.py展示了流式转写的完整流程
  2. 打开 docs/getting-started/quickstart-cli.md,对照参数表把 TTS 和 STT 的 CLI 选项全部过一遍
  3. 如果要接入自己的业务,下一步建议先跑通mlx_audio.server,再用 OpenAI 客户端把 TTS/STT 请求对接到现有代码里

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 6:54:36

大型代码库阅读与理解:系统性方法与工程实践

1. 理解大型代码库的挑战面对一个包含上万行代码的项目时,很多开发者会感到无从下手。这种规模的代码库通常具有以下特征:复杂的模块依赖关系分散的业务逻辑多层级的架构设计历史遗留的代码风格差异缺乏完整的文档说明我曾接手过一个电商系统的重构项目&…

作者头像 李华
网站建设 2026/9/20 6:54:32

AMD平台性能调优实战:用SDT调试工具榨干CPU潜力,全核5.05GHz

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

作者头像 李华
网站建设 2026/9/20 6:53:47

光伏企业供应链规划:集成计划如何实现“预测-供应-库存”闭环

简介:这是一份面向光伏企业供应链规划与集成计划的高质量研究报告,共95页PPT,适用于企业供应链管理人员、数字化规划咨询顾问及新能源行业从业者。内容围绕供应链能力评估展开,包含总体架构、业务架构与应用架构的现状梳理&#x…

作者头像 李华
网站建设 2026/9/20 6:49:55

PyCharm接入DeepSeek全攻略:插件直连、本地部署与混合方案

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

作者头像 李华
网站建设 2026/9/20 6:47:28

多AI Agent并行开发互踩?用Git Worktree和Worktrunk打造隔离工作区

如果你同时开着两三个 AI Agent 在同一个项目里干活,大概率已经遇到过这种场景:Agent A 刚提交的代码里混进了 Agent B 的临时改动,Agent C 跑测试的时候又把前两者依赖的构建产物给覆盖了,三个人在同一个工作区里互相踩踏。这个问…

作者头像 李华
网站建设 2026/9/20 6:46:27

Win10防火墙出站规则阻断Photoshop联网解决未授权禁用弹窗

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

作者头像 李华