Обеспечение работы преобразования текста в речь в реальном времени с помощью Gradium

Источник: Baseten•

Обеспечение работы преобразования текста в речь в реальном времени с помощью Gradium

Достигайте естественного звучания в разговорных интерфейсах с помощью Gradium TTS на Baseten.

Модель Text-to-Speech (TTS) от Gradium преобразует письменный текст в звучащую речь и разработана специально для взаимодействия с голосовыми ИИ-агентами в реальном времени.

Для обеспечения естественного диалога Gradium TTS достигает показателя TTFA, который превосходит скорость реакции человеческой речи.

Что такое TTFA и почему это важно

Время до первого аудио (TTFA) измеряет интервал между отправкой запроса TTS и получением первого воспроизводимого аудиофрагмента. Это критически важно для естественного звучания беседы.

Демонстрация гонки за задержкой Gradium

Gradium обеспечивает низкое значение TTFA для естественного общения. Оцените демонстрацию гонки за задержкой TTS самостоятельно и получите доступ к репозиторию кода here.

Независимые бенчмарки Coval относят Gradium TTS к категории решений, работающих быстрее человеческой речи, что дает голосовым агентам время на осмысление или извлечение контекста без нарушения хода беседы. В бенчмарке Coval TTS (по состоянию на 4 мая 2026 г.) Gradium TTS продемонстрировал медианное значение TTFA 155 мс с межквартильным размахом всего 2 мс — этот разброс достаточно мал, чтобы разработчики могли установить надежные бюджеты задержек для остальной части своего конвейера.

Gradium TTS не ждет полного предложения

Gradium TTS работает в потоковом режиме: он может начать говорить до того, как вышестоящий текстовый генератор, например LLM, закончит выдавать полный ответ. В частности, модели Gradium используют моделирование с задержкой потоков (Delayed Streams Modeling, DSM), структуру, разработанную Kyutai, которая рассматривает текст и аудио как два параллельных потока, работающих по общим часам, благодаря чему аудио может генерироваться до того, как поступит весь текст.

Оба потока выровнены по одной и той же частоте кадров — один шаг каждые 80 мс, поэтому модель может генерировать аудио по мере поступления текста. Ключевая идея DSM заключается в том, что аудиопоток идет на несколько шагов позади текста, давая модели представление о том, что будет дальше, подобно тому, как говорящий человек корректирует тон, интонацию и темп на основе слов, которые он собирается произнести. Большая задержка дает модели больше контекста и лучшее качество голоса, а меньшая снижает задержку.

Аудиовыход следует за текстом на настроенное количество шагов декодирования

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

Gradium TTS начинает говорить после первых нескольких токенов, а не после генерации всего текста. Конструкция модели также обеспечивает быстрые вычисления каждого 80-миллисекундного кадра, поддерживая низкую задержку после начала речи.

Как создается каждый 80-миллисекундный аудиокадр

Каждый шаг в аудиопотоке создается двумя трансформерами с разными ролями:

  • Темпоральный трансформер («читатель»): проходит через потоки по одному шагу за раз, принимая новейший текстовый токен и предыдущий аудиокадр. Он выдает один вектор, описывающий, как должен звучать следующий аудиокадр, и сигнализирует о готовности к следующему слову, что поддерживает естественный темп речи при неравномерном поступлении текста.

Темпоральный трансформер («читатель»): проходит через потоки по одному шагу за раз, принимая новейший текстовый токен и предыдущий аудиокадр. Он выдает один вектор, описывающий, как должен звучать следующий аудиокадр, и сигнализирует о готовности к следующему слову, что поддерживает естественный темп речи при неравномерном поступлении текста.

  • Трансформер глубины («улучшитель»): превращает этот вектор в аудиокадр. Каждый кадр кодируется в виде до 32 токенов, расположенных так, что первый фиксирует наиболее важные признаки, а каждый последующий добавляет более мелкие детали. Улучшитель генерирует их в таком порядке, благодаря чему кадр становится все более точным с каждым токеном.

Трансформер глубины («улучшитель»): превращает этот вектор в аудиокадр. Каждый кадр кодируется в виде до 32 токенов, расположенных так, что первый фиксирует наиболее важные признаки, а каждый последующий добавляет более мелкие детали. Улучшитель генерирует их в таком порядке, благодаря чему кадр становится все более точным с каждым токеном.

Одно большое чтение, один небольшой цикл уточнения

В пределах каждого 80-миллисекундного шага темпоральный трансформер считывает новейший текстовый токен и предыдущий аудиокадр и выдает один суммарный вектор. Затем трансформер глубины генерирует аудиотокены кадра по одному, от грубых к точным.

Это разделение обеспечивает низкий показатель TTFA для Gradium TTS. Более крупный темпоральный трансформер, который должен отслеживать контекст, запускается только один раз за шаг, в то время как более мелкий трансформер глубины запускается до 32 раз за шаг, но остается недорогим, поскольку он никогда не заглядывает в прошлое. Эти многочисленные проходы небольшого улучшителя также выигрывают от дополнительной оптимизации GPU.

Оптимизация GPU специально для небольших моделей с оптимизированной задержкой

GPU выполняют тяжелые вычисления для моделей ИИ, но они не работают в одиночку. CPU действует как диспетчер: для каждого вычислительного шага он выбирает правильное ядро GPU, подготавливает его входные данные и отдает команду на запуск. Каждая из этих передач занимает небольшое фиксированное время.

В больших языковых моделях GPU является узким местом, и каждое ядро GPU работает достаточно долго, чтобы CPU мог поставить в очередь следующий запуск до завершения текущего. Однако в небольших моделях ИИ, таких как потоковый TTS, ядра GPU завершают работу быстрее, чем CPU успевает их поставить в очередь. В результате CPU становится узким местом по задержке, что приводит к снижению использования GPU.

Gradium решает эту проблему двумя способами:

  • Слияние ядер (Kernel Fusion): Используя torch.compile и Triton, Gradium объединяет операции, которые ранее требовали нескольких отдельных запусков ядер GPU, в единое ядро, благодаря чему каждый запуск выполняет больше работы.

Слияние ядер (Kernel Fusion): Используя torch.compile и Triton, Gradium объединяет операции, которые ранее требовали нескольких отдельных запусков ядер GPU, в единое ядро, благодаря чему каждый запуск выполняет больше работы.

  • Графы CUDA (CUDA Graphs): Полная последовательность ядер для шага вперед записывается один раз. На каждом последующем шаге CPU выдает одну команду повтора, а драйвер GPU запускает всю записанную последовательность подряд, вместо того чтобы ждать индивидуального запуска каждого ядра.

Графы CUDA (CUDA Graphs): Полная последовательность ядер для шага вперед записывается один раз. На каждом последующем шаге CPU выдает одну команду повтора, а драйвер GPU запускает всю записанную последовательность подряд, вместо того чтобы ждать индивидуального запуска каждого ядра.

Типичные запуски ядер против повтора графов CUDA

С помощью графов CUDA процессор выдает одну команду повтора, и записанная последовательность ядер выполняется подряд, что снижает TTFA.

В опубликованных бенчмарках Gradium включение графов CUDA сократило медианное значение TTFA более чем в 2,5 раза при небольших размерах батча.

Масштабирование Gradium TTS на Baseten

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

Автомасштабирование решает эту проблему, но новая реплика не может обрабатывать вызовы, пока веса ее модели не будут загружены в память GPU. Веса обычно вытягиваются из восходящих источников, таких как Hugging Face или S3, где ограничения частоты запросов и межрегиональная задержка еще больше увеличивают время холодного старта, особенно когда множество реплик запрашивают одни и те же файлы одновременно.

Сеть доставки Baseten Delivery Network (BDN) сокращает время холодного старта тремя способами:

  • Зеркалирование при развертывании: во время развертывания BDN копирует веса модели в управляемое Baseten хранилище и записывает манифест с хешем содержимого. Восходящий источник задействуется один раз; каждый последующий холодный старт считывает данные из собственного хранилища Baseten.

Зеркалирование при развертывании: во время развертывания BDN копирует веса модели в управляемое Baseten хранилище и записывает манифест с хешем содержимого. Восходящий источник задействуется один раз; каждый последующий холодный старт считывает данные из собственного хранилища Baseten.

  • Трехуровневое кэширование: каждый узел GPU сначала проверяет локальный диск NVMe узла, затем кэш пиров внутри кластера и, наконец, зеркалированный источник, доставляя веса на узлы H100 со скоростью более 2 ГБ/с.

Трехуровневое кэширование: каждый узел GPU сначала проверяет локальный диск NVMe узла, затем кэш пиров внутри кластера и, наконец, зеркалированный источник, доставляя веса на узлы H100 со скоростью более 2 ГБ/с.

  • Координированные загрузки: во время всплеска каждый фрагмент модели извлекается из источника одним узлом и передается пирам по внутрикластерной сети, поэтому пропускная способность источника при масштабировании до 50 реплик составляет 1x от размера модели, а не 50x.

Координированные загрузки: во время всплеска каждый фрагмент модели извлекается из источника одним узлом и передается пирам по внутрикластерной сети, поэтому пропускная способность источника при масштабировании до 50 реплик составляет 1x от размера модели, а не 50x.

Как BDN загружает модель в кластер при масштабировании

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

Поскольку веса поступают до запуска контейнера модели, передача также происходит вне оплачиваемого окна GPU. В результате холодные старты происходят в 2–3 раза быстрее, поэтому развертывание Gradium TTS на Baseten может следовать за резкими колебаниями объема вызовов, избавляя клиентов от необходимости ждать холодную реплику. Gradium делает каждое взаимодействие быстрым, а Baseten обеспечивает эту производительность по мере роста и падения трафика.

Gradium TTS доступна как выделенное развертывание на Baseten. Попробуйте ее сегодня и убедитесь в этих преимуществах на собственной рабочей нагрузке.

О чём эта статья

Ещё в разделе «AI и машинное обучение»

Все →

Ещё от Baseten