Реалізація AI-транскрибації голосових повідомлень у мобільному додатку

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

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація AI-транскрибації голосових повідомлень у мобільному додатку
Простий
~2-3 дні
Часті запитання

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

AI-трансгрипція голосових сообщень в мобільних додатках

Голосові сообщення в мессенджерах — біль корпоративного спілкування. 3-хвилинний голос замість двох рядків тексту. Трансгрипція вирішує це: натиснув кнопку — отримав текст, можна прочитати без звуку, скопіювати, знайти по пошуку.

Захват аудіо з голосового сообщення

На практиці мобільний додаток працює з двома сценаріями:

Запис всередині додатка. Користувач записує прямо у вашому додатку — нативний захват, повний контроль над форматом.

Імпорт зовнішнього файла. Отримали WAV/MP3/OGG з мессенджера через share sheet. iOS — UTType.audio в UIDocumentPickerViewController. Android — ACTION_GET_CONTENT з "audio/*".

Формат файла має значення. OGG Opus (формат Telegram) Whisper розуміє нативно. AMR (старі Android-мессенджери) — потрібна конвертація. На сервері ffmpeg вирішує конвертацію будь-якого формату:

import subprocess

def convert_to_mp3(input_path: str, output_path: str) -> None:
    subprocess.run([
        "ffmpeg", "-i", input_path,
        "-ar", "16000",      # 16kHz достатньо для мови
        "-ac", "1",          # моно
        "-b:a", "32k",       # 32kbps для мови
        output_path
    ], check=True)

16kHz моно MP3 32kbps — оптимум для Whisper: якість не падає, розмір файла мінімальний.

Whisper API: деталі інтеграції

import openai

client = openai.OpenAI()

def transcribe_audio(file_path: str, language: str = "ru") -> dict:
    with open(file_path, "rb") as f:
        transcript = client.audio.transcriptions.create(
            model="whisper-1",
            file=f,
            language=language,            # явне вказання мови покращує якість
            response_format="verbose_json",  # включає таймстампи та сегменти
            timestamp_granularities=["word"]  # таймстамп для кожного слова
        )
    return transcript

verbose_json + timestamp_granularities=["word"] дають таймстамп на кожне слово. На мобільному це дозволяє реалізувати «читай та слухай»: натиснення на слово в трансгрипції → перехід до цього моменту в аудіо.

Параметр language критичний для змішаних записів. Без явної мови Whisper витрачає перші секунди на детекцію — додає latency. Якщо додаток знає мову користувача — передавайте завжди.

Latency: реальні цифри та оптимізація

Whisper API: 10-секундне сообщення обробляється за 0.5–1.5 с. 1-хвилинне — 3–8 с. Це час обробки на серверах OpenAI + мережа. Для користувача прийнятливо, якщо показувати прогрес.

Для нижчої latency:

Deepgram Nova-2 — real-time streaming трансгрипція, latency < 300 мс. Дорожче Whisper, але швидше.

Локальний Whisper (self-hosted). faster-whisper на GPU (RTX 3090) обробляє 1 хвилину аудіо за 2–4 секунди. На CPU — 15–30 секунд. Якщо дані не можуть йти в хмару — єдиний варіант.

Клієнтська трансгрипція на iOS. SFSpeechRecognizer — нативний Apple Speech framework, працює на пристрої (з iOS 16), безплатний, не вимагає відправки даних. Але: підтримує тільки обмежений набір мов, якість нижче Whisper, ліміт 1 хвилина на запит.

// iOS — локальна трансгрипція через SFSpeechRecognizer
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "ru-RU"))
let request = SFSpeechURLRecognitionRequest(url: audioURL)
request.shouldReportPartialResults = true

recognizer?.recognitionTask(with: request) { result, error in
    guard let result else { return }
    DispatchQueue.main.async {
        self.transcriptText = result.bestTranscription.formattedString
    }
}

Для коротких особистих заміток SFSpeechRecognizer — гарний варіант без серверних видатків. Для корпоративних записів зустрічей — Whisper або Deepgram.

Відображення трансгрипції на мобільному

Проста трансгрипція — просто текст. Гарна трансгрипція на мобільному:

  • Інтерактивний текст з таймстампами: натиснув слово → аудіо стрибає до цього моменту
  • Пунктуація (Whisper відновлює її добре, не ідеально — іноді потрібна постобробка)
  • Параграфи по паузам (Whisper сегментує аудіо — використовуємо segments для розбивки)
  • Кнопка копіювання всього тексту
  • Пошук по тексту трансгрипції

Для мессенджер-функціональності: трансгрипція з'являється стріммінгово — не чекаємо повного завершення, показуємо по мері готовності сегментів.

Постобробка трансгрипції

Whisper іноді вставляє [Музика], [Оплески] у нотації Whisper, транскрибує фоновий шум. Фільтруємо:

import re

def clean_transcript(text: str) -> str:
    # Видаляємо нотації Whisper типу [Музика], [Noise]
    text = re.sub(r'\[.*?\]', '', text)
    # Убираємо лишні пробели
    text = re.sub(r'\s+', ' ', text).strip()
    return text

Для бізнес-сценаріїв корисна LLM-постобробка: виправлення імен власних, термінів, додання пунктуації там, де Whisper помилився.

Етапи та термін

Реалізація захвату аудіо та імпорту файлів → серверна трансгрипція (Whisper/Deepgram) з прогресом → форматування та постобробка → мобільний UI з інтерактивною трансгрипцією → опціонально: стріммінг та локальний SFSpeechRecognizer для iOS.

Базова трансгрипція через Whisper з простим текстовим відображенням — 1–2 тижні. Повнофункціональний інструмент з інтерактивним текстом, таймстампами та постобробкою — 3–4 тижні.