惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
B
Blog RSS Feed
GbyAI
GbyAI
P
Proofpoint News Feed
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
D
Docker
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recorded Future
Recorded Future
美团技术团队
The Register - Security
The Register - Security
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
量子位
B
Blog
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
L
LangChain Blog
Latest news
Latest news
S
SegmentFault 最新的问题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
W
WeLiveSecurity
T
Tenable Blog
T
Tor Project blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Обрести свой голос: сложность выбора TTS-архитектуры для ИИ-агента
Дмитрий Зубрецкий · 2026-06-16 · via Все публикации подряд на Хабре

Средний

9 мин

9

Продолжаю писать о разработке собственного TTS-сервиса, основанный на шишках, набитых в targetai. В первой статье я описал критерии оценки и методологию бенчмарка. В этой статье речь пойдет о том, как мы с командой применили эти критерии на практике.


Дисклеймеры: Всё описанное ниже не претендует на объективную истину. Выводы и трактовки основаны исключительно на моем личном опыте и опыте моей команды в работе с конкретными решениями в конкретном продакшен-контексте. Уровень технических деталей в тексте намеренно упрощен — этот текст ориентирован в первую очередь на технических менеджеров и CTO, принимающих архитектурные решения.


В предыдущей статье я описывал систему критериев оценки TTS-движков для ИИ-агента в голосе (телефония + WebRTC). Если кратко, то вот основные моменты :

Must-have (Приоритет 1): человекоподобность голоса, фонетическое качество на русском языке, поддержка онлайн-режима с предсказуемой задержкой.

Важно, но итерируемо (Приоритет 2): корректность ударений, лёгкость добавления нового голоса, quality voice cloning.

Для тех, кто хочет более широкий взгляд на open source TTS-ландшафт — рекомендую обзор коллег из Raft, там хороший срез по метрикам и архитектурам с точки зрения технической команды. Мы же с коллегами в targetai смотрели на вещи с точки зрения прикладной задачи: что из этого реально работает для русскоязычного голосового агента "в проде".

Отдельная методологическая оговорка, важная для интерпретации дальнейшего: поскольку инференс части моделей неидемпотентен (один и тот же текст на одном референсном аудио может каждый раз звучать чуть иначе), каждую реплику бенчмарк-датасета мы синтезировали минимум 3 раза. Это особенно критично для русского языка: ошибка в ударении может проявляться нестабильно — и один «чистый» прогон не означает, что модель справилась.

Ну что ж, напомнил, о чем была речь ранее, теперь переходим к конкретным моделям.

F5-TTS

Коротко: E2E-модель на flow matching и Diffusion Transformer. Нет авторегрессии, нет отдельного duration predictor, не нужен явный выравниватель (aligner) текста и речи.

Архитектура

Вместо классического каскада «текстовый энкодер → предсказание длительностей → акустическая модель → вокодер» F5-TTS работает принципиально иначе. Текст приводится к длине речевого представления через специальные токены-заполнители, после чего модель «восстанавливает» звук как задачу постепенного деноизинга. Из практически важных деталей: на этапе инференса используется Sway Sampling — стратегия, ускоряющая генерацию без переобучения. Вокодер — Vocos или BigVGAN.

Важная экосистемная деталь для нашей задачи: вокруг F5-TTS существуют русскоязычные чекпойнты с поддержкой явной разметки ударений. Это не свойство исходной базовой модели, но ценный практический бонус.

Что показало тестирование

F5-TTS произвела хорошее впечатление в части voice cloning — перенос тембра, интонаций и экспрессивности на уровне, который мы не ожидали от полностью неавторегрессионной архитектуры. Просодия естественная, модель звучит живо.

Проблема, с которой мы столкнулись — плавающие фонетические отклонения. Конкретный пример: слово «кэшбэк» в части прогонов произносилось как «кэшбок». После дообучения частоту таких ошибок удалось снизить примерно до 3 случаев на 100 сэмплов. Звучит терпимо — но не в телефонии. Одна фонетическая ошибка в ключевом слове в разговоре с клиентом заметнее, чем общий высокий средний балл качества.

Второй принципиальный ограничитель — отсутствие нормального потокового (streaming) режима. Модель генерирует весь результат одной «транзакцией», и разбить этот процесс на чанки с гранулярностью 100–200 мс штатными средствами нельзя. Для offline-сценария это несущественно. Для голосового агента в реальном диалоге — проблема.

Итог по F5-TTS

Критерий

Оценка

Онлайн-режим / стриминг

✗ не поддерживается штатно

Фонетическое качество

✓ высокое, с оговорками

Ударения на русском

✓ при использовании спец. чекпойнтов

Voice cloning

✓✓ один из лучших среди рассмотренных

Просодия / естественность

✓✓ высокая

Отсутствие «металла»

XTTS v2

Коротко: авторегрессионная multilingual zero-shot TTS от Coqui. Выросла из идей Tortoise, но оптимизирована под cross-language voice cloning и streaming inference.

Архитектура — в двух словах

XTTS v2 предсказывает аудио-токены авторегрессионно — то есть токен за токеном, как языковая модель предсказывает слова. Это принципиально важно: именно авторегрессионная природа делает возможным нативный стриминг — генерацию и отдачу аудио чанками по мере готовности, не дожидаясь конца всей фразы. Для conditioning по голосу используется Perceiver resampler: он «читает» mel-spectrogram референсного аудио и формирует представление голоса, которое подаётся на вход GPT-декодеру. В документации Coqui заявлена задержка первого чанка менее 200 мс в типовой GPU-конфигурации.

Что показало тестирование

XTTS v2 оказалась самой практичной точкой входа для нашей задачи с точки зрения скорости прохождения пути «поднял → дообучил → встроил в онлайн-сценарий». Модель, CLI, API, streaming и fine-tuning уже собраны в одном репозитории.

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

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

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

Итог по XTTS v2

Критерий

Оценка

Онлайн-режим / стриминг

✓✓ нативный стриминг

Фонетическое качество

✓ хорошее

Ударения на русском

△ нужно дообучение; готовых открытых чекпойнтов с ударениями на момент исследования не нашли

Voice cloning

△ ниже, чем у F5-TTS

Просодия / естественность

Отсутствие «металла»

△ артефакты присутствуют

ChatterBox

Коротко: семейство open source TTS-моделей от Resemble AI, архитектурно близкое к XTTS. С MIT-лицензией, встроенным watermarking и управлением экспрессивностью.

Архитектура — в двух словах

ChatterBox — каскад из двух основных блоков. Первый (T3) авторегрессионно генерирует речевые токены по текстовым. Второй (S3Gen) переводит эти токены в аудио через flow matching. Финальный вокодер работает на 24 kHz. Есть Turbo-версия (350M параметров) с ускоренным декодером — она требует меньше GPU-памяти и считается быстрее.

Отдельный плюс для коммерческого применения — MIT-лицензия и встроенный watermarking.

Что показало тестирование

По качеству voice cloning ChatterBox показал сильные результаты — перенос тембра и интонаций хороший. Но для нашего сценария модель не прошла практический фильтр из-за выраженного акцента при синтезе на русском языке. Субъективно он воспринимался как «азиатский» и проявлялся достаточно стабильно, чтобы портить пользовательское впечатление в диалоге.

Попытки снизить выраженность проблемы через дообучение не дали результата в достаточной степени.

Важная техническая деталь, которая помогает частично объяснить акцент: в документации прямо указано, что при несовпадении языка референсного аудио и целевого языка синтеза модель может переносить акцент из референса. Частичная митигация через снижение параметра cfg_weight — есть, но это именно митигация, не решение.

Для нас это означало: интересная архитектура, удобная лицензия, но не для русского телефонного продакшена в текущем виде.

Итог по ChatterBox

Критерий

Оценка

Онлайн-режим / стриминг

△ community-форки, не штатный путь

Фонетическое качество

△ акцент на русском

Ударения на русском

— не тестировали глубоко из-за акцента

Voice cloning

✓✓ высокое качество

Просодия / естественность

Отсутствие «металла»

CosyVoice3

Коротко: multilingual streaming TTS от FunAudioLLM. Ключевая особенность — streaming и non-streaming синтез в одной архитектуре без потери качества в потоковом режиме.

Архитектура — в двух словах

В основе — языковая модель (Qwen2.5-0.5B), которая авторегрессионно генерирует речевые токены по тексту. Затем токены переводятся в аудио через chunk-aware causal flow matching — то есть flow-модель специально устроена так, чтобы одинаково хорошо работать и в batch-режиме, и в потоке. Это не «нарезка» offline-результата на чанки, а нативная потоковая генерация. В материалах проекта заявляется задержка первого пакета до 150 мс.

Инфраструктура вокруг модели — одна из наиболее зрелых среди рассмотренных: поддерживается vLLM, TensorRT-LLM, Triton, gRPC. Лицензия — Apache 2.0.

Что показало тестирование

CosyVoice3 — наш выбор для онлайн-сценария. Native streaming, хорошее качество русского языка в базовой модели, сильная production-инфраструктура — это именно то, что нужно для телефонии.

Но есть один существенный нюанс, который мы обнаружили в процессе дообучения. При работе на относительно небольшом датасете — просодийное качество деградирует заметнее, чем хотелось бы. Модель начинала лучше следовать нужной фонетической разметке, но при этом теряла часть естественности, интонационной пластики, «живости» голоса. Это компромисс, с которым нам пришлось работать.

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

Итог по CosyVoice

Критерий

Оценка

Онлайн-режим / стриминг

✓✓ нативный стриминг, low latency

Фонетическое качество

✓ хорошее

Ударения на русском

△ требует дообучения

Voice cloning

Просодия / естественность

△ деградирует при дообучении на небольших данных

Отсутствие «металла»

OmniVoice

Коротко: massively multilingual zero-shot TTS от k2-fsa. 600+ языков, voice cloning и voice design через diffusion language model-style архитектуру на базе Qwen3.

Архитектура — в двух словах

Нестандартная комбинация: backbone — bidirectional Transformer, инициализированный весами Qwen3-0.6B, но генерация устроена не как авторегрессия токен за токеном, а как итеративный unmasking — постепенное «проявление» аудио-токенов за несколько шагов (типично 32, есть 16-step режим). Технически это ближе к masked diffusion, чем к классическому авторегрессионному декодеру. Результат — относительно быстрый offline/batch инференс при высоком качестве. В материалах проекта заявлен RTF порядка 0.025–0.032 на современном GPU.

Модель появилась позже остальных — весна 2026 — что само по себе является оговоркой: меньше накопленного production-опыта.

Что показало тестирование

По двум ключевым качественным критериям OmniVoice показал лучшие результаты среди всех рассмотренных вариантов.

Voice cloning — перенос тембра, интонаций, экспрессивности — оказался наиболее убедительным. Просодийное качество тоже на высоте: голос звучит наиболее естественно, с хорошей интонационной динамикой.

И — принципиально важная деталь — при дообучении на датасете до 100 часов для обучения следованию разметке ударений мы не зафиксировали деградации просодийного качества. Именно это отличает OmniVoice от CosyVoice в нашем опыте.

Единственный, но принципиальный минус для телефонии — отсутствие нативного streaming inference. Штатный сильный сценарий модели — быстрый offline и batch. Компенсировать это можно на уровне продуктовой логики: предварительная генерация типовых фраз, нарезка реплик, speculative generation. Но это инженерная компенсация на уровне сервиса, а не свойство самой модели.

Итог по OmniVoice

Критерий

Оценка

Онлайн-режим / стриминг

✗ нет нативного стриминга

Фонетическое качество

✓✓ высокое

Ударения на русском

✓ при дообучении, без деградации просодии

Voice cloning

✓✓ лучший среди рассмотренных

Просодия / естественность

✓✓ лучшая среди рассмотренных

Отсутствие «металла»

Сводная таблица

Модель

Стриминг

Фонетика (RU)

Ударения (RU)

Voice cloning

Просодия

Артефакты

F5-TTS

✓✓

✓ (спец. чекпойнты)

✓✓

✓✓

плавающие ошибки

XTTS v2

✓✓

△ (дообучение)

клиппинг

ChatterBox

△ (акцент)

✓✓

CosyVoice (3)

✓✓

△ (дообучение)

△ (деградация при FT)

OmniVoice

✓✓

✓ (без деградации)

✓✓

✓✓

Выбор сделан: комбинируем ресурсы двух моделей

После тестирования и экспериментов с дообучением мы не нашли универсальной модели, которая одновременно закрывала бы все наши требования. Если модель отлично клонирует голос и звучит живо — она может не поддерживать стриминг. Если хорошо стримит и быстро дообучается — у неё могут проявляться аудиоартефакты или деградировать просодия. Если архитектурно идеальна для онлайна — дообучение на небольшом датасете может «выбить» из неё естественность.

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

CosyVoice3 — для сценариев, где критичны стриминг, предсказуемая задержка и хороший real-time factor. Нативный потоковый режим, зрелая production-инфраструктура (vLLM, TensorRT-LLM, Triton, gRPC), хорошее базовое качество русского языка. Компромисс: при дообучении на небольшом датасете нужно тщательно контролировать деградацию просодии.

OmniVoice — для сценариев, где важнее максимальное качество voice cloning, просодии и естественности, а отсутствие нативного стриминга можно компенсировать архитектурными решениями на уровне сервиса. Лучший результат по quality-критериям среди всех рассмотренных, и — что для нас особенно ценно — дообучение под русские ударения не ломает просодию.

Для голосового ИИ-агента качество TTS — это не один общий score, а набор балансов между фонетикой, задержкой, стабильностью, стоимостью инференса и скоростью адаптации голоса под конкретный бренд или сценарий.

Продолжение следует

Надеюсь, наш опыт будет вам полезен. Оставляйте комментарии, я все читаю и на все отвечаю. Пока план на следующую статью - поделиться информацией про нашу инфраструктурную часть: как организовали продакшен-сервис вокруг выбранных моделей, что сделали с latency на уровне системы, и как управляем качеством на стыке TTS и диалогового агента.