Голосовые сообщения — самый неудобный формат для быстрого получения информации. Особенно в корпоративной переписке: минутный войс вместо одной строки текста. Мы решаем эту проблему встраиванием транскрибации в мобильное приложение. Пользователь говорит — приложение превращает речь в текст с точностью до 95%. При этом текст синхронизирован с аудио: можно нажать на любое слово и прослушать его. Технически это означает интеграцию с Whisper API или локальными решениями, реализацию захвата аудио, конвертацию в оптимальный формат (16 kHz моно MP3 32 kbps), отправку на сервер и получение транскрипта с таймстампами каждые 200–300 мс. Затем — постобработка, фильтрация шумовых нотаций и отображение в интерактивном UI. Весь цикл от нажатия кнопки до видимого текста занимает от 0.5 до 3 секунд в зависимости от длины записи. Один из наших проектов в финтехе показал сокращение времени обработки протоколов совещаний на 60% — экономия составила существенную сумму.
Как происходит захват аудио в приложении?
На практике мобильное приложение работает с двумя путями:
Запись внутри приложения. Пользователь записывает прямо в вашем приложении — нативный захват, полный контроль над форматом. Мы используем AVAudioRecorder на iOS и MediaRecorder на Android.
Импорт внешнего файла. Получили 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 — не единственный вариант?
Whisper API: 10-секундное сообщение обрабатывается за 0.5–1.5 с. 1-минутное — 3–8 с. Это время обработки на серверах OpenAI + сеть. Для пользователя неплохо, если показывать прогресс.
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 API | 0.5–8 с | Отличное | Плата за минуту | Данные уходят на сервер |
| Deepgram Nova-2 | <300 мс | Отличное | Выше | Данные уходят на сервер |
| Локальный Whisper (GPU) | 2–4 с на минуту | Отличное | Только железо | Полная локальность |
| SFSpeechRecognizer (iOS) | мгновенно | Среднее | Бесплатно | Полная локальность |
Как отобразить транскрипт с таймстампами?
Простая транскрипция — просто текст. Хорошая транскрипция на мобильном:
- Интерактивный текст с таймстампами: нажал слово → аудио прыгает к этому моменту
- Пунктуация (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 ошибся.
Что входит в работу
- Исходный код модуля транскрибации для iOS и Android
- Документация по архитектуре и REST API (если серверная часть)
- Доступы к сервисам (OpenAI, Deepgram) с готовыми ключами
- Обучение команды и консультации на этапе интеграции
- Поддержка 24/7 после запуска
Как внедрить транскрибацию: пошаговый план
- Анализ — обсуждаем сценарии использования, стек, требования к latency и приватности.
- Проектирование — архитектура захвата, транскрибации и отображения.
- Реализация — интеграция Whisper/Deepgram, код для iOS/Android, серверная конвертация.
- Тестирование — проверка на реальных записях, оптимизация под ваш кейс.
- Деплой — выкладка в App Store и Google Play, настройка мониторинга.
- Документация и обучение — передаём код, инструкции, обучаем команду.
- Поддержка — гарантируем стабильность 24/7 после запуска.
Сроки и стоимость
| Этап | Срок |
|---|---|
| Захват аудио + импорт файлов | 3–5 дней |
| Серверная транскрипция (Whisper) + прогресс | 5–7 дней |
| Постобработка и форматирование | 2–3 дня |
| Мобильный UI с интерактивным транскриптом | 5–7 дней |
| Опционально: стриминг, локальный SFSpeechRecognizer | +3–5 дней |
Базовая транскрипция через Whisper с простым текстовым отображением — 1–2 недели. Полноценный инструмент с интерактивным текстом, таймстампами и постобработкой — 3–4 недели. Стоимость интеграции рассчитывается индивидуально.
Свяжитесь с нами для бесплатной оценки вашего проекта. Закажите демо-версию протестировать на реальных данных.
— Whisper API documentation (OpenAI)







