> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hubtalk.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Голос: STT, TTS и VAD

> Распознавание, синтез, детектор речи и перебивания, фоновый звук, язык хода и нормализатор.

# Голос: STT, TTS и VAD

Настройки STT, TTS и VAD хранятся в сценарии и применяются к звонкам. Провайдеры выбираются из настроенных каталогов. Ключи провайдеров хранятся в конфигурации окружения, а self-hosted endpoint'ам ключ провайдера не нужен.

## STT

STT (speech-to-text) преобразует речь абонента в текст для агента.

* **«ASR-модель из справочника»** — модель распознавания выбирается ссылкой на запись справочника ASR-моделей; рядом показан её **«Провайдер»**. Модель, помеченную устаревшей, кабинет подписывает прямо в поле.
* **`language` (пусто = язык флоу; kk → multi)** — язык распознавания. Пустое поле наследует язык агента, `kk` включает мультиязычный режим.
* **`interim_results` — живой промежуточный транскрипт** — расшифровка приходит по ходу речи, а не одним куском в конце. У пакетных моделей промежуточных результатов нет: реплика распознаётся целиком, когда абонент договорил.
* **`keywords` (через запятую, вес — «слово:1.5»)** — слова, которые распознаванию стоит слышать точнее; вес указывается через двоеточие.

<img src="https://mintcdn.com/hubtalk/yYJS_d_pzapQzHCp/images/v4_settings_voice_stt.png?fit=max&auto=format&n=yYJS_d_pzapQzHCp&q=85&s=e82c7c0ebb88714167da727723e28465" alt="Секция STT: ASR-модель из справочника, язык распознавания и keywords" width="1440" height="900" data-path="images/v4_settings_voice_stt.png" />

## TTS

TTS (text-to-speech) преобразует текстовые ответы агента в аудио.

* **«Голос из справочника»** — голос выбирается ссылкой на запись справочника голосов; рядом показан его **«Провайдер»**.
* **`voice_id` (пусто = голос по умолчанию)** — идентификатор голоса у провайдера, если нужно переопределить запись справочника.
* **`model_id` (низкая задержка, мультиязычность ru/kk)** — модель синтеза.
* **`speed` (пусто — дефолт)** — скорость речи.
* **`language` (ISO 639-1; пусто = язык флоу)** — язык синтеза.
* **`output_format` (пусто — дефолт плагина)** — аудиоформат.
* **`optimize_streaming_latency` (0–4, пусто = выкл)** — оптимизация потоковой отдачи.
* **«Провайдер-специфичные параметры (JSON)»** — всё остальное, что умеет конкретный провайдер: `stability` и `similarity` у ElevenLabs, `emotion` у Cartesia, `instructions` у OpenAI.
* **«Аварийный резервный TTS»** → **«Включить запасного провайдера»** — срабатывает только при сбое или лимите основного синтеза. Смена провайдера меняет звучание, поэтому переключение помечается в звонке.
* **«Кэш TTS-аудио»** — повторяющиеся фразы отдаются из кэша без обращения к провайдеру. Под ним раскрываются **«Кэш TTS — расширенные настройки»**: **«TTL записей, сек»** и **«Сбрасывать кэш при публикации»**.

<img src="https://mintcdn.com/hubtalk/yYJS_d_pzapQzHCp/images/v4_settings_voice_tts.png?fit=max&auto=format&n=yYJS_d_pzapQzHCp&q=85&s=25f9a61850767bb6d28edfb18ded378a" alt="Секция TTS: голос из справочника, voice_id, model_id и параметры провайдера" width="1440" height="900" data-path="images/v4_settings_voice_tts.png" />

## VAD и перебивания

VAD (voice activity detection) определяет начало и конец речи, а настройки перебивания управляют тем, может ли абонент оборвать агента. Параметры читаются при старте звонка, пересобирать ничего не нужно.

* **`prefix_padding_duration`, сек — предбуфер аудио** — сколько звука сохраняется перед обнаруженной речью.
* **`sample_rate` (8000/16000)** — частота дискретизации.
* **`max_buffered_speech`, сек** — потолок буферизуемой речи.
* **`allow_interruptions` — разрешить перебивать агента**.
* **«Фильтр по громкости (шум не считается речью)»** — вторая проверка: тихий кадр не начнёт запись реплики, даже если модель сочла его речью. Пока фильтр выключен, пороги громкости в карточках ниже не применяются.
* **`min_interruption_duration`, сек — мин. речь для перебивания**.
* **`min_interruption_words` — мин. распознанных слов для перебивания (0 — гейта нет)** — сколько слов должен произнести абонент, прежде чем агент замолчит. Значение по умолчанию — **2**.
* **`min_duration_all_branches` — порог длительности действует на все перебивания, не только посреди речи**.
* **`min_endpointing_delay`, сек** и **`max_endpointing_delay`, сек** — задержка перед фиксацией конца реплики.

Ниже раскрывается **«Настройки VAD во время звонка»** — те же пороги, но по состояниям агента: карточка **«Когда агент говорит или думает»** и карточка **«Остальные состояния»**. В каждой — `activation_threshold`, `deactivation_threshold`, `min_speech_duration`, `min_silence_duration`, `activation_volume` и `deactivation_volume`. Пустое поле в первой карточке означает «как в остальных состояниях»; набор самих правил задан кодом, меняются только числа.

<img src="https://mintcdn.com/hubtalk/yYJS_d_pzapQzHCp/images/v4_settings_vad.png?fit=max&auto=format&n=yYJS_d_pzapQzHCp&q=85&s=6416543b1308db76fe7758730d2cbe37" alt="Секция «VAD и перебивания»: пороги перебивания и раскрытые настройки VAD по состояниям агента" width="495" height="2105" data-path="images/v4_settings_vad.png" />

<Warning>
  **У словесного гейта есть цена, и её стоит знать до настройки.** При значении по умолчанию 2 одно- и двухсловные реплики агента не перебивают — в том числе «стоп» и «нет». Эти слова не теряются: короткая реплика ниже порога сохраняется и склеивается со следующей фразой абонента, то есть агент реагирует на такт позже, а не посреди фразы. Поставьте `0`, если сценарию нужно обрывать агента одним словом, — и учитывайте, что так же его оборвут кашель, «угу» и «ага».

  Если распознавание не отдаёт промежуточные результаты потоком, число слов можно проверить только на первой паузе абонента — на такой связке гейт срабатывает позже, чем при потоковом распознавании.
</Warning>

Рядом в голосовом блоке лежат ещё два раздела: **«Определение конца реплики»** — выбор режима (авто, только пауза VAD, аудио-детектор или STT-провайдер) — и **«Активное слушание»** с частотой срабатывания и списком слов-поддакиваний.

## Фоновый звук

Фоновая запись — например, офисный шум — подмешивается в голос агента и делает разговор естественнее. Она проигрывается бесшовным лупом на всю длительность звонка и на распознавание не влияет: фон никогда не анализируется как речь, поэтому ни определение речи абонента, ни транскрипт от него не меняются.

* **«Включить фоновый звук»**.
* **«Аудио-ассет (библиотека фонов)»** — выбор записи из библиотеки; **«Загрузить аудио… (wav/mp3/ogg/opus)»** добавляет новую. Если выбранный ассет удалён из библиотеки, кабинет так и пишет — фон не включится.
* **«Громкость фона»** — уровень подмешивания относительно голоса агента.

<img src="https://mintcdn.com/hubtalk/9ArMFeq_K4HZh-Td/images/v4_settings_background_audio.png?fit=max&auto=format&n=9ArMFeq_K4HZh-Td&q=85&s=f1d79adb2ef5ffe21560435380bd16ca" alt="Секция «Фоновый звук»: включение, аудио-ассет из библиотеки и громкость фона" width="1440" height="900" data-path="images/v4_settings_background_audio.png" />

Если выбранный ассет не удаётся загрузить, звонок продолжается как обычно, без фонового звука.

## Язык реплики клиента

Определяет язык каждой реплики и передаёт его в синтез и аналитику. Нужен двуязычным и многоязычным агентам.

* **«Определять язык реплики клиента»** — по умолчанию выключено.
* **«Источник»** — откуда берётся язык:
  * **«LLM (переменная `dynamic_language` — без лишних вызовов)»** — язык приходит из динамической переменной самого сценария. Рекомендуемый вариант: дополнительных обращений не делает.
  * **«Сервис-классификатор (URL)»** — язык определяет внешний сервис на каждой реплике; адрес указывается тут же.
* **«Языки-кандидаты (через запятую)»** — из чего детектору разрешено выбирать.

<img src="https://mintcdn.com/hubtalk/yYJS_d_pzapQzHCp/images/v4_settings_turn_language.png?fit=max&auto=format&n=yYJS_d_pzapQzHCp&q=85&s=044d582fbbe6f823e244e89ebeb71653" alt="Секция «Язык реплики клиента»: источник определения и языки-кандидаты" width="1440" height="900" data-path="images/v4_settings_turn_language.png" />

Определённый язык используется для синтеза речи (чтобы голос звучал на нужном языке) и фиксируется в звонке как событие `turn_language` для последующего анализа.

## Пре-TTS нормализатор

Приводит адреса электронной почты, аббревиатуры, числа и латиницу к произносимой форме перед синтезом.

* **«Включить нормализатор»**.
* **«Таймаут, с»** — сколько ждать ответа сервиса нормализации.
* **«Языки (через запятую; пусто — любые)»** — ограничение по языкам.

<img src="https://mintcdn.com/hubtalk/yYJS_d_pzapQzHCp/images/v4_settings_pretts_normalizer.png?fit=max&auto=format&n=yYJS_d_pzapQzHCp&q=85&s=2279b4f041b6b2ab40cd1571268481e9" alt="Секция «Пре-TTS нормализатор»: включение, таймаут и ограничение по языкам" width="1440" height="900" data-path="images/v4_settings_pretts_normalizer.png" />

Если нормализатор не успевает ответить вовремя, на синтез уходит исходный текст без изменений — звонок при этом не прерывается.
