GigaAM v3 e2e RNN-T для Core ML
русское ASR с пунктуацией
Core ML-сборка модели GigaAM v3 e2e_rnnt от Sber для распознавания русской речи с пунктуацией и заглавными буквами. Конвертация из ai-sage/GigaAM-v3; энкодер — Conformer, веса и вычисления в fp16. В экспорте учитывается реальная длина аудио, поэтому паддинг до 30 с не меняет текст.
1⃣ Ключевые особенности
- 1⃣ Энкодер получает
audio_signalи реальнуюlength, маскируя кадры после конца фразы. - 2⃣ Это исправляет типичную проблему экспорта без маски: иначе внимание и свёртки видят паддинг и часто теряют финальную точку.
- 3⃣ В комплекте
Encoder.mlmodelc,Predictor.mlmodelcиJointDecision.mlmodelc; Predictor и Joint взяты из сборкиmaxhlv/gigaam-v3-coreml. - 4⃣ Словарь: 1024 SentencePiece-токена плюс blank
1024; жадное декодирование, до 10 символов на кадр. - ➕ Нужен точный фронтенд: 16 кГц моно, n_fft 320, hop 160, 64 HTK-mel, без нормализации,
center=False, затемlog(clamp(x, 1e-9, 1e9)).
▶ Пример
Сценарий: на macOS приложение подаёт в Encoder.mlmodelc log-mel-тензор [1, 64, 3000] и реальную длину [1], затем жадно декодирует выход энкодера вместе с Predictor и JointDecision. Для короткой русской фразы, фразы на 8,6 с и фразы с английскими терминами результат совпал с fp32 PyTorch на аудио без паддинга.
Подробнее
Проверки: на четырёх синтетических примерах жадное декодирование дало точный текст fp32 PyTorch-модели на GPU и CPU.На Neural Engine fp16 менял конец смешанной фразы; int8-веса тоже, поэтому веса оставлены fp16.
Латентность энкодера на окне 30 с на M5 Pro: 23 мс GPU, 81 мс Neural Engine, 137 мс CPU; загрузка — 1,5 с GPU против 11 с специализации Neural Engine.
Ограничение: фиксированное окно 30 с и обязательное совпадение фронтенда.








Комментарии