qwen3-tts.cpp:纯 C++ 实现的 Qwen3-TTS语音合成,比 PyTorch 快 3 倍以上

工具3天前发布 小马良
5 0

如果你希望在本地设备上运行高质量文本转语音(TTS),又不想依赖 Python、PyTorch 或庞大的推理环境,qwen3-tts.cpp 提供了一个轻量、高效、完全自包含的解决方案。

该项目基于 GGML 张量库,用 纯 C++17 重写了 Qwen3-TTS 的完整推理流程——从文本分词、说话人嵌入提取、Transformer 语音码生成,到声码器波形合成,全程无需 Python 或 PyTorch。这意味着它可以在资源受限的边缘设备、嵌入式系统或对启动速度敏感的场景中高效运行。

qwen3-tts.cpp:纯 C++ 实现的 Qwen3-TTS语音合成,比 PyTorch 快 3 倍以上

性能实测:快 3–4 倍,内存开销可控

官方基准测试显示:

  • 基础合成速度提升 3.19 倍
  • 语音克隆合成速度提升 4.07 倍
  • 内存峰值仅增加 +19.0%(基础) 和 +7.7%(克隆)

所有输出均通过 确定性参考测试 与原始 Python 实现对齐,确保音质一致。尽管因 F16 精度差异导致波形相关性略低,但听感上完全等效

核心功能

  • 完整 TTS 流程:文本 → 分词 → 说话人编码 → Transformer → 声码器 → WAV
  • 语音克隆:提供一段参考音频(如 reference.wav),即可生成具有相同音色的语音
  • 多后端支持:自动优先使用 Metal(macOS)、GPU 或其他加速器,失败时无缝回退到 CPU
  • 灵活解码:支持贪婪解码(--temperature 0)和带温度、top-k、重复惩罚的采样解码
  • GGUF 模型格式:支持 F16 和 Q8_0 量化,便于部署和分发

快速上手

# 克隆并初始化子模块
git clone https://github.com/predict-woo/qwen3-tts.cpp.git
cd qwen3-tts.cpp
git submodule update --init --recursive

# 构建 GGML(启用 Metal)
cmake -S ggml -B ggml/build -DGGML_METAL=ON
cmake --build ggml/build -j4

# 构建主程序
cmake -S . -B build
cmake --build build -j4

# 设置 Python 环境(仅用于模型转换)
uv venv .venv && source .venv/bin/activate
uv pip install huggingface_hub gguf torch safetensors numpy tqdm coremltools

# 一键下载并转换模型为 GGUF 格式
python scripts/setup_pipeline_models.py

生成语音:

# 基础合成
./build/qwen3-tts-cli -m models -t "Hello from qwen3-tts.cpp" -o hello.wav

# 语音克隆(使用参考音频)
./build/qwen3-tts-cli -m models -r examples/readme_clone_input.wav \
  -t "This is a voice cloning example." -o cloned.wav

技术细节

  • Transformer 结构:28 层 Qwen2 “说话器” + 5 层自回归“码预测器”,每帧生成 16 个语音码本
  • 预填充逻辑:与官方 Python 实现完全一致,包括角色 token、语言 ID、BOS 等位置嵌入
  • 后端调度:运行时自动选择最优计算设备(IGPU → GPU → ACCEL → CPU)
  • 可选 CoreML:在 macOS 上自动使用 .mlpackage 模型加速,可通过环境变量关闭

输出产物

设置完成后,models/ 目录将包含:

  • qwen3-tts-0.6b-f16.gguf(主模型)
  • qwen3-tts-tokenizer-f16.gguf(声码器)
  • coreml/code_predictor.mlpackage(macOS CoreML 加速模型)

qwen3-tts.cpp 不是简单的“Python 转 C++”,而是对整个 TTS 推理栈的重新思考:去依赖、保精度、提速度、控资源。对于需要在本地部署语音能力的开发者、嵌入式工程师或隐私敏感用户,它提供了一条切实可行的路径。

© 版权声明

相关文章

暂无评论

none
暂无评论...