xVibeNot
xVibeNot

Наконец-то я добрался пощупать/дощупать higgs tts v3

Наконец-то я добрался пощупать/дощупать higgs tts v3

Интро

4B autoregressive decoder
sample rate 24 kHz

Higgs TTS 3 is built for voice chat: it speaks, not just reads. It turns model responses into expressive conversational speech across 100+ languages, with zero-shot voice cloning and inline control over emotion, style, prosody, pauses, and sound effects.

Звучит вкусно.

Токены для управления произношением <|category:value|>:
- эмоции - anger, amusement, и тд.
- стиль - singing, shouting, whispering
- звуковые эффекты - cough, laughter, sigh
- просодия - скорость (0.65-1.4x), паузы, pitch, выразительность

Запускаем

Из коробки стартует в SGLang-Omni и vLLM-Omni, я брал sglang.
Сразу съедает 23 GB VRAM, с дефолтными настройками - большой кеш под 64 запроса, стандартные параметры для h100.
Укручиваем батчинг, получаем 16 GB VRAM в простое, и 16.5 с одним юзером.

RTX 3090 24gb BF16
10 фраз по 5 раз синтеза

# Full audio
latency_s: mean=2.190 median=2.270 min=1.445 max=2.863
audio_dur_s: mean=5.19 median=5.36 min=3.20 max=6.88
RTF: mean=0.423 median=0.420 min=0.403 max=0.465
xRT: mean=2.4×

# Streaming
TTFA_s: mean=0.252 median=0.251 min=0.233 max=0.278
total_s: mean=2.237 median=2.291 min=1.424 max=3.033
RTF: mean=0.429


Важное уточнение - первый чанк в тестах был минимального размера в 1 фрейм, а это 40ms.

Кванты

Кванты не щупал, видел на hf GGUF, ссылки будут внизу.
Но есть теоретический расчет, где в целом базовые веса совпадают с реальностью, вероятно кванты тоже.

Базовые веса 7.6 GB (BF16, tied embeddings) + ~8 GB оверхед движка.
Текущая - 15-16 GB
FP8 weights + FP8 KV (4090) - 10 GB
NVFP4 weights (5090) - 7 GB

Все варианты поддерживает SGLang.

Тэги

Тут в целом как обычно, не все и не всегда работает.
Но точно можно управлять эмоциями и стилем - примеры будут в комментах.
Эффекты типо кашля и вздохов в целом работают, но мне показалось что через раз или не всегда выражено, вероятно зависят от референса.
Скорость речи вообще у меня никак не влияла на результат.
Заставить петь не получилось, хотя тег такой есть, выше был пример)

Дообучить

А вот с этим проблема, треин кода нет, есть остатки от v2 в chatml_dataset.py, что вероятно просто мусор.

Итог

Моделька кажется годная, по крайней мере среди остальных кажется самая масштабная по управлению речью и по железкам относительно норм.

HF:
https://huggingface.co/bosonai/higgs-tts-3-4b
vLLM:
https://github.com/vllm-project/vllm-omni/blob/main/recipes/BosonAI/Higgs-Audio-V3-TTS.md
SGLang:
https://sgl-project.github.io/sglang-omni/cookbook/higgs_tts.html
Кванты GGUF и реализация:
https://huggingface.co/NeemaShioSe/HiggsTTS3.gguf
https://github.com/Rafa00127/HiggsTTS.cpp

Комментарии (17)

  • Лохматый Осьминог
    Лохматый Осьминог
    а это тот же референс голоса, но кажется что-то случилось) Ответить
    раскрыть ветку (1)
    • Лунный Зубр
      Лунный Зубр
      дада, вот тут слышно, каминаут какой-то произошел Ответить
  • Лохматый Осьминог
    Лохматый Осьминог
    еще примеров с тем же референсом, тут понятно что работает, что нет Ответить
    раскрыть ветку (1)
    • Лохматый Осьминог
      Лохматый Осьминог
      и вот те же стили, для сравнения, но с другим рефом Ответить
  • Лохматый Осьминог
    Лохматый Осьминог
    другой известный референс, тут все ок Ответить
    раскрыть ветку (1)
    • Песчаный Бегемот
      Песчаный Бегемот
      Теги скорости пишешь прямо в протм вместе с текстом?

      «<teg>Текст озвучки» Ответить
  • Лохматый Осьминог
    Лохматый Осьминог
    вот так работает регулирование скорости (нет) Ответить
  • Песчаный Бегемот
    Песчаный Бегемот
    У меня разные эмоции довольно сильно искажают голос от первонального референса. Ответить