在 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 ffmpegWAV 格式不依赖 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 自带的预设音色,Vivian和Ryan都可以用。
想加快语速,加--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.wav、audio_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.audio是mx.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 alang_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 \ --verboseWhisper 支持 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,不需要联网。
接下来做什么
- 跑一遍
examples/里的演示脚本,比如examples/streaming_transcription.py展示了流式转写的完整流程 - 打开 docs/getting-started/quickstart-cli.md,对照参数表把 TTS 和 STT 的 CLI 选项全部过一遍
- 如果要接入自己的业务,下一步建议先跑通
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),仅供参考