Реализация 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
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Реализация 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 недели.