Boson AI 与 LMSYS 发布基于 SGLang-Omni 的 Higgs Audio v3 TTS 端到端服务

LMSYS:Blog(Chatbot Arena 团队)·2026-06-04 00:00·82天前·Boson AI & SGLang-Omni Team
AI 导读

Boson AI 与 LMSYS 联合推出基于 SGLang-Omni 推理框架的 Higgs Audio v3 TTS 端到端服务。该模型约 4B 参数,基于 Qwen3-4B 骨干,支持 100 种语言(内部评测覆盖 111 种),在 Seed-TTS、CV3、MiniMax-Multilingual 及 Higgs-Multilingual 零样本语音克隆任务中达到单字级 WER/CER。开发者可通过文本内控制标签实时调整情感(20+种)、风格、韵律(语速/音高/停顿)及音效。模型支持流式合成,文本未完整时即可开始生成语音并保持一致性。SGLang-Omni 专为多阶段生成模型设计,统一调度 AR 解码与轻量计算,实现低延迟推理。

LMSYS:Blog(Chatbot Arena 团队)
精选
77AI 编辑部评分,满分 100

Boson AI 与 LMSYS 发布基于 SGLang-Omni 的 Higgs Audio v3 TTS 端到端服务

2026-06-04 00:00· 82天前· Boson AI & SGLang-Omni Team
AI 导读

Boson AI 与 LMSYS 联合推出基于 SGLang-Omni 推理框架的 Higgs Audio v3 TTS 端到端服务。该模型约 4B 参数,基于 Qwen3-4B 骨干,支持 100 种语言(内部评测覆盖 111 种),在 Seed-TTS、CV3、MiniMax-Multilingual 及 Higgs-Multilingual 零样本语音克隆任务中达到单字级 WER/CER。开发者可通过文本内控制标签实时调整情感(20+种)、风格、韵律(语速/音高/停顿)及音效。模型支持流式合成,文本未完整时即可开始生成语音并保持一致性。SGLang-Omni 专为多阶段生成模型设计,统一调度 AR 解码与轻量计算,实现低延迟推理。

推荐理由

Higgs v3 把多语言和实时可控制整合进一个流式 TTS 模型,SGLang-Omni 为它搭好了多阶段推理的底座,做语音 Agent 的可以直接抄作业,这比多数论文落地快半拍。

正文 · AI 翻译

今天我们宣布,在 SGLang-Omni 上实现对 Higgs Audio v3 TTS 的端到端服务。Higgs Audio v3 TTS 是 Boson AI 为对话式语音智能体开发的文本转语音模型:它能够以低延迟生成自然且富有表现力的语音,支持 100 种语言,单词错误率/字符错误率仅为个位数,并允许开发者直接从输入文本流中控制情感、风格、韵律和音效。

对我们而言,服务 Higgs 不仅仅是增加一个 TTS 模型。Higgs 代表了一类更广泛的生成工作负载,在这类负载中,端到端的路径不再是单一的自回归解码循环。相反,生成过程被拆分为多个阶段,每个阶段具有不同的计算模式、延迟要求和内存行为。SGLang-Omni 正是我们为这类多阶段模型构建的推理框架。

注意:演示视频来自 Higgs Audio v3 TTS,其合成音频生成由 SGLang-Omni 支持。

认识 Higgs Audio v3 TTS

专为真实对话设计

一个好的对话式 TTS 模型不能等到一个完整打磨好的段落才发声。在真实的语音智能体场景中,模型可能只看到半句话,甚至几个词,就需要开始说话。随着更多文本的到达,生成的语音仍需在说话人身份、情感和节奏上保持连贯。

Higgs Audio v3 TTS 正是为这种流式交互模式而设计的。它可以在完整句子或标点符号到达之前就开始合成,然后随着文本流的增长继续生成,同时保持稳定的输出。

在架构上,Higgs 是一个基于 Qwen3-4B 主干网络、参数量约为 40 亿的自回归解码器。它处理交错排列的文本和音频 token。音频通过 Higgs Tokenizer 编码为 8 个离散码本,帧率为 25 fps,采用延迟模式交错排列,通过融合的多码本嵌入映射到主干网络的隐藏状态中,再通过融合的多码本输出头解码回 24 kHz 的波形。生成过程在文本块和音频块之间交替进行,因此每个新的音频片段都同时基于参考音频和已生成的上下文。

多语言质量

在 Boson AI 内部的 Higgs-Multilingual 评测集(涵盖 111 种语言和方言)上,Higgs Audio v3 TTS 在 100 种语言上实现了个位数的 WER/CER。在公开的多语言语音克隆基准测试中,v3 在 Seed-TTS、CV3 和 MiniMax-Multilingual 上也取得了宏观平均个位数的 WER/CER。零样本语音克隆仅需一段简短参考音频片段,且同一参考片段可跨语言使用。

下表报告了零样本语音克隆的 WER/CER(↓,%)。每个数字均为对应基准测试语言集的宏观平均值,使用了可复现的指标和归一化方法。

基准测试语言数量WER/CER ↓
Seed-TTS21.11
CV394.41
MiniMax-Multilingual232.74
Higgs-Multilingual1113.61

每种语言在 Seed-TTS 上的详细分解结果以及 WavLM 说话人相似度指标,可在 SGLang Omni Higgs Cookbook 中查阅。

通过文本流控制语音输出

Higgs Audio v3 TTS 同样设计为可控的。开发者可以直接在输入文本中插入控制标签,以在同一段话语中改变情绪、切换说话风格、调整语速和音高、插入停顿或触发音效:

<|emotion:amusement|><|prosody:expressive_high|>Wait, wait, that was kind of hilarious. <|sfx:laughter|>Hehe, no, seriously, I was not ready for that.

标签系列涵盖 20 多种情绪(`<|emotion:elation|>`、`<|emotion:anger|>`、`<|emotion:sadness|>`……)、风格(`<|style:singing|>`、`<|style:whispering|>`、`<|style:shouting|>`)、韵律(`<|prosody:speed_very_slow|>`、`<|prosody:pitch_high|>`、`<|prosody:pause|>`、`<|prosody:long_pause|>`)以及音效(`<|sfx:cough|>`、`<|sfx:laughter|>`、`<|sfx:sigh|>`……)。不同类别的标签可以组合使用。完整目录见 SGLang Omni Higgs Cookbook。

使用 SGLang-Omni 部署 Higgs

Higgs 在 SGLang-Omni 上部署并进行了优化。与标准的大语言模型不同,Higgs 以及许多现代 TTS 或多模态全能模型并不自然地适配单一的统一自回归解码循环。它们的端到端生成路径包含多个阶段:有些类似于标准的自回归解码,有些是轻量级的函数式计算,还有一些则持续消费数据块并流式返回音频。

SGLang-Omni 的目标是以简洁的运行时结构来服务这类模型:每个阶段根据自身的计算模式进行调度,阶段之间通过低开销通道进行通信,而 GPU 分配、进程拓扑和内存预算则由框架统一管理。

基于高性能 SGLang 后端的多阶段解码

单阶段模型已有成熟的推理服务路径:自回归大语言模型由 SGLang 主框架优化,扩散模型则由 SGLang-Diffusion 支持。SGLang-Omni 专注于不同的领域:那些端到端生成过程被拆分为多个具有不同计算特性的阶段的模型。Higgs 就是一个例子。Qwen3-Omni 的 Thinker → Talker → MTP 流水线、Fish Audio S2-Pro 的串行嵌套双 AR 设计,以及 Ming-Omni 和 LLaDA2.0-Uni 等全模态模型,都属于同一类别。

正因如此,SGLang-Omni 运行时是围绕“阶段”这一抽象概念构建的。模型配置会静态声明流水线中的各个阶段、它们的 GPU 分配以及进程拓扑。分配层和拓扑层负责准备工作进程。协调器负责在阶段之间路由请求。每个阶段充当一个 IO 外壳:它从上游阶段接收数据,将工作交给其内部的调度器,并将输出流式传输给下游阶段。

不同的阶段可以使用不同的调度器。AR 阶段,例如 Qwen3-Omni Thinker,通常使用 OmniScheduler,它在保留 SGLang 的连续批处理、混合预填充/解码调度、KV 缓存管理、树缓存和 CUDA Graph 支持的同时,将这些功能适配到面向全模态的原生请求对象和流式输出上。非 AR 阶段,例如小型编码器和聚合器,可以使用 SimpleScheduler,它本质上是一个清晰的 get → forward → put 循环。流式阶段则使用 StreamingSimpleScheduler 来管理数据块和完成生命周期,例如处于流式模式下的 Higgs 声码器。

阶段之间的接口是统一的,但每个阶段可以选择与其自身计算模式相匹配的执行策略。为了使这一点既实用又高效,我们专注于三个基础设施组件:

  • 分层通信。轻量级控制消息(包括提交、数据就绪、流式传输、完成、关闭和中止)通过 ZMQ/msgpack 控制平面传输。张量负载通过中继数据平面传输,可用的后端包括 shm、nccl、nixl 和 mooncake。同进程边界可使用本地调度,符合条件的同 GPU 流式传输块可使用 CUDA IPC,跨进程边界则保持相同的阶段级契约。
  • 进程-GPU-阶段拓扑。流水线在配置中声明阶段、路由、流式传输边、进程组、GPU 放置、张量并行大小以及可选的融合阶段组。非 TP 阶段显式声明其进程组。TP 阶段扩展为每个秩的进程,其中秩 0 拥有外部阶段 IO。紧凑的共置部署和更大的拆分/TP 部署是同一拓扑描述的不同实例,而非独立的服务堆栈。
  • 内存隔离。在多阶段运行时中,GPU 内存是阶段级的资源契约,而非全局调度器的一个分配份额。每个由 GPU 支持的阶段可以声明 `runtime.resources.total_gpu_memory_fraction`;在启动前,放置验证会汇总每个 GPU 上的预算。当多个进程组共享一张显卡时,这些预算必须明确指定,这样某个阶段就不会静默地消耗为另一阶段预留的内存。

复用全模态特定优化

在集成 Higgs 的同时,我们还将反复出现的全模态优化提取为可复用的框架模块。相似的计算模式不应在每个模型中重新实现,性能优化工作应存在于运行时中,而非分散在特定模型的流水线里。

  • 支持 CUDA Graph 的反馈运行器。Higgs 的 `tts_engine` 默认启用 CUDA Graph 捕获,并使用专为 AR + 多码本反馈循环设计的模型运行器。该运行器处理静态缓冲区分配、延迟捕获以及对 Python 端 gather/scatter 操作的额外关注。相同的运行器接口还支持 Qwen3-Omni、Fish Audio S2-Pro 以及其他 SGLang-Omni 模型的单步前瞻异步解码。
  • 流式声码器调度器。Higgs、Qwen3-Omni、Fish Audio S2-Pro 及相关模型都需要类似的流式音频生命周期:初始化每个请求的状态、累积传入的代码块、在上下文足够时立即输出音频窗口、在 stream_done 时刷新,并向流式客户端返回紧凑的最终负载。编解码器和窗口逻辑仍因模型而异,但服务生命周期是共通的。

借助这些抽象,新的多阶段模型不再需要散布在代码库各处的、包含 if-else 分支的定制化流水线。开发者将模型划分为调度段,选择合适的调度器和模型运行器钩子,声明拓扑结构和内存契约,然后让框架处理路由、流式传输、数据移动、进程放置以及阶段级资源隔离。

不断壮大的多阶段模型生态

Higgs 现已加入 SGLang-Omni 已支持的 TTS 和全模态模型行列:

模型类型备注
Higgs Audio v3 TTSTTS语音克隆、流式传输、100 种语言
Fish Audio S2-ProTTS语音克隆、流式传输
Voxtral TTSTTS预设语音、流式传输、9 种语言
Qwen3-TTSTTS语音克隆、流式传输、10 种语言
MOSS-TTSTTS语音克隆、流式传输、31 种语言
Qwen3-Omni全模态文本/图像/音频/视频 → 文本 + 音频
Ming-Omni全模态流式 TTS
LLaDA2.0-Uni多模态文本 + 图像理解与生成

这些模型从外部看各不相同,但在推理系统层面,它们面临相同的根本问题:如何将多个异构阶段组织成稳定、高效且可扩展的生成流水线。这就是为什么将 Higgs 接入 SGLang-Omni 主要工作是声明其流水线(预处理 → audio_encoder → tts_engine → 声码器)并添加模型特定的钩子,而不是从头构建服务栈。

端到端优化 Higgs

除了框架抽象,我们还对 Higgs 流水线进行了端到端优化。主要优化项如下所列;实现细节和进度追踪请参见 Higgs 优化路线图(#478)及代码仓库。

  • AR 主干:为解码循环捕获 CUDA Graph,为全模态 AR 循环实现异步一步前瞻解码,并将每步的逐 D2H 同步批处理为单次传输。
  • 编码器:将预处理融合到编码器阶段,为重复使用的参考音频设置 LRU 缓存,以及一个批处理音频编码器。
  • 声码器:批处理声码器解码。
  • 缓存:基于参考音频划分的 RadixAttention 缓存,并采用额外键命名空间,以便重复的语音克隆参考可以复用前缀缓存。
  • 调度与流式传输:放弃定制调度器,改用共享的 OmniScheduler,并加入实时 SSE 流式调度器,以减少首段音频的生成时间。

性能

我们在完整的 Seed-TTS EN 数据集上评估 Higgs(每次运行 N=1088)。客户端使用 --max-concurrency 参数扫描,Higgs 服务器配置为 max_running_requests=16、bf16 并启用 CUDA Graph。每行报告在 1× H100 上运行 3 次的平均值。

并发数吞吐量(请求/秒)平均延迟RTF(每请求)音频秒数/秒
11.62617 毫秒0.1476.89
22.70742 毫秒0.18011.37
45.45733 毫秒0.17722.84
88.91898 毫秒0.21737.38
1614.741079 毫秒0.26261.84
  • 并发数:客户端在途请求的最大数量(--max-concurrency)。
  • 吞吐量(请求/秒):完成的请求数除以基准测试总挂钟时间。
  • 平均延迟:每个请求的平均端到端时间,从发送请求到接收完整响应。
  • RTF(每请求):每个请求的处理时间与生成的音频时长之平均比值。低于 1 的值表示快于实时。
  • 音频秒数/秒:生成的音频总秒数除以基准测试总挂钟时间。

要复现结果,请遵循基准测试脚本。

亲自尝试

详细说明请参见 SGLang Omni Higgs Cookbook。以下命令展示了实现可用设置的最快捷路径。

安装与部署

docker pull lmsysorg/sglang-omni:dev
docker run -it --gpus all --shm-size 32g --ipc host --network host --privileged \
  lmsysorg/sglang-omni:dev /bin/zsh

git clone git@github.com:sgl-project/sglang-omni.git && cd sglang-omni
uv venv .venv -p 3.12 && source .venv/bin/activate
uv pip install -v -e .
hf download bosonai/higgs-audio-v3-tts-4b

sgl-omni serve \
  --model-path bosonai/higgs-audio-v3-tts-4b \
  --port 8000

零样本合成

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"input": "Hello, how are you?"}' \
  --output output.wav

参考输出:

对于语音克隆,我们建议同时提供参考音频和参考转录文本,这通常能提高克隆质量:

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Have a nice day and enjoy south california sunshine.",
    "references": [{
      "audio_path": "https://sgl-project.github.io/sglang-omni/_static/audio/male-voice.wav",
      "text": "Hey, Adam here. Let'\''s create something that feels real, sounds human, and connects every time."
    }],
    "temperature": 0.8,
    "top_k": 50,
    "max_new_tokens": 1024
  }' \
  --output output.wav

参考输入:

参考输出:

流式传输

设置 "stream": true 以通过服务器发送事件接收音频。客户端可以在完整生成完成前开始播放,因为声码器会增量式地发出 WAV 数据块。-N 标志会禁用 curl 的输出缓冲,以便 SSE 事件在到达时立即打印:

curl -N -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Get the trust fund to the bank early.",
    "references": [{
      "audio_path": "https://sgl-project.github.io/sglang-omni/_static/audio/male-voice.wav",
      "text": "Hey, Adam here. Let'\''s create something that feels real, sounds human, and connects every time."
    }],
    "stream": true
  }'

对于原始 PCM 流式传输(无 SSE JSON),请参阅 Higgs TTS cookbook。

参考输出:

内联控制 token

控制 token 可以直接嵌入输入字段,不同类别的 token 也可以组合使用。一般来说,将情感、风格、语速、音高或富有表现力的韵律等传递性 token 放在每一轮对话的开头;在需要停顿的位置放置 `<|prosody:pause|>` / `<|prosody:long_pause|>`;并将每个 `<|sfx:…|>` 与紧随其后的对应拟声词配对。完整目录请参见技术手册。

情感:愉悦 + 笑声

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "<|emotion:amusement|><|prosody:expressive_high|>Wait, wait, that was kind of hilarious. <|sfx:laughter|>Hehe, no, seriously, I was not ready for that.",
    "temperature": 0.8,
    "top_k": 50,
    "max_new_tokens": 1024
  }' \
  --output output.wav

参考输出:

情感:愤怒 + 喊叫

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "<|emotion:anger|><|style:shouting|>No, that is not okay! We cannot ship something that sounds broken, delayed, and unnatural.",
    "temperature": 0.8,
    "top_k": 50,
    "max_new_tokens": 1024
  }' \
  --output output.wav

参考输出:

情感:惊讶 + 尖叫

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "<|emotion:surprise|><|prosody:pitch_high|><|sfx:screaming|>Ah! Wait, I almost forgot! Higgs Audio v3 also supports over one hundred languages.",
    "references": [{
      "audio_path": "https://sgl-project.github.io/sglang-omni/_static/audio/ref_voice.wav",
      "text": "It was the night before my birthday. Hooray! It’s almost here! It may not be a holiday, but it’s the best day of the year."
    }],
    "temperature": 0.8,
    "top_k": 50,
    "max_new_tokens": 1024
  }' \
  --output output.wav

参考输出:

组合示例:

下面的示例在一个简短的高考风格英语听力对话中,结合了情感、音效和韵律 token,对话在两位说话者之间进行:

指令

第一部分——她询问错过的课程:

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "<|emotion:contemplation|>Hi David, I missed the biology class today because I caught a cold. <|sfx:cough|>Ahem! Sorry, Could you tell me what the teacher covered?",
    "references": [{
      "audio_path": "https://sgl-project.github.io/sglang-omni/_static/audio/female-voice.wav",
      "text": "By repeating what students say, teachers can demonstrate that they are listening. By extending what students say."
    }],
    "temperature": 0.8,
    "top_k": 50,
    "max_new_tokens": 1024
  }' \
  --output part1.wav

第二部分——他解释课程内容:

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "<|emotion:enthusiasm|>Sure, no problem! We learned how plants make food through photosynthesis, and <|prosody:long_pause|> there will be a quiz this Friday.",
    "references": [{
      "audio_path": "https://sgl-project.github.io/sglang-omni/_static/audio/male-voice.wav",
      "text": "Hey, Adam here. Let'\''s create something that feels real, sounds human, and connects every time."
    }],
    "temperature": 0.8,
    "top_k": 50,
    "max_new_tokens": 1024
  }' \
  --output part2.wav

第三部分——她向他道谢:

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "input": "<|emotion:relief|>Oh, that is really helpful. Thank you!",
    "references": [{
      "audio_path": "https://sgl-project.github.io/sglang-omni/_static/audio/female-voice.wav",
      "text": "By repeating what students say, teachers can demonstrate that they are listening. By extending what students say."
    }],
    "temperature": 0.8,
    "top_k": 50,
    "max_new_tokens": 1024
  }' \
  --output part3.wav

拼接(每行之间约 0.6 秒间隔):

ffmpeg -y \
  -i part1.wav -f lavfi -t 0.6 -i anullsrc=r=24000:cl=mono \
  -i part2.wav -f lavfi -t 0.6 -i anullsrc=r=24000:cl=mono \
  -i part3.wav \
  -filter_complex "[0:a][1:a][2:a][3:a][4:a]concat=n=5:v=0:a=1" \
  gaokao_listening.wav

参考输出:

演示

你也可以通过一条命令同时启动后端和浏览器 UI:

CUDA_VISIBLE_DEVICES=0 ./playground/higgs/start.sh

路线图

对于 SGLang-Omni 来说,端到端地服务 Higgs 是一个重要的里程碑,但并非终点。我们正在多个方向上持续推进:

  • 跟踪上游 SGLang(#658):迁移至最新的 SGLang,使 AR 主干网络能够持续继承主线 SGLang 的改进,包括 CUDA/PyTorch 构建更新、内核优化、调度以及推测解码。
  • 按模型重构(#661):延续 RFC #188 的方向,采用更清晰的按模型抽象。我们希望新模型集成更像“声明拓扑结构并接入钩子”,而不是在整个框架中添加特殊分支。
  • 端到端强化学习(#663):将 SGLang-Omni 用作全模态和 TTS 模型的高吞吐量 rollout 后端,并设置明确的奖励目标,进一步连接推理服务与后训练环节。

跨节点多阶段流水线以及更完整的扩散阶段支持也正在进行中。随着阶段抽象、统一调度器接口、分层通信以及跨阶段内存预算的到位,这些能力可以在同一框架内发展,而无需再搭建另一套服务栈。

加入我们

SGLang-Omni 仍在快速发展。我们希望它成为多阶段生成模型的通用推理基础:新模型不应需要从头搭建推理服务栈,也不应将特殊逻辑分散在十几个文件中。它们应当能够以清晰的阶段、拓扑声明和模型特定的钩子来表达,而调度、通信、内存管理和流式处理则由框架来处理。

如果您对多阶段推理、TTS、全能模型、多模态生成、推理系统或强化学习回滚后端感兴趣,我们非常期待与您合作。无论您的专长是内核、调度、通信、模型接入还是基准测试,都欢迎贡献和讨论。

致谢

SGLang-Omni — 蔡浩广、蔡尚明、陈秋江、邓嘉欣、高文耀、高逸飞、顾靖雯、关一桐、陈晨红、金浩、景新立、李胜贵、林俊荣、陆新宇、罗源、Ratish Palanisamy、钱明、曲金涛、史帅、王超、Richard Wang、王淑文、夏子杰、杨宇浩、叶雪松、尹悦、范尹、张高凯、张晓宇、张一驰、赵晨阳。

Higgs Audio v3 TTS (Boson AI) — 李沐、Alex Smola、Lindsey Allen、孟思林、白珂、Ruskin Raj Manku、周华鹏、沈东明、Jonah Mackey、李毅、尹维苏、刘一志、王新宇、余浩。

了解更多

  • 模型:bosonai/higgs-audio-v3-tts-4b
  • 博客:Higgs Audio v3 TTS
  • 推理服务框架:GitHub 上的 SGLang-Omni
  • 文档:SGLang-Omni 文档 · Higgs TTS 使用手册
  • Higgs 优化路线图:#478
  • 设计背景:SGLang-Omni:为多阶段生成模型重新设计推理框架

来源:LMSYS:Blog(Chatbot Arena 团队)· lmsys.org