AiHummer
Русский
ВойтиЛичный кабинет
v1.3.x
{ }Swagger

Речь на входе и выходе (STT / TTS)

v1.3.x · обновлено 2026-09-15

AiHummer обрабатывает речь на входе и на выходе «из коробки» — отдельный платный API‑ключ не обязателен; доступность и условия онлайн‑сервиса edge-tts задаются его поставщиком. Входящий аудиофрагмент распознаётся (STT), текст запускает обычную обработку запроса агентом, а ответ озвучивается (TTS). faster-whisper работает локально; edge-tts использует внешний онлайн‑сервис Microsoft. Оба подключаются как дополнительные сервисы: faster-whisper для распознавания и edge-tts для синтеза.

Как проходит обработка аудиозапроса

Обработка аудиозапроса — это обычная обработка запроса агентом с аудио на обоих концах:

  1. Шлюз отправляет входящее аудио в сервис STT (:8001, faster-whisper — локально) и получает текст.
  2. Этот текст запускает обычный цикл вызова функций — те же маршрутизатор, оркестратор, инструменты и память, что и для текстового сообщения.
  3. Текст ответа отправляется в сервис TTS (:8002, edge-tts — внешний онлайн-сервис Microsoft), и озвученное аудио возвращается звонящему.

Всё это доступно через единый endpoint POST /v1/voice/turn: канал или клиент передаёт аудио и получает аудио, не оркеструя шаги самостоятельно.

Endpoints

Метод Endpoint Назначение
POST /v1/voice/turn Аудио на входе → обработка агентом → аудио на выходе
GET /v1/voice/config Текущая голосовая конфигурация (движки, настройки)
POST /v1/voice/turn HTTP/1.1
Host: localhost:8780
Content-Type: application/json

{
  "audio": "<клип в base64>",
  "format": "wav"
}

[!NOTE] Речевые возможности входят в ядро — они не привязаны к плагину SIP. Канал SIP использует эти же движки STT/TTS для своего движка local, но речь на входе/выходе работает для любого клиента, который вызывает /v1/voice/turn.

Голосовые сервисы

Порт Сервис Движок Роль Подключается через
8001 STT faster-whisper речь → текст AIHUMMER_STT_URL
8002 TTS edge-tts текст → речь AIHUMMER_TTS_URL

faster-whisper может распознавать речь локально. edge-tts обращается к онлайн‑сервису Microsoft Edge, поэтому текст для синтеза покидает ваш контур. Для полностью изолированного режима подключите локальный TTS‑движок. Как и любой дополнительный сервис, шлюз обращается к ним по URL, поэтому их можно запустить рядом со шлюзом или указать на общий экземпляр.

Подключение

Установщик прописывает URL STT и TTS за вас. Это настройки каталога — меняйте их из веб-интерфейса (Управление → Настройки) или командой aihummer settings set; gateway.env — только для начальной загрузки и для этих ключей игнорируется:

# Речь на входе/выходе (настраивается установщиком)
aihummer settings set AIHUMMER_STT_URL http://127.0.0.1:8001
aihummer settings set AIHUMMER_TTS_URL http://127.0.0.1:8002

[!TIP] Поскольку каждый сервис — это просто URL, несколько шлюзов могут использовать один экземпляр STT/TTS. Централизуйте более тяжёлые речевые сервисы вместо копии на каждом хосте.

Настройка аудио-тракта

Настройки качества речи находятся в группе «Media · Voice» и конфигурируются из веб-интерфейса — без повторного развёртывания. Они охватывают аудио-тракт реального времени:

Настройка Что регулирует
Duplex Полный дуплекс (слушать во время речи) или полудуплекс
AEC Подавление акустического эха
Noise suppression Фильтрация фонового шума до STT
AGC Автоматическая регулировка усиления (нормализация уровня)
VAD threshold Чувствительность детектора голосовой активности
Barge-in Возможность перебить агента во время ответа

GET /v1/voice/config возвращает действующую конфигурацию, чтобы клиент мог узнать активные движки и эти настройки.

Автоматические голосовые ответы

Когда озвучивать готовый ответ, решают три настройки группы «Media · Voice» (веб-интерфейс → Управление → Настройки):

Настройка Ключ Значения
Автоматические голосовые ответы AIHUMMER_TTS_AUTO_REPLY off — никогда; always — всегда; inbound (умолчание) — только в ответ на входящее аудио; tagged — по явной голосовой отметке агента
Ограничение текста озвучивания AIHUMMER_TTS_MAX_CHARS 0 (умолчание) — озвучивать полный ответ; 10010000 — предел озвучиваемого текста
Сокращение длинных голосовых ответов AIHUMMER_TTS_SUMMARIZE включено по умолчанию: длинный ответ сокращается моделью до предела; если модель недоступна, звучит начало текста

Полный текст ответа при любом режиме остаётся в истории диалога. Режим off выключает только автоматическую озвучку — явный запрос синтеза через инструмент tts работает по-прежнему.

Для отдельного диалога агент может переопределить эти значения по просьбе собеседника инструментами voice_preferences (прочитать действующие) и set_voice_preferences (задать auto, max_chars, summarize; пустой объект возвращает умолчания инстанса). Запись доступна только участнику диалога. Голосовой вывод подхватывает провайдера, подключённого уже после запуска шлюза, и учитывает настройки конкретного пользователя.

Куда дальше