mlx-tts · git:20260925.32ce6c0 · 2026-09-25 · sha256 db98b2ae851e8991

mlx-tts git:20260925.32ce6c0A

Immutable. This exact content never changes and is served at /api/v1/blob/db98b2ae851e8991.

---
name: mlx-tts
description: "Apple Silicon Mac 本地语音合成 (TTS) 与语音识别 (ASR),基于 MLX 框架的 Qwen3-TTS 1.7B / Qwen3-ASR,支持用文字提示词设计音色、无需参考音频,全程离线、无 API key。Use when you need to turn text into speech on an M-series Mac, design a voice with a text prompt, or transcribe audio locally. 触发词:文字转语音、文本转语音、TTS、语音合成、生成配音、旁白配音、有声书、语音转文字、ASR、speech synthesis、text to speech、local TTS、voice design on Apple Silicon、Qwen3-TTS。Do NOT use when:非 Apple Silicon(Intel Mac / Windows / Linux)、需要从参考音频做真人音色克隆、内存低于 16GB、或需要把配音对齐到视频时间轴(改用 video-dubbing)。"
---

# mlx-tts: Apple Silicon 本地语音合成

## Purpose

用 MLX 框架在本机跑 Qwen3-TTS,把文本合成为高质量语音,并可用文字提示词设计音色;
附带 Qwen3-ASR 做语音转文字。全程离线、无 API key。本技能是一套操作协议:装好环境、
跑对命令、验证产物——不做云端调用,也不做提示词音色的临场猜测(那部分查参考文件)。

## When to Use

- 在 Apple Silicon Mac(M1/M2/M3/M4)上需要高质量本地 TTS。
- 想用文字提示词设计音色,例如 `"a warm female voice, slightly soft"`。
- 需要本机 ASR(语音转文字)。
- 希望利用 Apple Neural Engine 获得快速推理,且数据不出本机。
- 触发词:文字转语音、TTS、语音合成、生成配音、旁白、有声书、语音转文字、ASR、
  text to speech、speech synthesis、local TTS、voice design。

## When NOT to Use

- 非 Apple Silicon(Intel Mac / Windows / Linux)-> 改用其他 TTS 方案。
- 需要从参考音频做真人音色克隆 -> 本模型只支持提示词式音色设计。
- 内存低于 16GB -> 也许能跑,但更慢。
- 需要把配音逐段对齐到视频时间轴、烧录字幕 -> 交给 `video-dubbing`。
- 需要把整段视频转成结构化纪要 -> 交给 `video-minutes`。

## Workflow

1. **安装**(一次性):
   `brew install ffmpeg uv && uv tool install --force "mlx-audio" --prerelease=allow`
2. **验证安装**:`uv tool list | grep mlx` 应显示 `mlx-audio v0.4.2`。若命令找不到,
   重启终端或 `uv tool update-shell`。首次生成会自动下载模型(约 2GB)。
3. **生成 TTS**:
   `mlx_audio.tts.generate --text "你好,这是本地 TTS 测试" --output-path ./output.wav`
   需要设计音色时追加 `--instruct "a warm, gentle female voice"`。音色示例见
   `references/voice-design.md`。
4. **长文本分块**:文本超过约 500 字时按句子边界切分(每块 <= 300 字),逐块生成后用 ffmpeg
   拼接,避免内存问题与音频截断。做法见 `references/batch-and-long-text.md`。
5. **可选 ASR**:
   `mlx_audio.stt.generate --audio ./input.wav --output-path ./transcript.txt --language zh`
   长音频追加 `--chunk-duration 30`。
6. **可选后处理/转换**:用 ffmpeg 做变调、混响、变速、响度标准化或转 mp3/aac/flac,
   命令集见 `references/audio-post-processing.md`。
7. **验证产物**:确认输出 WAV 存在、时长非零、可播放;音色或语气不符合预期时调整
   `--instruct` 重跑,而不是叠加更多效果器。

## Decision Rules

- 短文本 -> 直接一次生成;超过约 500 字 -> 必须分块(`references/batch-and-long-text.md`)。
- 要设计/改变音色 -> 用 `--instruct` 描述;要保持多段音色一致 -> 用首段作 `--ref_audio` 参考
  (`--ref_audio` + `--ref_text`,见 `references/voice-design.md`)。
- 要 mp3 / aac / flac / ogg -> 先生成 WAV,再用 ffmpeg 转换(`references/audio-post-processing.md`)。
- 要做语音转文字 -> `mlx_audio.stt.generate`;需要字幕 -> `--format srt`,需要时间戳 -> `--format json`。
- 模型下载慢/失败 -> 设 `HF_ENDPOINT=https://hf-mirror.com` 或改用 ModelScope
  (`references/install-apple-silicon.md`)。
- 音色不理想 -> 先简化 `--instruct`;仍不满意再换提示词,不要堆叠复杂指令。
- 需要 GUI、可视化时间线或真人克隆 -> 改用 Voicebox,对比见 `references/voicebox-comparison.md`。

## Constraints

- **仅 Apple Silicon + macOS 14.0+**:MLX 不支持 Intel Mac 与其他平台。
- **本地运行**:不得引入云端 TTS 或需要 API key 的替代调用。
- **不做真人克隆**:只能提示词式音色设计,不要承诺复刻某个特定真人的声音。
- **长文本必须分块**:不要一次性提交超长文本,否则音频截断或 OOM。
- **不在句子中间切分**:保持句子完整,切分点落在句末标点。
- **首次运行会下载约 2GB 模型**:提前告知用户,不要误判为卡死。

## Verification

交付前逐项确认:

- [ ] `uv tool list | grep mlx` 能列出 mlx-audio;`mlx_audio.tts.generate` 可执行。
- [ ] 输出文件真实存在(默认 WAV,48kHz/16-bit),且时长非零。
- [ ] 文本 > ~500 字时已分块,且拼接后无截断。
- [ ] 若指定了音色,`--instruct` 与用户期望一致,必要时已用首段作 `--ref_audio`。
- [ ] ASR 场景下输出格式(txt/json/srt)与用户需求匹配。
- [ ] 未使用任何云端/付费 TTS 服务。

## Output

- **Outcome**:一个或多个本地音频文件(默认 `./output.wav`),或在 ASR 场景下的
  `transcript.txt` / `.json` / `.srt`。
- **Done when**:文件已生成、可播放/可读,音色与语速符合用户要求,长文本已完整覆盖无截断。
- **Evidence**:输出文件路径与时长;使用的 `--instruct` 与 `--model`;分块数与拼接结果
  (长文本场景);ASR 的语言与输出格式。

## References

按需加载,不要预先全读:

- `references/voice-design.md` — 要设计/微调音色,或用户问"能否克隆声音"时读。
- `references/batch-and-long-text.md` — 文本超过约 500 字、要批量生成,或要搭可复用脚本时读。
- `references/audio-post-processing.md` — 需要变调/混响/变速/响度标准化或格式转换时读。
- `references/install-apple-silicon.md` — 首次安装、换机、或模型下载失败时读。
- `references/troubleshooting.md` — 生成失败、音质异常,或要性能调优时读。
- `references/voicebox-comparison.md` — 用户在 MLX-TTS 与其他 TTS 工具之间选型时读。

## Troubleshooting

- 模型下载失败/超时 -> `HF_ENDPOINT=https://hf-mirror.com` 或 ModelScope。
- Command not found -> 重启终端或 `uv tool update-shell`。
- 音频被截断 -> 文本过长,改分块。
- 完整失败模式表与调试命令见 `references/troubleshooting.md`。

## Related Skills

- `video-dubbing` — 把配音逐段对齐到视频时间轴并烧录字幕,底层调用 `mlx_audio.tts.generate`。
- `video-minutes` — 视频转结构化纪要;本技能可为纪要生成语音摘要。