> For the complete documentation index, see [llms.txt](https://docs.mikopbx.com/mikopbx/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mikopbx.com/mikopbx/modules/miko/module-local-speech-to-text/miko-ai-worker.md).

# Local STT Worker

Local STT Worker для macOS: подключение к MikoPBX, локальная транскрибация, история, модели, диагностика, настройки и обновление Worker API.

**Local STT Worker** — приложение для локального распознавания записей звонков из MikoPBX. Оно скачивает одно назначенное задание, подготавливает аудио встроенными `ffmpeg` и `ffprobe`, запускает выбранный в MikoPBX движок Parakeet или WhisperKit с Core ML-моделью и отправляет в PBX сегменты с таймкодами и техническую диагностику.

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FC7WECu4qVhaZchmYEIct%2FSTTWorkerTranscribationProcess.png?alt=media&amp;token=c7eb366d-9827-4403-9640-b0949b51d391" alt=""><figcaption><p>Вкладка "Обзор" в обработчике STT</p></figcaption></figure>

### Требования

* Mac с Apple Silicon.
* macOS 14.0 или новее.
* MikoPBX 2025.1.1 или новее.
* Доступ к PBX по сети.
* Доступ в интернет для первой загрузки выбранной модели и ее служебных файлов.

Для распознавания Worker использует WhisperKit или FluidAudio в зависимости от модели в задании. `ffmpeg` и `ffprobe` уже включены в сборку Worker и отдельно устанавливать их не требуется.

### Движки и модели

Модель выбирается только в MikoPBX. Worker получает вместе с заданием идентификаторы движка, модели, репозитория и типа артефакта, проверяет их совместимость и автоматически запускает нужный движок.

* **Parakeet TDT 0.6B v3** работает через FluidAudio и является моделью по умолчанию. Она предназначена для длинной речи и поддерживает 25 европейских языков, включая русский и украинский.
* **Whisper Large V3 Turbo**, **Whisper Podlodka Turbo** и **Whisper Large V3** работают через WhisperKit.
* Произвольные пользовательские модели не поддерживаются. Worker принимает только модели из текущего каталога MikoPBX.

Термины для распознавания передаются обоим движкам. WhisperKit использует их как контекст, а Parakeet компилирует их в локальную подсказку декодеру.

### Первый запуск

{% hint style="info" %}
Подробнее про онбоардинг можно прочитать [здесь](https://docs.mikopbx.com/mikopbx/modules/miko/module-local-speech-to-text/pages/2WenauKLwVRPlJl4LHfA#shag-1.-yazyk).
{% endhint %}

Онбоардинг состоит из трех шагов:

1. **Выбор языка** - русский или английский интерфейс. После смены языка приложение может предложить перезапуск и продолжит настройку после запуска.
2. **Подключение к MikoPBX** - адрес `https://...`, имя Worker и токен с вкладки **Обработчики**. В дополнительных настройках находятся проверка TLS, собственный CA и UID.
3. **Завершение** - проверка готовности MikoPBX и Speech to Text, настройка запуска при входе и переход в приложение.

### Навигация

| Раздел          | Назначение                                                                            |
| --------------- | ------------------------------------------------------------------------------------- |
| **Обзор**       | Состояние Worker, подключение, текущая работа, готовность системы и последние звонки. |
| **История**     | Локальная история заданий этого Mac с фильтрами и поиском.                            |
| **Модели**      | Локально загруженные Core ML-модели WhisperKit и Parakeet и размер хранилища.         |
| **Диагностика** | Проверка подключения, UID, heartbeat и локальные события.                             |
| **Настройки**   | Подключение к MikoPBX и параметры, относящиеся только к этому Mac.                    |

### Раздел «Обзор»

Верхний блок показывает одно из основных состояний:

| Состояние               | Значение                                                  |
| ----------------------- | --------------------------------------------------------- |
| **Все работает**        | Worker подключен и автоматически проверяет очередь.       |
| **Расшифровка звонка**  | Выполняется активное задание.                             |
| **Требуется внимание**  | Возникла ошибка подключения, совместимости или обработки. |
| **Готов к запуску**     | Подключение настроено, но Worker остановлен.              |
| **Требуется настройка** | Не хватает адреса PBX, токена или регистрации.            |

Основная кнопка меняется в зависимости от состояния: **Запустить обработчик**, **Остановить обработчик** или **Открыть настройки**. При остановке новые звонки остаются в очереди MikoPBX.

Сводка показывает количество обработанных сегодня звонков, долю успешно завершенных заданий и время последнего звонка. Ниже находятся текущая активность, готовность подключения, выбранная модель, автозапуск и три последних задания. Название выбранной модели поступает из MikoPBX вместе с централизованными настройками; отдельной локальной модели по умолчанию в интерфейсе Worker нет.

Во время активной работы отображается текущий этап и прогресс:

1. проверка контракта и регистрация;
2. получение lease задания;
3. скачивание записи;
4. анализ и подготовка аудио;
5. выбор движка, загрузка или открытие модели;
6. локальная транскрибация через Parakeet или WhisperKit;
7. отправка результата или ошибки;
8. удаление временных файлов.

Перед отправкой Worker нормализует результат и отбрасывает пустые, поврежденные и явно повторяющиеся фрагменты. В техническую диагностику попадают количество принятых и отклоненных сегментов и причины отклонения; модуль дополнительно применяет свой серверный фильтр качества.

### Раздел «История»

История содержит задания, которые получил именно этот Mac. Это не общий список расшифровок PBX.

Доступны периоды **24 часа**, **7 дней** и **30 дней**, фильтры по завершенным, проблемным и активным заданиям, а также поиск по `call_id`. Строку можно раскрыть для просмотра этапов и технических данных; из проблемного задания можно перейти в **Диагностика**.

Локальная история сохраняется между запусками приложения. Готовая расшифровка и запись разговора по-прежнему хранятся и управляются на стороне MikoPBX.

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FzCgazCDNzgVT4TGfmnZb%2FSTTNEWHistory.png?alt=media&amp;token=114d95ae-1ac9-473d-934e-14f9c7a1c5b7" alt=""><figcaption><p>Раздел "История" в STT обработчике</p></figcaption></figure>

### Раздел «Модели»

Модель для новых заданий выбирается в MikoPBX на вкладке **Каталог моделей**. Worker синхронизирует выбранную модель с PBX и автоматически скачивает требуемые файлы при первом задании.

Раздел показывает:

* количество моделей и общий размер;
* размер служебных данных;
* список локально загруженных моделей;
* расположение модели в Finder.

Для Parakeet раздел может показывать два набора файлов: **ASR** с Core ML-моделью для распознавания и **Tokenizer**, который используется при подготовке подсказок из списка терминов. Оба набора относятся к одной модели.

Кнопки **Обновить** и **Открыть папку** перечитывают хранилище и открывают его в Finder. Ненужную локальную копию можно удалить только после остановки Worker. Если модель снова понадобится, она будет загружена повторно.

{% hint style="info" %}
Первая обработка новой модели занимает больше времени из-за загрузки и подготовки кэша. Не отключайте интернет до окончания загрузки.
{% endhint %}

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FaORFx9AkAeN9AKPV2aib%2FSTTNEWModels.png?alt=media&amp;token=a2d312c4-a636-4f98-bf50-e4ae55459724" alt=""><figcaption><p>Раздел "Модели" в STT обработчике</p></figcaption></figure>

### Раздел «Диагностика»

Диагностика объединяет состояние подключения, автоматического восстановления и локальный журнал.

В верхней части доступны:

* общая оценка состояния;
* кнопка **Проверить соединение**;
* кнопка **Открыть папку логов**.

Техническая сводка показывает адрес MikoPBX, состояние подключения, UID и время последнего успешного heartbeat. UID можно скопировать для сопоставления с таблицей обработчиков на PBX.

Локальные события можно ограничить по времени (**Все**, **1 час**, **Сегодня**) и уровню (**Все**, **Предупреждения**, **Ошибки**), найти по тексту, скопировать или экспортировать. На экране показываются последние 250 подходящих событий.

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2FScn0aiP7awKtwQGsEAc2%2FSTTNEWDiagnostic.png?alt=media&amp;token=69b78891-facd-4253-bd26-6d52ccc08ad1" alt=""><figcaption><p>Раздел "Диагностика" в STT обработчике</p></figcaption></figure>

### Раздел «Настройки»

#### Подключение к MikoPBX

| Поле              | Назначение                                               |
| ----------------- | -------------------------------------------------------- |
| **Адрес MikoPBX** | Адрес PBX, с которой работает Worker.                    |
| **Токен Worker**  | Ограниченный токен модуля, сохраненный в macOS Keychain. |
| **Имя Worker**    | Понятное имя Mac в таблице обработчиков.                 |
| **UID Worker**    | Стабильный технический идентификатор этого Mac.          |

Кнопка **Зарегистрировать этот Mac** проверяет подключение и создает или обновляет регистрацию.

#### Общие настройки

| Настройка                           | Назначение                                                                                                  |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Язык приложения**                 | Русский, английский или системный язык. Для применения требуется перезапуск.                                |
| **Запуск вместе с macOS**           | Запускать приложение после входа пользователя.                                                              |
| **Поддерживать работу обработчика** | Сохранять намерение работать и автоматически восстанавливаться после потери сети, сна или временной ошибки. |
| **Временные файлы**                 | Папка загруженных записей и промежуточных WAV-сегментов.                                                    |
| **Проверка TLS**                    | Проверять HTTPS-сертификат MikoPBX.                                                                         |
| **Собственный CA**                  | Необязательный PEM/CRT/CER-файл для частного сертификата.                                                   |

Кнопка **Запустить настройку заново** повторно открывает онбоардинг.

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2Fjbx1vMwSwJ5bGXlERtN2%2FSTTNEWSettings.png?alt=media&amp;token=b4d0251a-dc28-4fc4-a1bc-b6659445009d" alt=""><figcaption><p>Раздел "Настройки" в STT обработчике</p></figcaption></figure>

### Статус в строке меню

Значок Local STT Worker в строке меню показывает, работает ли STT, выполняется ли транскрибация или требуется внимание. Меню содержит состояние, текущий этап или время последнего контакта и кнопку **Открыть приложение**.

<figure><img src="https://3704471835-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MPK4TuzRBnP7rt8htho-887967055%2Fuploads%2F5WcHGd3TguY1pcjmgPBG%2FSTTNEWStatusbar.png?alt=media&amp;token=0086c4f3-292b-41e8-a98a-6e1c8fe40106" alt="" width="330"><figcaption><p>Состояние обработчика в строке меню</p></figcaption></figure>

### Локальные данные и безопасность

| Данные          | Расположение                                               |
| --------------- | ---------------------------------------------------------- |
| Модели          | `~/Library/Application Support/Local STT Worker/Models`    |
| Временные файлы | `~/Library/Application Support/Local STT Worker/Temporary` |
| Журналы         | `~/Library/Logs/Local STT Worker`                          |
| Пароли/Токены   | Keychain service `LocalSTTWorker.PBX`                      |
| Настройки       | UserDefaults приложения `com.mikopbx.LocalSTTWorker`       |

Worker принимает запись только от авторизованной MikoPBX и сохраняет ее в безопасную временную директорию. После завершения задания временные аудиофайлы удаляются.

Для Parakeet Worker проверяет ожидаемую модель и репозиторий, загружает компоненты только по HTTPS, проверяет служебные файлы и не использует символические ссылки внутри каталога модели. Локальные пути к модели не включаются в сообщения об ошибках, отправляемые в PBX.

### Что настраивается в MikoPBX, а что на Mac

| Где                  | Параметры                                                                                                                                                                           |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **MikoPBX / модуль** | Период обработки, срок хранения, максимальная длительность записи, движок и модель, язык задания, словарь терминов, профиль обработки, очередь, ключи, расшифровки и журнал модуля. |
| **Local STT Worker** | Параметры подключения, UID и имя Mac, запуск и восстановление Worker, локальный кэш моделей, временная папка, TLS/CA, локальная история и диагностика.                              |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.mikopbx.com/mikopbx/modules/miko/module-local-speech-to-text/miko-ai-worker.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
