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

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

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

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

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

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

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

Етапи розробки

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    746
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1162
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    969
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    563

Як уникнути таймаутів при 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 тижнів залежно від платформи та вимог. Вартість інтеграції розраховується індивідуально після аудиту.

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

Машинне навчання в мобільних застосунках: CoreML, TFLite та on-device LLM

Ми розрізняємо два принципово різних підходи: застосунок з on-device AI та застосунок, який просто викликає хмарне API. Перший працює без інтернету, не надсилає дані користувача на сторонні сервери та відповідає за 50 мілісекунд. Другий залежить від затримки мережі та тарифного плану. Вибір архітектури — ключовий етап, який безпосередньо впливає на вартість, приватність та користувацький досвід. Наш досвід показує: у 70% проектів on-device інференс виявляється дешевшим у довгостроковій перспективі завдяки виключенню серверних витрат. Економія може сягати 40% щомісячних витрат — отримайте консультацію, ми порахуємо для вашого кейсу.

Як вибрати між CoreML та TFLite для on-device інференсу?

CoreML — нативний фреймворк Apple для запуску ML-моделей на пристрої, описаний у документації Apple. Підтримує Neural Engine (A11 Bionic та новіші), GPU та CPU як fallback. Моделі конвертуються у формат .mlmodel через coremltools з PyTorch, ONNX або TensorFlow. Конвертація — не завжди тривіальна: кастомні шари вимагають реалізації MLCustomLayer, а квантизація до INT8 іноді помітно знижує точність на специфічних даних. Ми гарантуємо, що підсумкова модель проходить валідацію на реальних даних до та після конвертації.

TensorFlow Lite — крос-платформна альтернатива для Android та Flutter відповідно до специфікації Google. На Android використовує NNAPI (Neural Networks API) для апаратного прискорення — з Android 10+ NNAPI стабільніший, до цього краще явно використовувати GPU delegate через GpuDelegate. Типова помилка: модель навчена на нормалізованих даних у діапазоні [0,1], а в застосунку на вхід подається [0,255] — інференс працює, але з безглуздими результатами без помилки. Ми включаємо модуль автоматичної валідації вхідних даних у SDK.

Для задач класифікації зображень, детекції об'єктів та сегментації доступні готові оптимізовані моделі. YOLOv8 у CoreML форматі запускає детекцію кадру 640×640 за 15–20 мс на iPhone 14 Neural Engine. MobileNetV3 на TFLite з GPU delegate — близько 8 мс на Pixel 7 при класифікації.

Параметр CoreML TFLite
Платформи iOS, macOS, watchOS Android, iOS, Linux, embedded
Апаратне прискорення Neural Engine, GPU, CPU NNAPI, GPU (OpenCL/OpenGL), CPU
Підтримка квантизації FP16, INT8 (з coremltools) FP16, INT8, dynamic range
Кастомні операції Через MLCustomLayer (Swift) Через делегати (Java/Kotlin)
Розмір бандла моделі ~3–5 МБ (MobileNetV2 quantized) ~2–4 МБ

Що робити, якщо потрібна генерація тексту на пристрої?

Запуск невеликих мовних моделей на пристрої став реальністю за останні роки. Apple Intelligence використовує власні моделі через Private Cloud Compute, але для сторонніх розробників доступні інші шляхи.

llama.cpp з Metal backend на iOS — робочий підхід для phi-3-mini (3.8B параметрів, 4-bit квантизація, ~2.3 ГБ). Інференс: 15–25 токенів/секунду на iPhone 15 Pro. Для інтеграції в Swift використовуємо Swift Package llama.swift або обгортку через C-інтерфейс llama.h. Бінарник до застосунку не додаємо — модель завантажується при першому запуску та зберігається в Application Support. Наші сертифіковані розробники налаштовують інкрементальне завантаження, щоб не блокувати перший запуск.

На Android аналог — Google AI Edge (колишній MediaPipe LLM Inference API) з підтримкою Gemma-2B. Працює через GPU delegate, на Tensor G3 чіпі Pixel 8 Pro — близько 20 токенів/секунду.

Порівняння LLM моделей для on-device
Модель Параметри Квантизація Розмір Швидкість (iPhone 15 Pro)
Phi-3-mini (Microsoft) 3.8B 4-bit ~2.3 ГБ 15-25 токенів/с
Gemma-2B (Google) 2B 4-bit ~1.2 ГБ 30-40 токенів/с
TinyLlama 1.1B 4-bit ~0.7 ГБ 60+ токенів/с

Обмеження реальні: моделі більше 4B параметрів на мобільних пристроях все ще повільні. Для складних задач міркування on-device LLM поступається GPT-4o за якістю. Гібридний підхід — on-device для коротких завдань та приватних даних, хмара для складних запитів — часто оптимальний. Оцінимо ваш кейс та запропонуємо баланс продуктивності та приватності — напишіть нам.

Інтеграція OpenAI API та інших хмарних моделей

Для сценаріїв, де cloud inference допустимий, інтеграція OpenAI, Anthropic або Google Gemini — це HTTP клієнт + streaming SSE. У Swift зручно через AsyncThrowingStream для стрімінгових відповідей. У Kotlin — через Flow.

Критично важливо: API-ключі ніколи не зберігаються в бандлі застосунку. Навіть обфускований ключ витягується з IPA за 10 хвилин через strings або frida. Правильна архітектура: мобільний застосунок → власний backend → OpenAI API. Backend контролює rate limiting, логує запити, захищає ключ.

Що входить у роботу (результати)

  • Навчена та квантизована модель під цільовий пристрій (документація за метриками)
  • SDK для інтеграції (Swift/Kotlin/Flutter) з прикладами виклику
  • Тести продуктивності на 3–5 реальних пристроях
  • Інструкція з оновлення моделі OTA
  • Підтримка при проходженні модерації App Store / Google Play (перевірка відповідності Guidelines 4.2, 5.1)
  • 2 тижні технічної підтримки після релізу

Типовий пайплайн проекту

  1. Аналіз завдання — вимірюємо latency, privacy, size, підтримувані пристрої.
  2. Прототипування моделі — в Python, оцінка accuracy на цільових даних.
  3. Конвертація та квантизація — під CoreML/TFLite з валідацією.
  4. Інтеграція в застосунок — модель обгортається в сервісний шар (легко замінювати CoreML → TFLite → хмара).
  5. Тестування — на реальних пристроях, вимір FPS, RAM, батареї.
  6. Деплой — через TestFlight / Firebase App Distribution, моніторинг метрик.

Терміни: інтеграція готової CoreML/TFLite моделі — 1–2 тижні, розробка кастомної моделі з мобільною оптимізацією — від 6 тижнів, on-device LLM чат з персоналізацією — 4–8 тижнів.

Чому ми беремося за складні кейси?

10+ років досвіду в мобільній розробці, 50+ впроваджених AI/ML рішень, гарантія сумісності з актуальними версіями iOS та Android. Всі проекти проходять code review та навантажувальне тестування. У вартість вже входить підготовка документації для модерації та навчання вашої команди.

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