AI-суммаризація аудіозаписів (зустрічей, дзвінків) в мобільних додатках
Записали дзвінок — отримали трансгрипцію з задачами, рішеннями та відповідальними. Без пересторення запису, без ручних заміток. Реалізувати це правильно — не три рядки коду, а архітектурне рішення з кількома варіантами компромісів.
Pipeline від аудіофайла до суммарі
Аудіофайл (MP3/M4A/WAV)
↓ Whisper API / Deepgram / AssemblyAI
Трансгрипція з таймстампами + діаризація (хто говорив)
↓ LLM (GPT-4o / Claude)
Структуроване суммарі (рішення, задачі, відповідальні, дедлайни)
Три ключові вибори: провайдер транскрипції, діаризація спікерів, формат суммарі.
Транскрипція: Whisper проти спеціалізованих сервісів
OpenAI Whisper API — дешево ($0.006/хв), гарна якість на чистому аудіо, але без діаризації. Повертає один текстовий потік без розділення по спікерам. Для зустрічі з 5 людьми — незручно.
AssemblyAI — діаризація, мітки спікерів, авто-розділи, автоматичне визначення задач. Дорожче Whisper (від $0.012/хв), але економить розробку. SDK для Python, JS, Java.
Deepgram — найшвидший (latency < 1с на хвилину для потокової), діаризація, підтримка російської та української, on-prem варіант для приватних даних.
Azure Speech Services — якщо вже використовуєте Azure-інфраструктуру, інтегрується природно.
Для корпоративного додатка з записами переговорів — AssemblyAI або Deepgram. Для простого конспекту особистих голосових — Whisper достатньо.
Діаризація та її обмеження
Speaker diarization визначає, хто говорив у кожен момент. Результат:
{
"words": [
{"text": "Давайте", "start": 0.5, "end": 0.9, "speaker": "A"},
{"text": "обсудимо", "start": 0.9, "end": 1.4, "speaker": "A"},
{"text": "дедлайн", "start": 2.1, "end": 2.6, "speaker": "B"}
],
"utterances": [
{"speaker": "A", "text": "Давайте обсудимо дедлайн по проекту X", "start": 0.5, "end": 5.2},
{"speaker": "B", "text": "Нам потрібно ще дві тижні мінімум", "start": 6.1, "end": 9.8}
]
}
Проблеми діаризації: погано працює, коли кілька людей говорять одночасно; не знає імен (тільки «Speaker A», «Speaker B»); путається при подібних голосах. У UI потрібна можливість переименувати спікерів вручну: «Speaker A» → «Іван», «Speaker B» → «Марія».
Підготовка трансгрипції для суммаризації
Сирий трансгрипт з таймстампами — надлишковий для LLM. Форматуємо в читаний діалог:
def format_transcript(utterances: list) -> str:
lines = []
for u in utterances:
speaker = u.get("speaker_name") or f"Учасник {u['speaker']}"
lines.append(f"**{speaker}** [{u['start']:.0f}s]: {u['text']}")
return "\n".join(lines)
Таймстампи в дужках допомагають моделі зрозуміти, що «на початку», а що «в кінці» зустрічі.
Промпт для структурованого суммарі
Ти аналізуєш трансгрипцію робочої зустрічі.
Видобудь:
1. ТЕМА зустрічі (1 речення)
2. КЛЮЧОВІ РІШЕННЯ (список прийнятих рішень)
3. ЗАДАЧИ (таблиця: задача | відповідальний | дедлайн)
4. ВІДКРИТІ ПИТАННЯ (що залишилося нерозв'язаним)
5. НАСТУПНІ ЗУСТРІЧИ (якщо упомянуті)
Відповідай тільки на основі трансгрипції. Якщо інформації немає — не вигадуй.
Формат: Markdown.
ТРАНСГРИПЦІЯ:
{transcript}
Структурований JSON-вивід (через response_format) кращий для програмної обробки, Markdown — кращий для відображення користувачу. Для мобільного додатка використовуємо Markdown з рендерером.
Обробка довгих записів
Годинна зустріч → ~6000–8000 слів трансгрипції → ~8000–10000 токенів. Влізає в контекст GPT-4o напрямку. Дворогодинна зустріч — вже 16000–20000 токенів, теж влізає, але коштує дорожче.
Для записів > 3 годин застосовуємо той же Map-Reduce: суммаризуємо по 30-хвилинних блоках, потім об'єднуємо. Зберігаємо таймстампи — користувач може кликнути на задачу та перейти до потрібного моменту запису.
Мобільний UX суммарі зустрічі
Карточка суммарі на мобільному:
- Заголовок з темою та датою зустрічі
- Учасники (якщо визначені діаризацією)
- Блок «Рішення» — 3–7 буллетів
- Таблиця задач з чекбоксами (користувач може позначити як виконане)
- «Відкриті питання» — коллапс
- Кнопка «Слухати» з переходом до аудіофайла
- Кнопка «Поділитися» — відправка суммарі як тексту
Задачи з суммарі можна експортувати в Jira, Notion, Todoist — через deep link або share sheet.
Етапи та термін
Вибір провайдера транскрипції → інтеграція API (upload + polling результату) → форматування трансгрипції → LLM для суммарі → мобільний UI карточки → переименування спікерів → експорт задач → тестування на реальних записах зустрічей.
MVP з Whisper + базовим суммарі — 2–3 тижні. Повнофункціональний інструмент з діаризацією, переименуванням спікерів, експортом задач та мобільним UI — 5–7 тижнів.







