Локальная транскрибация
Локальная транскрибация звонков в MikoPBX: записи остаются внутри PBX, распознавание выполняется на Mac-обработчике, а готовые расшифровки доступны в интерфейсе модуля и через API.
Модуль локальной транскрибации распознает речь в записанных звонках MikoPBX и сохраняет готовую расшифровку как диалог. Аудиофайлы не отправляются во внешние облачные сервисы: PBX создает очередь заданий, а отдельное приложение Local STT Worker скачивает назначенную запись, распознает ее локально через WhisperKit и отправляет результат обратно в MikoPBX.
PBX-модуль работает внутри MikoPBX. Отдельное приложение Local STT Worker выпускается для Mac на Apple Silicon. Подробное описание приложения приведено в статье Local STT Worker.

Как проходит обработка
Звонок завершается, и MikoPBX сохраняет запись разговора.
Фоновый процесс модуля находит запись и создает задание.
Local STT Worker получает lease задания.
PBX отдает назначенному обработчику файл записи.
Worker подготавливает аудио, запускает WhisperKit/Core ML и отправляет сегменты записи разговора на транскрибацию.
Модуль фильтрует результат, сохраняет расшифровку и публикует событие для интеграций.
Если Worker перестает продлевать lease, задание возвращается в очередь.
Требования и совместимость
MikoPBX 2025.1.1 или новее.
macOS 14.0 или новее на Mac с Apple Silicon.
Включенная запись разговоров для нужных маршрутов, очередей или сотрудников.
Сетевой доступ от Mac к веб-интерфейсу MikoPBX.
Интернет при первой загрузке модели с Hugging Face. После загрузки модели для обработки достаточно доступа к PBX.
Установка модуля
Откройте веб-интерфейс MikoPBX.
Перейдите в раздел Модули → Маркетплейс модулей.

Найдите Модуль локальной транскрибации и установите его.
Откройте список установленных модулей и включите модуль.

Нажмите кнопку настроек справа от версии модуля.

Вкладка «Настройки»
Язык по умолчанию
Автоматически
Языковая подсказка для WhisperKit. В автоматическом режиме Worker определяет язык по распознанным сегментам.
Базовый интервал проверки, сек.
30
Интервал сканирования новых CDR-записей. Диапазон: 30–3600.
Максимальная длительность распознаваемой записи, мин.
60
Записи с известной длительностью выше лимита пропускаются. Диапазон: 1–1440.
Звонков за один проход
200
Количество CDR, проверяемых за один цикл. Диапазон: 1–1000.
Время ожидания задания, сек.
1800
Срок lease без успешного продления. Диапазон: 60–86400.
Период обработки записей
30 дней
За какой период искать завершенные звонки с записью: 1, 7, 30, 90, 180, 365 дней или все записи.
Срок хранения расшифровок
1 год
Через сколько удалять результаты транскрибации: 30, 90, 180, 365 дней или никогда.
Термины для распознавания
пусто
Названия компаний, продуктов, систем и другие слова-подсказки.
Период обработки не может превышать срок хранения расшифровок. Срок хранения отсчитывается от завершения распознавания; CDR и исходные аудиозаписи не удаляются.
При изменении периода обработки позиция сканирования сбрасывается, чтобы модуль пересмотрел историю в новом диапазоне.
Устарело

Термины для распознавания
Термины можно вводить через запятую, точку с запятой или с новой строки, а также загрузить из TXT-файла. Модуль удаляет дубликаты и передает Worker до 100 терминов длиной до 120 символов каждый.
Кнопка Скачать шаблон сохраняет пример TXT-файла.

Параметры обработки аудио
Профиль декодирования WhisperKit, нормализация, VAD, максимальная длительность сегмента и перекрытие централизованно хранятся в MikoPBX и передаются зарегистрированным обработчикам. В текущей версии расширенный блок этих параметров скрыт, поэтому настраивать их через интерфейс модуля или Worker нельзя.
Вкладка «Каталог моделей»
Здесь выбирается модель, которую PBX передает в новые задания.
Base
Тесты и слабые Mac
Самая быстрая, но менее точная на шуме и коротких фразах.
Small
Большая очередь
Быстрая модель с приемлемым качеством.
Medium
Повседневные звонки
Баланс качества и нагрузки.
Large V3 Turbo
Рабочая транскрибация (рекомендуемая модель)
Рекомендуемый баланс качества и скорости.
Podlodka Turbo
Русская разговорная речь
Core ML-модель smkrv/whisper-podlodka-turbo-coreml.
Large V3
Максимальное качество
Самая ресурсоемкая и медленная модель.
После выбора нажмите Сохранить модель.

Пользовательская модель Hugging Face
Можно добавить собственную WhisperKit/Core ML-совместимую модель. Укажите репозиторий owner/repository, имя runtime-модели, название, язык, лицензию, ярлыки, ссылку и описание.
Обычная модель Hugging Face без подготовленных Core ML-артефактов не подойдет для Local STT Worker.

Вкладка «Очередь»
В очереди
Задание ждет свободный Worker.
В работе
Задание закреплено за Worker действующим lease.
Готово сегодня
Задания, завершенные за текущий день.
Ошибки
Неуспешные задания, которые можно вернуть в очередь.
Ожидают файл записи
CDR найден, но файл еще не появился или недоступен для чтения.
Пропущенные записи
Записи, которые не будут обработаны без изменения условий.
Причины пропуска включают превышение максимальной длительности, фиксированного предела 500 MiB, отсутствие файла по истечении срока ожидания и выход звонка за период обработки. Неизвестная или нулевая длительность CDR сама по себе не блокирует создание задания.

Вкладка «Обработчики»
На этой вкладке создаются ключи доступа, отображаются зарегистрированные Mac и проверяется их совместимость.
Ключ показывается только один раз после создания. Один ключ не может быть привязан сразу к нескольким worker_uid; для нескольких Mac создайте отдельные ключи. После удаления ключа связанный Worker необходимо зарегистрировать с новым токеном.
Таблица обработчиков показывает имя, UID, IP, модель, версию приложения, версию Worker API, совместимость, состояние и последнюю активность. Worker с неподдерживаемой версией API отображается как несовместимый и офлайн.
В верхней части вкладки предусмотрен блок загрузки приложения для macOS. Пока сборка не опубликована в этом блоке, кнопка загрузки остается недоступной.
Устарело

Вкладка «Расшифровки»
Список можно фильтровать по диапазону дат звонков. В таблице отображаются дата, call_id, номер задания, файл, язык, длительность, модель и время создания результата.
Карточка диалога содержит проигрыватель и скачивание записи, реплики с таймкодами, отдельные колонки каналов для стерео, сгруппированную диагностику, исходную техническую информацию и JSON расшифровки. Нажатие на реплику переводит проигрыватель к соответствующему моменту.


Вкладка «Журнал»
Журнал содержит структурированные технические события модуля и обработчиков без расшифровок, аудиозаписей и секретов. Доступны периоды 1h, 3h, 12h, 1d и весь журнал, фильтры по уровню и компоненту, полнотекстовый поиск и обновление списка. В интерфейсе показывается не более 1000 последних подходящих событий.
Обновление модуля и Worker
При переходе на Worker API v2 соблюдайте порядок:
Обновите ModuleLocalSpeechToText до версии 1.45.
Старые обработчики временно станут несовместимыми и офлайн; активные lease v1 вернутся в очередь без увеличения числа попыток.
Обновите Local STT Worker до версии 1.7 build 34.
Откройте Диагностика или Настройки Worker и повторите проверку подключения.
Очередь, готовые результаты, настройки, UID обработчиков и существующие API-ключи сохраняются. Обновление MikoPBX Core сверх версии 2025.1.1 для этого перехода не требуется.
REST API
Базовый путь:
Расшифровки для интеграций
GET /transcripts?limit=50&offset=0&date_from=YYYY-MM-DD&date_to=YYYY-MM-DDGET /transcripts/{result_id}GET /transcripts/events?cursor=created_at:event_id&limit=100GET /call-transcripts/{call_transcript_id}?revision={revision}GET /call-transcripts/events?cursor={cursor}&limit=100
transcripts/events публикует идемпотентные события transcript.completed. Детальная расшифровка содержит стабильные segment_id, исходные сегменты, объединенные реплики turns и простой текст.
Worker API v2
Worker сначала вызывает GET /worker-api-contract, а затем передает заголовок X-MikoPBX-Worker-API-Version: 2 во всех запросах Worker API.
Регистрация
POST /workers
Профиль обработки
GET /worker-processing-settings
Получение lease
POST /job-leases
Скачивание записи
GET /job-recordings/{job_id}
Продление lease
PATCH /job-leases/{job_id}
Освобождение lease
DELETE /job-leases/{job_id}
Отправка результата
PUT /job-results/{job_id}
Отправка ошибки
PUT /job-failures/{job_id}
Last updated
Was this helpful?

