Распознавание речи на Apple: выбор локальной модели
AnySpeechRecognizer предлагает знакомый Swift API с выбором движка и разделением говорящих. Публикация от 29 октября также представляет AnyDecisionModel.
Для приложения с интервью или голосовыми заметками важны разные задачи: распознать слова, отделить участников разговора и решить, как обработать результат. В публикации Hugging Face от 29 октября представлены AnySpeechRecognizer и AnyDecisionModel — пакеты для разработчиков Apple, которые позволяют выбирать модели под эти задачи.
Что меняется для разработчика
AnySpeechRecognizer следует знакомой организации Apple SpeechAnalyzer, но позволяет выбрать движок распознавания. В статье описаны локальные Parakeet и Qwen3-ASR на Core ML. Это инструменты интеграции в приложение, а не готовый веб-сервис, куда достаточно загрузить запись.
Пакет также добавляет диаризацию — разметку того, кто и когда говорил. Она отличается от самого распознавания: правильная фраза может быть отнесена не к тому участнику. При подготовке интервью качество текста и качество меток говорящих следует оценивать раздельно.
Как выбрать первый движок
Начните с характера задачи: обработка готовых файлов или работа с живым потоком. В источнике Qwen3-ASR описан как вариант, выдающий итоговый результат на сегмент до 40 секунд без промежуточного текста, времён отдельных слов и уверенности. Авторы отмечают, что он медленнее Parakeet и больше подходит для файлов, чем для живого ввода. Эти различия важнее общего обещания «поддерживает распознавание».
Уточните поддержку нужного языка и возможности выбранной модели. В статье также указаны заметные объёмы загружаемых файлов: модели требуют места на устройстве. Загрузка происходит по запросу приложения. Поэтому первый запуск с получением модели и последующую обработку уже установленной моделью нельзя считать одним и тем же сценарием.
Пример маршрута для интервью
Редакционная схема для первого прототипа:
- Возьмите короткий фрагмент реальной записи с известным текстом и двумя участниками.
- Подготовьте небольшую ручную расшифровку с именами и временем смены говорящих.
- Запустите выбранный движок, затем отдельно проверьте разделение участников.
- Сопоставьте пропущенные слова, имена, числа и места, где голоса накладываются.
- Повторите измерение на целевом устройстве, сохранив модель и настройки.
Это предложенная процедура проверки, а не выполненный нами тест. Авторы источника прямо отмечают трудность записей с перебивающими друг друга участниками. Хороший результат на чистой диктовке не доказывает такую же точность на подкасте с несколькими голосами.
Зачем нужен AnyDecisionModel
Второй пакет решает другую задачу: возвращает ответы «да/нет», выбор из вариантов или оценку по шкале вместе с вероятностями. Он не заменяет распознавание речи. Например, в редакционном прототипе после получения текста можно выбирать дальнейший маршрут обработки по заранее определённым категориям.
Важное ограничение из публикации: уверенность, вычисленная по распределению вероятностей, показывает, насколько модель сосредоточилась на ответе, но не доказывает его правильность. Порог автоматического решения следует проверять на собственных размеченных примерах. Если ошибки дороги, предусмотрите передачу спорных случаев человеку.
Что это означает для медиапроекта
Локальная обработка интересна там, где нужен контроль над местом выполнения и повторяемость конфигурации. Но сам выбор локального движка не описывает все сетевые действия приложения: отдельно проверяются загрузки моделей и остальные подключения. Наличие пакетов не означает их готовую интеграцию в VIZURAI. Практический первый результат — измеренный небольшой прототип с понятными ошибками, а не обещание универсальной точности.
Создайте свой результат
Регистрация и генерации откроются после запуска. Пока можно подписаться на новости проекта.
