超快速 Qwen3-TTS:34毫秒首音频时间,每秒处理10个请求 [OSS]
摘要
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 /healthGET /readyGET /v1/modelsPOST /v1/audio/speechWS /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)
相似文章
HN上展示:Nari Qwen3-TTS 和 Qwen3-ASR – 高准确率、低延迟和低成本
Nari Labs 推出 Qwen3-TTS 和 Qwen3-ASR 模型,在免费公开测试中提供高准确率、低延迟和成本效益,同时提供优化的 API 和服务用于生产部署。
Qwen3 TTS 被严重低估了——我本地实时跑通后,发现它是目前最有表现力的开源 TTS 之一
开发者演示如何本地实时运行 Qwen3 TTS,支持流式输出、量化、词级对齐与自定义音色微调,打造高表现力的开源 TTS 流水线。
Qwen3-TTS 技术报告
Qwen3-TTS 技术报告介绍了一系列先进的多语言文本转语音模型,具备语音克隆和可控生成能力,采用双轨 LM 架构和专用分词器以实现低延迟流式处理。
Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
阿里巴巴的Qwen团队发布了Qwen3-TTS-12Hz-1.7B-CustomVoice,这是一个强大的文本转语音模型,支持10种语言,具有低延迟流式传输、基于指令的语音控制和强大的上下文理解能力。
在没有GPU的情况下,语音助手的响应速度能有多快?在CPU上使用Qwen3-ASR和Kokoro-TTS ONNX。
探讨了在没有GPU的情况下,在CPU上使用Qwen3-ASR和Kokoro-TTS ONNX模型运行语音助手的性能,测量响应时间。