Як уникнути таймаутів при AI-транскрибації?

Як уникнути таймаутів при AI-транскрибації? Користувач завантажує 40-хвилинний запис наради — і чекає текст. Якщо на сервер іде сирий MP4 вагою 300 МБ, а назад приходить JSON через 90 секунд, UX зламаний ще до першого слова. Ми вибудовуємо пайплайн, у якому мобільний клієнт не просто відправляє ф

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Як уникнути таймаутів при AI-транскрибації?
Середній
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    783
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    598

Як уникнути таймаутів при AI-транскрибації?

Користувач завантажує 40-хвилинний запис наради — і чекає текст. Якщо на сервер іде сирий MP4 вагою 300 МБ, а назад приходить JSON через 90 секунд, UX зламаний ще до першого слова. Ми вибудовуємо пайплайн, у якому мобільний клієнт не просто відправляє файл, а бере участь у підготовці даних: нарізка, конвертація, чанкування — і отримує результат поступово, поки модель ще працює. Спеціалізуємося на інтеграції AI-транскрибації під ключ, враховуючи особливості платформи та обмеження API. Понад 5 років досвіду в мобільній розробці та 15+ реалізованих пайплайнів транскрибації для iOS і Android із сумарним обсягом понад 10 000 годин аудіо.

Найчастіша помилка — відправляти файл цілком через URLSession.dataTask або OkHttp з дефолтними таймаутами. На файлах понад 50 МБ це призводить до NSURLErrorTimedOut (iOS) або SocketTimeoutException (Android) у 70% випадків. Сервер часто відповідає 413 Entity Too Large, якщо ліміт не узгоджено. На пристроях з 2 ГБ RAM буферизація всього файлу в пам'ять викликає OOM — особливо при роботі з відео.

Чому VAD критично важливий для точності?

Чанкування по 60 секунд без урахування пауз ріже слова навпіл — транскрипція розбиває «транскрибація» на «транс» і «крибація». Voice Activity Detection (VAD) нарізає по реальних паузах: на iOS використовуємо AVAudioEngine з порогом -45 dBFS, на Flutter — пакет voice_activity_detector (WebRTC VAD). Це підвищує точність розпізнавання на 15–20% для неформальної мови порівняно з рівномірним чанкуванням.

Типові налаштування VAD:

Параметр Рекомендоване значення Зауваження
min_speech_duration 0.8 s Не менше 0.5 с для коротких фраз
min_silence_duration 1.2 s Збільшити до 2 с для інтерв'ю
threshold -45 dBFS Для тихих записів — -35 dBFS
frame_size 30 ms 10–30 ms за WebRTC

Як налаштувати VAD під свої дані

  1. Запишіть 10-хвилинний зразок мови на цільовому пристрої.
  2. Проженіть через VAD з дефолтними параметрами та візуалізуйте межі чанків.
  3. Відкоригуйте min_speech_duration та threshold так, щоб чанки не обрізали початок/кінець фраз.
  4. Перевірте на кількох файлах різної гучності та фонового шуму.

Як конвертувати кодеки без втрат?

Whisper API приймає audio/wav, mp3, mp4, ogg, але не всі кодеки всередині. .mov з pcm_s16le — ок, з ac3 — 400 Bad Request. На iOS AVAssetExportSession з пресетом AVAssetExportPresetAppleM4A покриває 95% форматів. На Android — MediaExtractor + MediaCodec (PCM) → MediaMuxer (AAC). Для екзотичних кодеків додаємо FFmpeg (mobile-ffmpeg-full-gpl на Android, ffmpegkit на iOS).

Детальніше про конвертацію кодеків Якщо стандартні засоби не справляються, використовується FFmpeg з налаштуваннями: `-acodec pcm_s16le -ar 16000 -ac 1` для Mono WAV, який гарантовано приймають всі API.

Як будується пайплайн на практиці

Підготовка файлу на пристрої

// iOS: Вилучити аудіодоріжку з відео let asset = AVURLAsset(url: videoURL) let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetAppleM4A)! exportSession.outputFileType = .m4a exportSession.outputURL = tempAudioURL await exportSession.export() 

Після експорту — розбивка на чанки по 25 МБ (ліміт Whisper API) з урахуванням VAD-меж. Кожен чанк завантажується через URLSession.uploadTask(with:fromFile:) з фоновою конфігурацією (URLSessionConfiguration.background), щоб завантаження продовжувалося при згортанні додатка.

На Android аналогічно: WorkManager з CoroutineWorker для фонової обробки, OkHttp з RequestBody.create через File, а не через ByteArray — це критично для економії пам'яті на пристроях з 2 ГБ RAM.

Стрімінг результату

Замість polling кожні N секунд — WebSocket або SSE. Якщо використовуєте власний бекенд поверх Whisper, сервер може стрімити partial_transcript у міру обробки чанків. На клієнті це URLSessionWebSocketTask (iOS) або OkHttp WebSocket (Android), який додає рядки в StateFlow / @Published — UI оновлюється в реальному часі.

Для прямої інтеграції з OpenAI Whisper API стрімінгу немає — API синхронний. Тому при великому файлі розбивайте на незалежні запити та мержте результати на клієнті за індексом чанка, а не за порядком відповідей (мережа не гарантує порядок).

Зберігання та постобробка

Сирий транскрипт з Whisper повертає segments з часовими мітками — це цінніше, ніж просто текст. Зберігайте JSON з start, end, text для кожного сегмента: це дозволяє реалізувати «тап на слово → перемотка аудіо».

Для постобробки — пунктуація та діаризація (хто говорив). Whisper не розділяє спікерів. Для цього потрібен окремий крок: pyannote.audio через API або AssemblyAI з параметром speaker_labels: true. На клієнті просто мержте два JSON за часовими мітками.

Порівняння провайдерів

Провайдер Точність (RU) Стрімінг Діаризація Ліміт файлу
OpenAI Whisper Висока Ні Ні 25 МБ
AssemblyAI Середня Так Так 5 ГБ
Deepgram Nova-2 Висока Так Так Немає ліміту
Google Speech-to-Text v2 Середня Так Так 1 ГБ
On-device (iOS CoreML) Середня Ні Ні Обмежений RAM

Для російської мови Whisper large-v3 дає на 30% вищу точність, ніж Google Speech-to-Text, особливо на неформальній мові та технічному жаргоні. Deepgram Nova-2 з параметром language: ru — хороший варіант, якщо потрібен реалтайм. Зниження витрат на транскрибацію може досягати 40% при виборі правильного провайдера.

OpenAI Whisper documentation

Що входить у роботу

  • Аудит форматів — визначаємо середній розмір файлу, кодеки, мову, вимоги до діаризації.
  • Вибір провайдера та архітектури — рекомендація щодо моделі (Whisper, Deepgram, AssemblyAI) та стратегії завантаження.
  • Розробка пайплайну — підготовка файлу, чанкування, фонове завантаження, стрімінг результату.
  • Інтеграція постобробки — пунктуація, діаризація, синхронізація з UI.
  • Тестування на реальних пристроях — у тому числі з CoreML та MediaCodec.
  • Документація — опис API, схеми потоків даних, інструкції з доопрацювання.
  • Підтримка після здачі — налаштування моніторингу, виправлення помилок, консультації.

Процес роботи

Починаємо з аудиту: формат файлів, середній розмір, мови, чи потрібна діаризація, чи є вимоги до офлайн-роботи. Під це обираємо провайдера та архітектуру пайплайну.

Розробка йде поетапно: спочатку базовий upload + транскрипція без оптимізацій, потім додаємо чанкування, фонове завантаження, стрімінг UI, постобробку. Кожен етап — окрема гілка з функціональним тестом на реальних пристроях (не симулятор — CoreML та MediaCodec поводяться по-різному на реальному залізі).

Термін від інтеграції простого Whisper API до повноцінного пайплайну з діаризацією та фоновим завантаженням — від 2 до 6 тижнів залежно від платформи та вимог. Вартість інтеграції розраховується індивідуально після аудиту.

Зв'яжіться з нами для безкоштовного аудиту ваших файлів — це займе не більше години. Замовте інтеграцію та отримайте працюючий пайплайн у найкоротші терміни.