Дата публикации
ai_products

Apple SpeechAnalyzer обошёл Whisper на Mac и iPhone: тесты, цифры и кому это реально нужно

Что нового

Apple тихо, без громких презентаций, сменила старый API распознавания речи SFSpeechRecognizer на пару новых интерфейсов — SpeechAnalyzer и SpeechTranscriber в iOS 26 и macOS 26.

Команда Inscribe прогнала новый движок по классическому бенчмарку LibriSpeech и сравнила его с Whisper и старым API Apple. Все движки работали полностью на устройстве на Mac с Apple M2 Pro, 32 ГБ, macOS 26.5.1.

Ключевые цифры по точности (метрика — WER, word error rate, меньше — лучше):

LibriSpeech test-clean (чистая речь, 2620 фрагментов):

  • Apple SpeechAnalyzer2,12% WER
  • Whisper Small (CoreML через WhisperKit)3,74% WER, размер модели ~460 МБ
  • Whisper Base5,42% WER, ~140 МБ
  • Whisper Tiny7,88% WER, ~40 МБ
  • Apple SFSpeechRecognizer (legacy)9,02% WER

LibriSpeech test-other (сложная и шумная речь, 2939 фрагментов):

  • Apple SpeechAnalyzer4,56% WER
  • Whisper Small7,95% WER
  • Whisper Base12,51% WER
  • Whisper Tiny17,04% WER
  • SFSpeechRecognizer (legacy)16,25% WER

Если упростить:

  • Новый движок Apple примерно в 3,5–4 раза точнее старого SFSpeechRecognizer на той же аудиозаписи.
  • SpeechAnalyzer обгоняет Whisper Small по точности на чистой и шумной речи и при этом работает примерно в 3 раза быстрее на секунду аудио.

По скорости:

  • Все движки на M2 Pro работали быстрее реального времени — от 12× до 40×.
  • Это значит, что 1 час аудио превращается в текст примерно за 1,5–5 минут прямо на устройстве.
  • SpeechAnalyzer — примерно в 3 раза быстрее Whisper Small при лучшей точности.

Что ещё изменилось по сравнению с SFSpeechRecognizer:

  • Новый API выдаёт уже оформленный текст — с пунктуацией и правильным регистром.
  • Старый SFSpeechRecognizer чаще давал «сырой» текст и при этом ошибался в 4 раза чаще на длинной записи.

По языкам:

  • SpeechTranscriber поддерживает около 30 локалей.
  • Whisper по-прежнему покрывает 100+ языков, так что по многоязычности он впереди.

Как это работает

Inscribe использует оба стека параллельно — SpeechAnalyzer / SpeechTranscriber от Apple и три модели Whisper (Tiny, Base, Small) через WhisperKit CoreML. Это позволяет запускать все движки через одни и те же продакшн-кодовые пути на одной и той же машине и одном и том же аудио.

Бенчмарк и проверка честности

Чтобы результатам можно было доверять, Inscribe построила тест так:

  1. Один и тот же корпус — LibriSpeech

    • test-clean: 2620 фрагментов чистой, хорошо записанной речи.
    • test-other: 2939 более сложных, шумных и акцентированных фрагментов.
      Всего — 5559 высказываний.
  2. Одинаковая нормализация текста
    Оригинальные транскрипты LibriSpeech — заглавными буквами, без пунктуации, числа прописью. Современные движки выдают:

    • пунктуацию,
    • строчные и заглавные буквы,
    • цифры,
    • сокращения.

    Чтобы не штрафовать движок за «красивый» текст, обе стороны прогоняют через один и тот же нормализатор, который:

    • приводить регистр,
    • убирает пунктуацию,
    • переводит цифры в слова,
    • разворачивает или унифицирует сокращения.
      Нормализатор повторяет подход английского нормализатора OpenAI для Whisper.
  3. Корпусный WER, а не средний по фрагментам
    WER считают как общее число ошибок / общее число слов во всём тестовом наборе.
    Это не даёт коротким фразам (например, односложным командам) влиять на итоговую метрику сильнее длинных предложений.

  4. Полностью on-device, без «подмешивания» облака

    • По умолчанию SFSpeechRecognizer отправляет звук на серверы Apple.
    • Для теста Inscribe жёстко принудила локальный режим.
    • Если движок пытался уйти в облако, тестовый раннер просто отказывался запускаться, а не подменял результаты.
      Причина простая: сравнение имеет смысл только когда все движки работают на одном железе, без внешних сервисов.
  5. Ошибки не скрывают
    Если движок на конкретном фрагменте не вернул вообще ничего, этот фрагмент получает 100% WER.
    В тесте это случилось 1 раз из 27 795 транскрипций (старый SFSpeechRecognizer, тестовый набор test-other).

Сопоставление с числами OpenAI

Чтобы проверить, что бенчмарк корректно считает ошибки Whisper, Inscribe сравнила свои результаты с опубликованными числами OpenAI по тем же моделям и тому же корпусу.

Сравнение WER для Whisper (наши vs OpenAI):

  • Whisper Tiny, test-clean: 7,88% vs 7,6% у OpenAI → +0,28 п.п.
  • Whisper Base, test-clean: 5,42% vs 5,0%+0,42 п.п.
  • Whisper Small, test-clean: 3,74% vs 3,4%+0,34 п.п.
  • Whisper Tiny, test-other: 17,04% vs 16,9%+0,14 п.п.
  • Whisper Base, test-other: 12,51% vs 12,4%+0,11 п.п.
  • Whisper Small, test-other: 7,95% vs 7,6%+0,35 п.п.

Во всех случаях сдвиг небольшой и положительный. Инженеры объясняют это двумя факторами:

  • чуть более строгая нормализация текста;
  • квантизация моделей Whisper в CoreML по сравнению с эталонной GPU-версией.

Это важно: тот же пайплайн нормализации и подсчёта ошибок использовали для Apple SpeechAnalyzer и SFSpeechRecognizer. То есть методика, которая воспроизводит результаты OpenAI, используется и для колонок, которые никто больше проверить не может.

Открытые данные

Чтобы любой разработчик мог проверить подсчёты, Inscribe выложила сырые данные:

  • summary.json — все 10 измерений в машиночитаемом виде (около 3 КБ).
  • raw-transcripts-apple.json.gz — гипотезы SpeechAnalyzer по всем 5559 фрагментам (около 620 КБ).
  • raw-transcripts-legacy.json.gz — гипотезы SFSpeechRecognizer по тем же фрагментам (около 620 КБ).

Можно взять эти файлы, прогнать через свой нормализатор и пересчитать WER.

Неожиданный бонус: баг в продакшене

Во время сборки бенчмарка Inscribe нашла баг в своём продукте:

  • при импорте файлов аудио подавали в SpeechAnalyzer,
  • закрывали входной поток,
  • но не вызывали finalizeAndFinishThroughEndOfInput().

Без этого вызова SpeechAnalyzer не возвращал финальный результат, и импорт зависал навсегда. Баг долго не всплывал, потому что режим Auto по умолчанию выбирал Whisper, а не движки Apple.

После бенчмарка Inscribe исправила это и обновила релиз. Это хороший пример, как детальное тестирование движка вылавливает проблемы в самом приложении.

Что это значит для вас

Если вы разработчик под iOS / macOS

1. Если вы всё ещё используете SFSpeechRecognizer — пора мигрировать.

Цифры по LibriSpeech:

  • 9,02% → 2,12% WER на чистой речи.
  • 16,25% → 4,56% WER на шумной речи.

То есть на часовой встрече, записанной с нормальным микрофоном:

  • транскрипция через SFSpeechRecognizer даст примерно в 4 раза больше неправильных слов, чем через SpeechAnalyzer.
  • При этом новый API ещё и быстрее, и выдаёт аккуратный текст с пунктуацией.

Если ваше приложение делает что-то длиннее голосовой команды — встречи, лекции, подкасты, диктовку текстов — переход на SpeechAnalyzer окупается только за счёт точности.

2. Если вы уже используете Whisper на устройстве

Для английской речи на актуальных iPhone и Mac ситуация изменилась:

  • раньше Whisper Small был почти «дефолтным» выбором для максимальной точности;
  • теперь SpeechAnalyzer показывает меньший WER на LibriSpeech и работает в 3 раза быстрее на том же железе.

Inscribe отреагировала на это так:

  • в режиме Auto приложение теперь предпочитает SpeechAnalyzer для поддерживаемых языков;
  • Whisper остаётся движком по умолчанию для остальных языков.

Если вы делаете продукт только для iOS/macOS и вам нужен английский офлайн-транскрипт, имеет смысл:

  • использовать SpeechAnalyzer как основной движок;
  • держать Whisper как резерв для языков, которых нет в SpeechTranscriber.

3. Где новый API особенно полезен

  • Приложения для заметок и диктовки: быстрый и точный текст прямо на устройстве, без отправки аудио в облако.
  • Сервисы для протоколирования встреч: часовой звонок превращается в текст за несколько минут, а ошибок заметно меньше, чем у старого API.
  • Продукты с повышенными требованиями к приватности: Inscribe подчёркивает, что не загружает ни один из 5559 фрагментов в облако — всё работает локально.

4. Когда SpeechAnalyzer не подойдёт

  • Если вам нужен широкий набор языков (100+), включая редкие, — SpeechTranscriber с его ~30 локалями пока не заменяет Whisper.
  • Если вы таргетируете Android, Windows, Linux или старые версии iOS/macOS без 26-й версии, SpeechAnalyzer вам недоступен.
  • Если ваша задача — тяжёлые акценты, много говорящих, далекий микрофон, LibriSpeech даёт только ориентир. Вам всё равно придётся собирать свой корпус и тестировать.

Доступность в России

Apple поставляет iOS и macOS в Россию без официальной локальной поддержки, но устройства и обновления операционных систем доступны.
SpeechAnalyzer и SpeechTranscriber встроены в iOS 26 и macOS 26. Для их использования не нужен VPN, так как распознавание в тесте работало полностью офлайн.

Если вы публикуете приложение в российском сегменте, имеет смысл:

  • проверить, как новый API ведёт себя с русским языком (в бенчмарке тестировали только английский);
  • заложить в архитектуру fallback на Whisper или другие движки для неподдерживаемых локалей.

Место на рынке

SpeechAnalyzer против Whisper

По результатам теста на английском LibriSpeech на Apple M2 Pro:

Точность (WER, меньше — лучше):

  • SpeechAnalyzer: 2,12% (clean) / 4,56% (other).
  • Whisper Small: 3,74% / 7,95%.
  • Whisper Base: 5,42% / 12,51%.
  • Whisper Tiny: 7,88% / 17,04%.

Скорость:

  • Все движки: 12–40× быстрее реального времени.
  • SpeechAnalyzer: примерно в 3 раза быстрее Whisper Small на секунду аудио при лучшей точности.

Размеры моделей Whisper (для ориентира по ресурсам):

  • Whisper Tiny — ~40 МБ.
  • Whisper Base — ~140 МБ.
  • Whisper Small — ~460 МБ.

У SpeechAnalyzer как системного движка нет отдельной цифры по размеру модели — он встроен в ОС. Но по итогам теста на одном и том же железе видно, что он экономнее по вычислениям, чем Whisper Small.

Языки:

  • SpeechTranscriber — около 30 локалей.
  • Whisper100+ языков.

Вывод по позиционированию:

  • Для английского on-device на современном iPhone или Mac сейчас самый сильный вариант по сочетанию точности и скорости — встроенный SpeechAnalyzer.
  • Для многоязычных приложений или кроссплатформенных решений Whisper остаётся основным кандидатом: он работает на любом железе и закрывает значительно больше языков.

SpeechAnalyzer против SFSpeechRecognizer

На том же корпусе LibriSpeech новый API выглядит как жёсткий апгрейд:

Чистая речь (test-clean):

  • SFSpeechRecognizer: 9,02% WER.
  • SpeechAnalyzer: 2,12% WER.

Шумная речь (test-other):

  • SFSpeechRecognizer: 16,25% WER.
  • SpeechAnalyzer: 4,56% WER.

То есть новый движок:

  • в 3,5–4 раза точнее на тех же данных;
  • выдаёт лучше оформленный текст;
  • работает полностью на устройстве и корректно сравнивается с локальными моделями.

Для экосистемы iOS/macOS это означает, что стандартный системный выбор для диктовки и транскрипции меняется. Всё, что ещё опирается на SFSpeechRecognizer для длительных задач, теряет качество без какой-либо выгоды.

Ограничения и что ещё нужно знать

  • Только английский в тесте. LibriSpeech — корпус английской прочитанной речи. Никаких цифр по русскому, китайскому или другим языкам здесь нет.
  • Тип речи — аудиокниги, а не митинги. Это хорошо читаемый текст, а не хаотичный разговор нескольких людей в переговорке. Для реальных митингов, акцентов и плохих микрофонов нужен отдельный бенчмарк.
  • Одна конфигурация железа. Все цифры по скорости относятся к M2 Pro, 32 ГБ, macOS 26.5.1. На других чипах Apple Silicon точность должна быть сопоставимой, а скорость — отличаться.
  • Whisper в версии CoreML. В тесте использовали квантизованные модели через WhisperKit. Эталонная GPU-версия может дать немного другие числа, но расхождение уже отражено в сравнении с официальными данными OpenAI.

Если вы планируете строить продукт поверх этих движков, разумный шаг — повторить тест хотя бы на своём типе аудио: звонки, диктовки, лекции, подкасты. Но как стартовый ориентир для английского на Apple-устройствах этот бенчмарк даёт довольно чёткую картину: SpeechAnalyzer сместил Whisper с позиции «по умолчанию» для on-device транскрипции в экосистеме Apple.


Читайте также