OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  MLX Audio — 基于 Apple MLX 的本地音频与语音模型推理方案

MLX Audio — 基于 Apple MLX 的本地音频与语音模型推理方案

 
  freedom ·  2026-02-20 15:03:26 · 12 次点击  · 0 条评论  

Blaizzy%2Fmlx-audio | Trendshift

MLX-Audio

基于 Apple MLX 框架构建的最佳音频处理库,为 Apple Silicon 提供快速高效的文本转语音 (TTS)、语音转文本 (STT) 和语音转语音 (STS) 功能。

特性

  • 为 Apple Silicon (M 系列芯片) 优化的快速推理
  • 支持 TTS、STT 和 STS 的多种模型架构
  • 跨模型的多语言支持
  • 语音定制与克隆能力
  • 可调节的语速控制
  • 带有 3D 音频可视化的交互式 Web 界面
  • OpenAI 兼容的 REST API
  • 量化支持 (3-bit, 4-bit, 6-bit, 8-bit 等) 以优化性能
  • 用于 iOS/macOS 集成的 Swift 包

安装

使用 pip

pip install mlx-audio

使用 uv 仅安装命令行工具

从 pypi 安装最新发布版:

uv tool install --force mlx-audio --prerelease=allow

从 github 安装最新代码:

uv tool install --force git+https://github.com/Blaizzy/mlx-audio.git --prerelease=allow

用于开发或 Web 界面:

git clone https://github.com/Blaizzy/mlx-audio.git
cd mlx-audio
pip install -e ".[dev]"

快速开始

命令行

# 基础 TTS 生成
mlx_audio.tts.generate --model mlx-community/Kokoro-82M-bf16 --text 'Hello, world!' --lang_code a

# 选择语音并调整语速
mlx_audio.tts.generate --model mlx-community/Kokoro-82M-bf16 --text 'Hello!' --voice af_heart --speed 1.2 --lang_code a

# 立即播放音频
mlx_audio.tts.generate --model mlx-community/Kokoro-82M-bf16 --text 'Hello!' --play  --lang_code a

# 保存到指定目录
mlx_audio.tts.generate --model mlx-community/Kokoro-82M-bf16 --text 'Hello!' --output_path ./my_audio  --lang_code a

Python API

from mlx_audio.tts.utils import load_model

# 加载模型
model = load_model("mlx-community/Kokoro-82M-bf16")

# 生成语音
for result in model.generate("Hello from MLX-Audio!", voice="af_heart"):
    print(f"Generated {result.audio.shape[0]} samples")
    # result.audio 包含 mx.array 格式的波形

支持的模型

文本转语音 (TTS)

模型 描述 语言 仓库
Kokoro 快速、高质量的多语言 TTS EN, JA, ZH, FR, ES, IT, PT, HI mlx-community/Kokoro-82M-bf16
Qwen3-TTS 阿里巴巴的多语言 TTS,支持语音设计 ZH, EN, JA, KO, + 更多 mlx-community/Qwen3-TTS-12Hz-1.7B-VoiceDesign-bf16
CSM 支持语音克隆的对话语音模型 EN mlx-community/csm-1b
Dia 专注于对话的 TTS EN mlx-community/Dia-1.6B-fp16
OuteTTS 高效的 TTS 模型 EN mlx-community/OuteTTS-1.0-0.6B-fp16
Spark SparkTTS 模型 EN, ZH mlx-community/Spark-TTS-0.5B-bf16
Chatterbox 富有表现力的多语言 TTS EN, ES, FR, DE, IT, PT, PL, TR, RU, NL, CS, AR, ZH, JA, HU, KO mlx-community/chatterbox-fp16
Soprano 高质量 TTS EN mlx-community/Soprano-1.1-80M-bf16
Ming Omni TTS (BailingMM) 支持语音克隆、风格控制及语音/音乐/事件生成的多模态生成 EN, ZH mlx-community/Ming-omni-tts-16.8B-A3B-bf16
Ming Omni TTS (Dense) 轻量级密集版 Ming Omni,用于语音克隆和风格控制 EN, ZH mlx-community/Ming-omni-tts-0.5B-bf16

语音转文本 (STT)

模型 描述 语言 仓库
Whisper OpenAI 的鲁棒 STT 模型 99+ 种语言 mlx-community/whisper-large-v3-turbo-asr-fp16
Distil-Whisper 蒸馏版快速 Whisper 变体 EN distil-whisper/distil-large-v3
Qwen3-ASR 阿里巴巴的多语言 ASR ZH, EN, JA, KO, + 更多 mlx-community/Qwen3-ASR-1.7B-8bit
Qwen3-ForcedAligner 词级音频对齐 ZH, EN, JA, KO, + 更多 mlx-community/Qwen3-ForcedAligner-0.6B-8bit
Parakeet NVIDIA 的高精度 STT EN (v2), 25 种欧洲语言 (v3) mlx-community/parakeet-tdt-0.6b-v3
Voxtral Mistral 的语音模型 多种 mlx-community/Voxtral-Mini-3B-2507-bf16
Voxtral Realtime Mistral 的 4B 流式 STT 多种 4bit, fp16
VibeVoice-ASR Microsoft 的 9B ASR,支持说话人日志和时间戳 多种 mlx-community/VibeVoice-ASR-bf16
Canary NVIDIA 的多语言 ASR,支持翻译 25 种欧洲语言 + RU, UK README
Moonshine Useful Sensors 的轻量级 ASR EN README
MMS Meta 的大规模多语言 ASR,支持适配器 1000+ README
Granite Speech IBM 的 ASR + 语音翻译 EN, FR, DE, ES, PT, JA README

语音活动检测 / 说话人日志 (VAD)

模型 描述 语言 仓库
Sortformer v1 NVIDIA 的端到端说话人日志 (最多 4 个说话人) 语言无关 mlx-community/diar_sortformer_4spk-v1-fp32
Sortformer v2.1 NVIDIA 的流式说话人日志,支持 AOSC 压缩 语言无关 mlx-community/diar_streaming_sortformer_4spk-v2.1-fp32

查看 Sortformer README 了解 API 详情、流式示例和模型转换。

语音转语音 (STS)

模型 描述 用例 仓库
SAM-Audio 文本引导的源分离 提取特定声音 mlx-community/sam-audio-large
Liquid2.5-Audio* 语音转语音、文本转语音和语音转文本 语音交互 mlx-community/LFM2.5-Audio-1.5B-8bit
MossFormer2 SE 语音增强 降噪 starkdmi/MossFormer2_SE_48K_MLX
DeepFilterNet (1/2/3) 语音增强 噪声抑制 mlx-community/DeepFilterNet-mlx

模型示例

Kokoro TTS

Kokoro 是一个快速、多语言的 TTS 模型,包含 54 种语音预设。

from mlx_audio.tts.utils import load_model

model = load_model("mlx-community/Kokoro-82M-bf16")

# 使用不同语音生成
for result in model.generate(
    text="Welcome to MLX-Audio!",
    voice="af_heart",  # 美式女声
    speed=1.0,
    lang_code="a"  # 美式英语
):
    audio = result.audio

可用语音:
- 美式英语: af_heart, af_bella, af_nova, af_sky, am_adam, am_echo, 等。
- 英式英语: bf_alice, bf_emma, bm_daniel, bm_george, 等。
- 日语: jf_alpha, jm_kumo, 等。
- 中文: zf_xiaobei, zm_yunxi, 等。

语言代码:
| 代码 | 语言 | 备注 |
|------|----------|------|
| a | 美式英语 | 默认 |
| b | 英式英语 | |
| j | 日语 | 需要 pip install misaki[ja] |
| z | 普通话 | 需要 pip install misaki[zh] |
| e | 西班牙语 | |
| f | 法语 | |

Qwen3-TTS

阿里巴巴最先进的多语言 TTS,支持语音克隆、情感控制和语音设计功能。

from mlx_audio.tts.utils import load_model

model = load_model("mlx-community/Qwen3-TTS-12Hz-0.6B-Base-bf16")
results = list(model.generate(
    text="Hello, welcome to MLX-Audio!",
    voice="Chelsie",
    language="English",
))

audio = results[0].audio  # mx.array

查看 Qwen3-TTS README 了解语音克隆、CustomVoice、VoiceDesign 以及所有可用模型。

Ming Omni TTS (BailingMM)

mlx_audio.tts.generate \
    --model mlx-community/Ming-omni-tts-16.8B-A3B-bf16 \
    --prompt "Please generate speech based on the following description.\n" \
    --text "This is a quick Ming Omni test." \
    --lang_code en \
    --output_path audio_io \
    --file_prefix ming_basic \
    --verbose

查看 Ming Omni TTS README 了解 CLI 和 Python 示例,以及 Ming Omni Dense README 了解 mlx-community/Ming-omni-tts-0.5B-bf16 的工作流程。

CSM (语音克隆)

使用参考音频样本克隆任何语音:

mlx_audio.tts.generate \
    --model mlx-community/csm-1b \
    --text "Hello from Sesame." \
    --ref_audio ./reference_voice.wav \
    --play

Whisper STT

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)

Qwen3-ASR & ForcedAligner

阿里巴巴的多语言语音模型,用于转录和词级对齐。

from mlx_audio.stt import load

# 语音识别
model = load("mlx-community/Qwen3-ASR-0.6B-8bit")
result = model.generate("audio.wav", language="English")
print(result.text)

# 词级强制对齐
aligner = load("mlx-community/Qwen3-ForcedAligner-0.6B-8bit")
result = aligner.generate("audio.wav", text="I have a dream", language="English")
for item in result:
    print(f"[{item.start_time:.2f}s - {item.end_time:.2f}s] {item.text}")

查看 Qwen3-ASR README 了解 CLI 用法、所有模型及更多示例。

VibeVoice-ASR

Microsoft 的 90 亿参数语音转文本模型,支持说话人日志和时间戳。支持长音频(最长 60 分钟)并输出结构化 JSON。

from mlx_audio.stt.utils import load

model = load("mlx-community/VibeVoice-ASR-bf16")

# 基础转录
result = model.generate(audio="meeting.wav", max_tokens=8192, temperature=0.0)
print(result.text)
# [{"Start":0,"End":5.2,"Speaker":0,"Content":"Hello everyone, let's begin."},
#  {"Start":5.5,"End":9.8,"Speaker":1,"Content":"Thanks for joining today."}]

# 访问解析后的片段
for seg in result.segments:
    print(f"[{seg['start_time']:.1f}-{seg['end_time']:.1f}] Speaker {seg['speaker_id']}: {seg['text']}")

流式转录:

# 在生成时流式输出 token
for text in model.stream_transcribe(audio="speech.wav", max_tokens=4096):
    print(text, end="", flush=True)

使用上下文 (热词/元数据):

result = model.generate(
    audio="technical_talk.wav",
    context="MLX, Apple Silicon, PyTorch, Transformer",
    max_tokens=8192,
    temperature=0.0,
)

CLI 用法:

```bash

基础转录

12 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 33 ms
Developed with Cursor