Экспресс-курс · No. 35
Голос меняет всё в ИИ-продукте. Ему надо слушать, понимать, думать и отвечать — так быстро, чтобы это был разговор, а не рация. Внутри конвейер из трёх частей и одна по-настоящему трудная задача: успеть всё это в реальном времени.
18 понятий · схема у каждого · шпаргалка в конце
Голосовой ИИ — не одна вещь, а цепочка из трёх работ. Увидь конвейер сразу — и всё остальное в курсе встанет на место.
Карта: 18 понятий в семи группах
Карта метро: сначала видишь линии целиком, потом едешь по станциям.
Понятия курса делятся на семь групп. Сначала — сам конвейер. Потом его края: ухо (речь в текст) и рот (текст в речь). Дальше главная трудность — задержка. Потом хореография разговора — кто и когда говорит. Затем новый путь — realtime-модели. И в конце — как применять голос с умом.
Как читать каждое понятие
Паспорт: у всех одинаковые поля, поэтому их легко сравнивать.
У каждого понятия дальше одно и то же: английское название (запомни его — так его ищут в документации), образ из жизни, схема и карточка с полями: что это, как работает, пример, подвох и связи с другими понятиями. Одна мысль проходит через весь курс: задержка решает всё.
Voice Pipeline — ухо, мозг, рот
Человек в разговоре: слышит, что ты сказал, обдумывает и отвечает. Три разных действия, а ощущаются как одно.
Голосовой ИИ делает три вещи по очереди. Слушает — превращает речь в текст. Думает — модель читает этот текст и пишет ответ. Говорит — превращает ответ обратно в звук. У этапов есть имена: Speech-to-Text (STT), модель (LLM) и Text-to-Speech (TTS). Такую цепочку ещё называют каскадом (cascade). Большая часть голосового ИИ устроена именно так.
- Что это
- Цепочка из трёх этапов: речь в текст, модель, текст в речь.
- Как работает
Голос внутрь → расшифровать → обдумать → синтезировать → голос наружу.
- Пример
Пользователь говорит «столик на двоих», STT пишет текст, модель отвечает, TTS озвучивает ответ.
- Подвох
- Три этапа подряд — три источника задержки.
- Связи
Состоит из Speech-to-Text, LLM Core и Text-to-Speech; альтернатива — Speech-to-Speech.
LLM Core — модель та же, края новые
Ты уже умеешь думать и отвечать словами. Научиться говорить голосом — значит добавить слух и речь вокруг того же ядра.
Ядро, которое рассуждает, — та же языковая модель (LLM), что и в других курсах. Контекст, промпты, инструменты, структурированный вывод — всё это по-прежнему работает с текстом в середине. Новое — только звук по краям: превратить звук в текст и текст в звук, надёжно и быстро. Мозг переучивать не нужно. Нужно добавить ухо и рот — и научиться главному: успевать всё за то короткое время, которое даёт разговор.
- Что это
- Обычная текстовая модель в середине голосового конвейера.
- Как работает
- Получает текст от STT, пишет текстовый ответ для TTS.
- Пример
Тот же промпт, те же инструменты и та же структура ответа, что в текстовом чат-боте.
- Подвох
- Модель видит только текст — она не знает, как именно это было сказано.
- Связи
- Середина Voice Pipeline; её убирает Speech-to-Speech.
Голосовой ИИ — это конвейер: ухо (STT), мозг (модель) и рот (TTS). Мозг ты уже знаешь; новое — звук по краям и время между этапами.
Первый этап превращает звук в слова. Сегодня он очень хорош, но его ошибки влияют на всё, что идёт дальше. Поэтому стоит понимать, что он может, а что нет.
Speech-to-Text — звук становится текстом
Судебный стенограф печатает каждое слово, пока его произносят. Поток речи превращается в запись, которую может прочесть остальная система.
Speech-to-Text (STT) — его ещё называют транскрипцией (transcription) или ASR (automatic speech recognition) — превращает речь в письменный текст. Это ухо системы: человек говорит, STT выдаёт слова, над которыми потом думает модель. Современный STT очень точен и справляется с живой, неряшливой речью куда лучше старого распознавания голоса. Именно этот шаг позволяет просто говорить вместо того, чтобы печатать.
- Что это
- Ухо системы: превращает речь в текст.
- Как работает
- Слушает аудио и выдаёт слова, которые потом читает модель.
- Пример
- Пользователь говорит — на выходе строка «столик на двоих».
- Подвох
- Не идеален: акценты, шум, имена и термины дают ошибки.
- Связи
- Первый этап Voice Pipeline; его ошибки — это Error Propagation.
Error Propagation — ошибка уха течёт дальше
Если стенограф ослышался в одном слове, каждый следующий читатель получит эту ошибку. Она вшита в самом начале.
STT не идеален: акценты, фоновый шум, речь в несколько голосов, термины и имена — всё это даёт неверную расшифровку. А раз STT — первый этап, его ошибки распространяются (error propagation): модель рассуждает над тем текстом, который ей дали. Одно ослышанное слово может тихо увести весь ответ не туда. Голосовая система хороша ровно настолько, насколько хороша её расшифровка. Поэтому проектируй под неидеальный ввод: модель должна спокойно переваривать слегка искажённый текст, а ты следишь, где ухо буксует сильнее всего.
- Что это
- Ошибка STT становится входом для всех следующих этапов.
- Как работает
- Модель не слышит звук — она верит тексту, который получила.
- Пример
- STT ослышался в имени — модель уверенно ищет не того человека.
- Что делать
Проектировать под неидеальный ввод; следить за шумом и акцентами реальных пользователей.
- Связи
- Слабое место Speech-to-Text; модель из LLM Core его не видит.
Streaming STT — расшифровка на ходу
Стенограф, который печатает, пока ты говоришь, а не ждёт конца речи. Текст появляется в ногу со словами.
STT может быть потоковым (streaming) — расшифровывать непрерывно, пока человек говорит, а не ждать конца фразы и обрабатывать весь кусок разом. Это важно для скорости: система начинает работу раньше и реагирует сразу, как только человек замолчал, без долгой паузы. Выбор «расшифровать в конце или на ходу» — одно из первых решений о задержке. Обычно именно потоковость делает систему живой.
- Что это
- Расшифровка непрерывно, пока человек ещё говорит.
- Как работает
- Текст копится по ходу речи — к концу фразы он уже почти готов.
- Пример
Пользователь договорил — система отвечает сразу, а не после паузы на расшифровку.
- Подвох
- Без неё к каждому ответу добавляется заметная пауза.
- Связи
- Пара к Streaming TTS; часть приёма Stream & Overlap.
STT — это ухо: оно превращает речь в текст для модели. Его ошибки текут дальше, поэтому проектируй под неидеальный ввод — и расшифровывай на ходу.
Последний этап превращает текстовый ответ модели обратно в голос. Это то, что человек реально слышит, поэтому от качества этого этапа зависит, каким ощущается весь продукт.
Text-to-Speech — текст становится голосом
Диктор читает сценарий вслух — и написанные слова становятся живой, выразительной речью, а не зачитыванием.
Text-to-Speech (TTS), или синтез речи (speech synthesis), превращает текстовый ответ модели в звук. Это рот системы. Современный TTS даёт очень естественные голоса — с живой интонацией и ритмом, совсем не как плоская роботская речь прошлого. Отличный конвейер с роботским голосом всё равно ощущается дёшево. Естественный голос делает всё общение человечным — во многом поэтому голосовые продукты вообще стали возможны.
- Что это
- Рот системы: превращает текст ответа в голос.
- Как работает
- Берёт текст от модели и синтезирует речь с интонацией и ритмом.
- Пример
- Строка «Столик забронирован» становится тёплой живой фразой.
- Подвох
- Роботский голос делает дешёвым даже отличный конвейер.
- Связи
Последний этап Voice Pipeline; тон задаёт Voice Persona, скорость — Streaming TTS.
Voice Persona — голос несёт опыт
Одни и те же слова, сказанные тепло или холодно, воспринимаются совсем по-разному. Человек реагирует на подачу, а не только на смысл.
В голосовом продукте как сказано так же важно, как что сказано. Выбор голоса, его тон и темп — это продуктовые решения. Они влияют на доверие и комфорт так же, как визуальный дизайн в экранном продукте. Голос слишком быстрый, слишком плоский или со странной интонацией портит даже хороший ответ. Поэтому TTS — не то, что прикручивают в последний момент. Голос (voice persona) выбирают и настраивают так же внимательно, как любой элемент интерфейса.
- Что это
- Выбранный голос, тон и темп — «лицо» голосового продукта.
- Как работает
- Подача меняет, как воспринимается тот же самый ответ.
- Пример
«Ваш заказ задерживается» спокойным тёплым голосом — и то же самое быстро и плоско.
- Подвох
Если оставить голос «по умолчанию», он может подрывать доверие к хорошим ответам.
- Связи
- Настройка Text-to-Speech; часть Conversation Flow.
Streaming TTS — говорить, пока пишешь
Человек, который начинает отвечать, пока додумывает мысль, — а не молча сочиняет весь ответ и выдаёт его одним куском.
Как STT может принимать звук потоком, так и TTS может отдавать его потоком (streaming): начинать говорить первую часть ответа, пока остальное ещё пишется. Не нужно ждать полного текста и полного аудио, чтобы издать первый звук. Человек слышит, что ответ начался почти сразу, а не сидит в тишине. Вместе с моделью, которая тоже отдаёт текст потоком, это и убирает неловкую паузу: речь начинается, как только есть что сказать.
- Что это
- Озвучка начала ответа, пока остальное ещё генерируется.
- Как работает
Модель отдаёт текст кусками, TTS превращает каждый кусок в звук сразу.
- Пример
- Первые слова ответа звучат почти мгновенно, а не после тишины.
- Подвох
- Без потока человек сидит в тишине, пока готовится весь ответ.
- Связи
- Пара к Streaming STT; часть приёма Stream & Overlap.
TTS — это рот: он озвучивает ответ модели, и современные голоса звучат так естественно, что несут весь опыт. Озвучивай потоком — пусть ответ начинается сразу, а не после тишины.
Вот что делает голос по-настоящему трудным. У разговора есть ритм, и весь конвейер из трёх этапов должен уложиться в него — иначе магия ломается.
Latency Budget — у разговора тесное окно
В живом разговоре ответ на такт позже звучит неловко, а ответ через несколько секунд — будто что-то сломалось. Окно для «естественно» маленькое.
Люди ждут ответа в разговоре за долю секунды. Задержка, которую в чате никто не заметит, в речи режет слух: пара секунд тишины после твоей фразы — и кажется, что система зависла. Это тесное окно — бюджет задержки (latency budget) — главное ограничение голосового ИИ. Весь круг — услышать, расшифровать, подумать, синтезировать, сказать — должен в него влезть. Промахнулся — и даже идеальный ответ ощущается сломанным.
- Что это
- Окно времени на ответ, которое терпит живой разговор, — доля секунды.
- Как работает
Всё — от «услышать» до «сказать» — должно поместиться в это окно.
- Пример
Пауза в пару секунд, незаметная в чате, в голосе звучит как «система зависла».
- Подвох
- Промахнулся — и даже верный ответ ощущается сломанным.
- Связи
Его съедает Latency Stacking; спасают Stream & Overlap и Speech-to-Speech.
Latency Stacking — задержки складываются
Эстафета: общее время — это сумма всех этапов. Медленная передача палочки где угодно — и опаздывает вся команда.
Самое жестокое: задержка накапливается (stacks up) по конвейеру. Время на расшифровку + время модели + время синтеза — всё складывается в ту паузу, которую чувствует человек. Мало, чтобы каждый этап был «достаточно быстрым» сам по себе, если их сумма вылезает за бюджет. Поэтому голос труднее текста: текстовый чат ждёт только модель, а голос ждёт три этапа подряд — и окно у разговора гораздо теснее.
- Что это
- Задержки трёх этапов складываются в одну общую паузу.
- Как работает
Общая задержка = STT + модель + TTS, если идти строго по очереди.
- Пример
- Каждый этап «быстрый», но вместе — неловкая тишина после каждой фразы.
- Подвох
- Оптимизировать один этап мало — человек чувствует сумму.
- Связи
Ломает Latency Budget; лечится Stream & Overlap или Speech-to-Speech.
Stream & Overlap — этапы внахлёст
Синхронный переводчик: переводит, пока ты говоришь, и начинает озвучивать ответ посреди мысли. Этапы идут внахлёст, а не строго один за другим.
Главный приём — потоковость и наложение (stream & overlap) этапов вместо работы строго по очереди. Расшифровывай, пока человек говорит. Дай модели начать писать ответ, не дожидаясь полной обработки вопроса. Начинай озвучивать ответ, пока он ещё не дописан. Наложение трёх этапов вместо ожидания каждого — вот как голосовая система сжимает общую задержку до разговорной. Всё искусство быстрого голоса — держать конвейер в непрерывном движении, без остановок на каждом этапе.
- Что это
- Все три этапа работают потоком и одновременно, а не по очереди.
- Как работает
STT расшифровывает на ходу, модель начинает раньше, TTS говорит, пока модель пишет.
- Пример
Голосовой агент отвечает без паузы, хотя внутри у него те же три этапа.
- Подвох
- Систему с потоками сложнее строить, чем «сделал этап — отдал дальше».
- Связи
Объединяет Streaming STT и Streaming TTS; главный способ уложиться в Latency Budget.
У разговора тесный бюджет задержки, а задержки трёх этапов складываются. Пусти их потоком и внахлёст — расшифровывай, думай и говори одновременно, а не по очереди.
Кроме скорости, у живого разговора есть хореография: кто и когда говорит. Именно она отличает живого голосового агента от неуклюжего.
Turn-taking — понять, что человек договорил
Хороший собеседник отличает паузу на вдох от конца фразы. Он не влезает каждый раз, когда ты задумался.
Голосовая система должна понять, когда человек действительно закончил, а когда просто сделал паузу посреди мысли. Это задача очерёдности реплик (turn-taking): когда наступает очередь системы. Влезешь слишком рано — перебьёшь человека. Будешь ждать слишком долго — разговор тянется. Это решение на удивление трудное и очень важное для естественности. Люди делают его без усилий, по тонким подсказкам. Голосовой агент должен приблизиться к этому настолько, чтобы обмен репликами шёл гладко.
- Что это
- Решение: пауза — это вдох или конец реплики?
- Как работает
- Система слушает паузы и решает, когда её очередь отвечать.
- Пример
«Я хочу забронировать… [пауза] …на пятницу» — после первой паузы ещё рано отвечать.
- Подвох
- Рано — обрежешь человека; поздно — разговор тянется.
- Связи
- Вместе с Barge-in составляет Conversation Flow.
Barge-in — уступить, когда перебили
Когда ты начинаешь говорить поверх собеседника, он замолкает и слушает. Он не дочитывает своё предложение, будто ты ничего не сказал.
В живом разговоре перебивают. Если человек заговорил, пока ИИ ещё говорит, — это barge-in (вклинивание). Естественная система замолкает, слушает и отвечает на новое, а не дочитывает заготовленный ответ поверх человека. Поддержка перебивания — признак хорошего голосового агента. Плохой просто говорит поверх тебя, ничего не замечая. Чтобы обрабатывать barge-in, система должна слушать всегда, даже когда говорит, и уступать слово в тот же миг.
- Что это
- Умение остановиться, когда человек перебил.
- Как работает
Система слушает даже во время своей речи; услышала голос — замолчала и слушает.
- Пример
Агент перечисляет варианты, человек говорит «второй!» — агент сразу переключается.
- Подвох
- Без barge-in агент говорит поверх человека и кажется глухим.
- Связи
- Вместе с Turn-taking составляет Conversation Flow.
Conversation Flow — поток и есть продукт
Хороший собеседник и неловкий говорят похожие слова. Разница — в тайминге, умении слушать и уступать. Поток и есть опыт.
Естественный агент или роботский — во многом решает эта хореография: чувствовать очередь, уступать при перебивании, не оставлять мёртвый эфир (dead air) и не говорить поверх человека. Эти детали потока разговора (conversation flow) так же важны, как точность ответа: верный ответ с неуклюжим таймингом всё равно ощущается сломанным. Проектировать голосовой продукт — значит проектировать разговор, а не только ответы. Ритм «кто и когда говорит» — полноценная часть опыта, а не полировка в конце.
- Что это
- Ритм разговора: кто и когда говорит, паузы, уступки.
- Как работает
Складывается из turn-taking, barge-in и отсутствия мёртвого эфира.
- Пример
Два агента с одинаковыми ответами: один ощущается человеком, другой — автоответчиком.
- Подвох
- Верный ответ с неуклюжим таймингом всё равно кажется сломанным.
- Связи
Собирается из Turn-taking и Barge-in; зависит от Latency Budget.
Живому голосу нужны turn-taking — понять, что человек договорил, — и barge-in — замолчать, когда перебили. Ритм «кто и когда говорит» — такой же продукт, как сами ответы.
К классическому каскаду добавился новый подход: модели, которые работают с голосом напрямую, от края до края, и схлопывают этапы, чтобы срезать задержку. Стоит знать, куда движется область.
Speech-to-Speech — одна модель вместо трёх
Вместо цепочки «переводчик записал — мыслитель ответил — диктор озвучил» — один человек, который слышит, думает и отвечает сразу. Как прямой рейс вместо двух пересадок.
Новый класс моделей — realtime, или speech-to-speech (речь в речь) — работает со звуком напрямую. Голос внутрь, голос наружу, без отдельных шагов «расшифровать → обдумать → синтезировать». Вместо трёх моделей в цепочке — одна. Это end-to-end подход. Главный выигрыш — задержка: нет границ между этапами — нет и задержек на передачу. Второй выигрыш — ничего не теряется на преобразованиях: модель слышит, как что-то сказано, а не только слова, сохраняет тон и эмоцию и может ответить в тон.
- Что это
- Одна модель, которая принимает голос и сразу отвечает голосом.
- Как работает
Нет отдельных STT и TTS — значит, нет передач между этапами и их задержек.
- Пример
Модель слышит раздражение в голосе и отвечает спокойнее — текстовый каскад этого не увидит.
- Подвох
- Середина — «чёрный ящик»: меньше видимости и контроля.
- Связи
Альтернатива Voice Pipeline; самый прямой путь в Latency Budget.
Pipeline vs End-to-End — настоящий выбор
Можно ехать серией поездов и управлять каждым отрезком, а можно прямым рейсом — быстрее, но маршрут уже не твой. Разные компромиссы, оба честные.
Классический конвейер (pipeline) и end-to-end модель — оба реальные варианты со своей ценой. Конвейер даёт контроль и гибкость на каждом этапе: заменить STT, посмотреть расшифровку, взять любую модель — ценой задержки и сложности. End-to-end даёт скорость и естественность, но меньше видимости и контроля над серединой. Зная оба, ты выбираешь осознанно: прозрачный гибкий конвейер или быстрый плавный end-to-end — смотря что твоему продукту нужнее.
- Что это
- Выбор архитектуры голосового продукта.
- Pipeline
Можно заменить STT/TTS, читать расшифровку, взять любую модель. Цена — задержка и больше деталей.
- End-to-end
Минимальная задержка, тон и эмоции сохраняются. Цена — меньше видимости и контроля.
- Когда что
Нужен контроль и проверяемость — конвейер; нужна скорость и живость — end-to-end.
- Связи
- Сравнивает Voice Pipeline и Speech-to-Speech.
Realtime-модели принимают и выдают голос напрямую: меньше этапов — меньше задержка, и тон не теряется. Конвейер или end-to-end — честный выбор: контроль и гибкость против скорости и живости.
Применять голос хорошо — значит брать его там, где он уместен, и помнить: больше всего на свете задержка решает, будет ли это волшебно или сломано.
Modality Fit — голос там, где он к месту
За рулём ты скорее скажешь адрес вслух, а длинную анкету за столом лучше напечатаешь. Правильный способ ввода зависит от ситуации.
Голос силён там, где он уместен: руки заняты, доступность, естественный разговор, ситуации, где говорить быстрее или безопаснее, чем печатать. И слаб там, где лучше текст: точный ввод, приватность на людях, внимательная проверка. Навык в том, чтобы подбирать модальность (modality) под момент, а не добавлять голос, потому что это впечатляет. Голос там, где лучше текст, — шаг назад. Голос там, где говорить естественно, — прорыв. Выбирай под ситуацию, а не ради новизны.
- Что это
- Выбор голоса или текста под конкретную ситуацию.
- Голос подходит
- Руки заняты, вождение, доступность, живой разговор.
- Текст подходит
- Точный ввод, приватность на людях, внимательная проверка.
- Подвох
- Голос «потому что модно» там, где лучше текст, — это даунгрейд.
- Связи
- Первый вопрос до всего остального; без него Latency-First не нужен.
Latency-First Design — бюджет задержки с первого дня
Шеф планирует весь ужин вокруг блюда, которое готовится дольше всех, — а не узнаёт о нём в последний момент.
Раз задержка решает всё, проектируй под неё с самого начала (latency-first): потоковость на каждом этапе, end-to-end модель там, где скорость критична, и план на случай, если какой-то этап тормозит. Голосовые фичи, где о задержке вспоминают в конце, ощущаются вялыми и сломанными, какими бы хорошими ни были ответы. Относись к времени ответа как к главному ограничению голосового продукта — той самой цифре, промах по которой рушит всё остальное.
- Что это
- Время ответа — главное ограничение, вокруг которого строится всё.
- Как работает
Задать бюджет → потоковость везде → end-to-end где критично → план на медленный этап.
- Пример
Засечь весь круг в первом прототипе и не принимать решений, которые его ломают.
- Подвох
- Задержку, найденную в конце, уже трудно починить.
- Связи
Защищает Latency Budget; опирается на Stream & Overlap и Speech-to-Speech.
Как всё связано
Схема метро целиком: теперь видно, где линии пересекаются.
Каскад даёт накопление задержки, которое бьёт по бюджету. Спасают потоковость и наложение этапов или speech-to-speech. Уложился в бюджет и выстроил поток разговора из turn-taking и barge-in — разговор ощущается живым. А modality fit решает, нужен ли голос вообще.
- Правда ли голос подходит ситуации — или пользователю лучше послужил бы текст?
- Идёт ли каждый этап потоком — расшифровка, обдумывание и речь внахлёст, а не строго по очереди?
- Ощущается ли общая задержка разговорной — или есть неловкая пауза?
- Есть ли turn-taking — понимание, что человек договорил, — и barge-in?
- Достаточно ли естественен голос, чтобы нести опыт?
- Конвейер или end-to-end — выбрана ли архитектура под нужды задержки и контроля?
- Голос выбран там, где говорить действительно уместно, а не ради новизны.
- Каждый этап идёт потоком и внахлёст, поэтому ответ начинается почти сразу.
- Общая задержка ощущается разговорной, без неловкой тишины.
- Агент умеет turn-taking и barge-in, поэтому разговор течёт естественно.
- Конвейер или end-to-end выбран осознанно, с оглядкой на бюджет задержки.
Шпаргалка: все 18 понятий
Конвейер
- Voice Pipelineкаскад
STT → модель → TTS: ухо, мозг, рот по очереди.
- LLM Coreрассуждающее ядро
Та же текстовая модель в середине; новые только края.
Слушать
- Speech-to-TextSTT, ASR
Ухо: превращает речь в текст.
- Error Propagationошибки текут дальше
Ошибка расшифровки становится входом для модели.
- Streaming STTрасшифровка на ходу
Текст готов к концу фразы — реакция без паузы.
Говорить
- Text-to-SpeechTTS, синтез
Рот: превращает текст ответа в голос.
- Voice Personaголос и подача
Тон и темп — часть продукта, а не мелочь.
- Streaming TTSпотоковый синтез
Начинает говорить, пока ответ ещё пишется.
Задержка
- Latency Budgetбюджет задержки
Ответ за долю секунды — иначе «зависло».
- Latency Stackingнакопление
Задержки трёх этапов складываются в одну.
- Stream & Overlapэтапы внахлёст
Все этапы потоком и одновременно — главный способ успеть.
Очередь реплик
- Turn-takingочерёдность реплик
Отличить паузу на вдох от конца фразы.
- Barge-inвклинивание
Перебили — замолчи, послушай, ответь.
- Conversation Flowпоток разговора
Ритм «кто и когда говорит» — такой же продукт, как ответы.
Realtime
- Speech-to-Speechrealtime, end-to-end
Одна модель: голос внутрь, голос наружу. Меньше задержка, тон не теряется.
- Pipeline vs End-to-Endвыбор архитектуры
Контроль и гибкость против скорости и живости.
Применять хорошо
- Modality Fitуместность голоса
Голос — где говорить естественно; текст — где нужна точность.
- Latency-First Designзадержка с первого дня
Строить всё вокруг бюджета времени ответа.
Голос — это слушать, думать и говорить так быстро, чтобы ощущалось разговором. Пускай конвейер потоком и внахлёст, держи очередь реплик и перебивания, выбирай конвейер или end-to-end осознанно — и относись к задержке как к ограничению, под которое гнётся всё остальное.