# Голос

> Как надиктовать задачу в веб-версии и отправить голосовое в Telegram, и кто превращает речь в текст — Eggent AI, твой провайдер или Whisper на сервере воркспейса.

Source: https://eggent.ai/r/docs/voice/

Агенту можно не писать, а говорить. Запись превращается в текст до того, как её увидит агент; [кто это делает](#who), зависит от модели, на которой работает воркспейс.

## Диктовка в браузере {#dictation}

1. Нажми на значок микрофона в поле ввода.
2. Разреши браузеру доступ к микрофону.
3. Говори. Нажми на значок ещё раз, чтобы закончить.

Распознанный текст появится в поле ввода: его можно поправить перед отправкой. Такой же микрофон есть рядом с полем ответа на вопрос агента.

> [!NOTE]
> Браузеры дают доступ к микрофону только на защищённых адресах (`https://`) или на `localhost`. В облаке это работает сразу. На своём сервере открывай Eggent через домен с HTTPS.

## Голосовые в Telegram {#telegram}

Отправь боту голосовое сообщение, как человеку. Бот напишет, что расшифровывает запись, и передаст агенту текст как обычное сообщение. Если к голосовому есть подпись, она тоже попадёт к агенту.

После успешной расшифровки аудиофайл удаляется: в истории остаётся текст. Если расшифровать не удалось, файл сохраняется, и агент может попробовать ещё раз.

## Кто распознаёт речь {#who}

- **На Eggent AI** (встроенная модель облака) записи распознаёт Eggent AI: точно, на любом языке, с оплатой из баланса Eggent AI по длине записи. Если он не может принять запись — баланс закончился или сервис не ответил, — её распознаёт Whisper на сервере воркспейса, так что голосовое не теряется.
- **На своей модели** по умолчанию работает Whisper на сервере воркспейса: ничего не тратится, запись не покидает воркспейс. В **Настройки → Модели → Дополнительно → Картинки, голос и запоминание** можно выбрать вместо него:
  - **Eggent AI** — при этом сам чат остаётся на твоей модели ([как это устроено](https://eggent.ai/r/docs/models.md#services));
  - **свой провайдер** — подключённый по API-ключу, с OpenAI-совместимым API, который умеет распознавать речь (запрос `/audio/transcriptions`), и идентификатор модели у этого провайдера. У входа по подписке ключа нет, поэтому его здесь не предлагают. Если провайдер откажет, запись распознает Whisper.
- **На своём сервере** Eggent AI нет: Whisper или свой провайдер, как выше.

## Whisper на сервере {#how}

- Запись нормализуется через `ffmpeg`.
- Текст распознаёт `whisper.cpp` — локальная модель распознавания речи. Язык определяется автоматически.
- Модель скачивается один раз при первом распознавании и дальше лежит в `data/models/whisper/`.

Whisper работает внутри воркспейса и ничего не стоит. Модель по умолчанию маленькая и быстрая; на своём сервере модель побольше распознаёт точнее (`EGGENT_STT_MODEL` ниже).

## Настройки на своём сервере {#self-host}

| Переменная | По умолчанию | Что делает |
| --- | --- | --- |
| `EGGENT_STT_ENABLED` | `1` | Включает распознавание речи |
| `EGGENT_STT_MODEL` | `base` | Модель: `tiny`, `base`, `small`, `medium`. Больше — точнее и медленнее |
| `EGGENT_STT_LANGUAGE` | `auto` | Язык речи или автоопределение |
| `EGGENT_STT_AUTO_DOWNLOAD_MODEL` | `1` | Скачать модель при первом использовании |

Подробнее — в [«Настройка своего сервера»](https://eggent.ai/r/docs/self-host-config.md).
