超快速 Qwen3-TTS:34毫秒首音频时间,每秒处理10个请求 [OSS]

Reddit r/LocalLLaMA 工具

摘要

Nari Qwen3-TTS 是针对 Qwen3-TTS 模型的高性能服务实现,在单块 H100 GPU 上实现低于 50 毫秒的首音频时间,并每秒处理 10 个请求。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/21 19:07

nari-labs/nari-qwen3-tts

来源:https://github.com/nari-labs/nari-qwen3-tts

Nari Qwen3-TTS

简而言之

Nari Qwen3-TTS 是一个高性能、单 H100 部署的 Qwen3-TTS 1.7B CustomVoice (https://huggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice) 服务实现。它通过 HTTP 提供流式和非流式语音生成接口,并支持基于 WebSocket 的输入流式传输,以实现增量式文本输入。

它在单台 NVIDIA H100 SXM 上实现了每秒 10 个请求(RPS)和亚 50 毫秒的 p95 首音频时间(TTFA),同时保持实时播放。即使在 20 RPS 的负载下,它也能维持 亚 80 毫秒的 p95 TTFA。

下图是与流行推理引擎的性能对比。

负载下 p95 TTFA 对比

方法论

完整方法论请阅读我们的博文 (https://nari-labs.com/blog/qwen3-tts-speed-cost-frontier/)。基准测试详情请参阅基准测试仓库 (https://github.com/nari-labs/benchmarks)。

使用 Docker 运行

容器需要 NVIDIA H100、NVIDIA Container Toolkit 以及与 CUDA 13.0 兼容的驱动程序。发布的镜像支持 Linux x86_64 (linux/amd64) H100 主机。该引擎目前仅测试了以英语为主要语言的情况。

docker run --rm --gpus all \  
  -p 8000:8000 \  
  -e HF_TOKEN \  
  -e QWEN3_TTS_PROFILE=ttfa \  
  -v nari-qwen3-tts-cache:/home/nari/.cache \  
  ghcr.io/nari-labs/nari-qwen3-tts:latest  

模型文件和编译后的内核缓存在命名卷中。模型加载和 CUDA 图捕获完成后,使用以下命令检查就绪状态:

curl --fail http://127.0.0.1:8000/ready  

若要在本地构建镜像:

docker build \  
  --build-arg VCS_REF="$(git rev-parse HEAD)" \  
  -t nari-qwen3-tts:local .  

使用 uv 运行

Python 和 uv 版本锁定在 .python-version 和 pyproject.toml 中。已签入的 uv.lock 定义了完整环境。

安装所需的系统软件包(Debian/Ubuntu):

sudo apt-get install -y build-essential libsndfile1 sox  
uv sync --frozen --extra codec --extra cuda --extra serving  
uv run --frozen nari-qwen3-tts-server --profile ttfa  

模型缓存后,可添加 --local-files-only 以防止启动时下载。使用 --frozen 是有意为之:过期的 lockfile 会导致失败,而不是静默地解析为不同的 CUDA 或 Python 环境。

发行包名称使用连字符,而 Python 导入使用下划线:

from nari_qwen3_tts import ModelAssetConfig, open_model  

配置文件

  • ttfa:优先考虑首音频时间,采用面向延迟的调度和较小的初始编解码块。
  • balanced:默认容器配置文件,平衡首音频延迟和持续请求吞吐量。
  • throughput:使用较大的编解码块和批处理,优先考虑负载下的聚合吞吐量。

通过 QWEN3_TTS_PROFILE 选择 Docker 配置文件,或向 nari-qwen3-tts-server 传递 --profile 参数。您也可以在 Docker 中设置 QWEN3_TTS_MODEL_CACHE_DIR 和 QWEN3_TTS_LOCAL_FILES_ONLY=1。

要进行高级调优,请应用严格的 partial YAML 覆盖:

nari-qwen3-tts-server \  
  --local-files-only \  
  --engine-config /path/to/engine.yaml  

覆盖文件可以使用 extends: ttfa、balanced 或 throughput 来命名其打包的基础配置;或者传递 --profile 并省略 extends。未知的键、无效的捕获列表以及配置文件/基础不匹配会导致模型加载前失败。完全解析的配置及其 SHA-256 会在启动时打印出来。

API 与架构

该服务提供以下接口:

  • GET /health
  • GET /ready
  • GET /v1/models
  • POST /v1/audio/speech
  • WS /v1/audio/speech/ws

实时文本协议和客户端示例请参阅 WebSocket 语音 API。

HTTP 客户端示例

POST /v1/audio/speech 遵循 OpenAI Audio Speech 请求格式。Nari Qwen3-TTS 仅支持上述列出的模型、wav 和 pcm 输出格式,以及 speed: 1.0。它也接受 Nari 特有的控制参数,例如 language。

curl http://127.0.0.1:8000/v1/audio/speech \  
  -H 'Content-Type: application/json' \  
  -d '{  
    "model": "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",  
    "input": "Hello from Nari Labs.",  
    "voice": "ryan",  
    "language": "english",  
    "response_format": "wav",  
    "stream": false  
  }' \  
  --output speech.wav  

在 CUDA 图捕获和预热 TTS 请求都完成之前,就绪状态将保持为 false。

致谢与参考

由 Nari Labs (https://nari-labs.com) 构建。感谢 Qwen3-TTS 的作者发布 Qwen3-TTS,以及以下项目在高性能多模态和语音服务方面的工作:

  • Qwen3-TTS (https://github.com/QwenLM/Qwen3-TTS)
  • vLLM-Omni (https://github.com/vllm-project/vllm-omni)
  • SGLang-Omni (https://github.com/sgl-project/sglang-omni)
  • VoxServe (https://github.com/vox-serve/vox-serve)
  • M* (https://github.com/mstar-project/mstar)

相似文章

Qwen3-TTS 技术报告

Papers with Code Trending

Qwen3-TTS 技术报告介绍了一系列先进的多语言文本转语音模型,具备语音克隆和可控生成能力,采用双轨 LM 架构和专用分词器以实现低延迟流式处理。

Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice

Hugging Face Models Trending

阿里巴巴的Qwen团队发布了Qwen3-TTS-12Hz-1.7B-CustomVoice,这是一个强大的文本转语音模型,支持10种语言,具有低延迟流式传输、基于指令的语音控制和强大的上下文理解能力。