Голосовые сообщения — самый неудобный формат для быстрого получения информации. Особенно в корпоративной переписке: минутный войс вместо одной строки текста. Мы решаем эту проблему встраиванием транскрибации в мобильное приложение. Пользователь говорит — приложение превращает речь в текст с точностью до 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)







