Реалізація автоматичного транскрибування Zoom, Google Meet, Teams
Ритейл-мережа з 200 магазинів проводить 50 нарад на тиждень. Ручні протоколи забирають 20 годин. Ми автоматизували розшифровку зустрічей: інтеграція з Zoom, Google Meet і Teams, STT з діаризацією, сумаризація зустрічей та структурований протокол наради під ключ. Наша компанія має понад 5 років досвіду в AI/ML та виконала більше 30 проєктів з транскрибації для банків, ритейлу та IT. Замовник економить 15 годин на тиждень на протоколюванні — це близько 80% часу, що для мережі з 200 магазинів означає економію близько 150 000 грн на місяць. Гарантуємо SLA 99.9% та конфіденційність (NDA).
Типові проблеми: вбудовані транскрипції платформ дають низьку точність при шумі або акцентах (до 70% помилок при накладанні мовлення), не розрізняють спікерів, не формують протокол зустрічі. Зустрічі без протоколу втрачають завдання та рішення. Наше рішення усуває ці вузькі місця: точність розпізнавання мови досягає 95%, діаризація спікерів працює навіть при накладанні голосів, а NLP-моделі для бізнесу вилучають ключові рішення та завдання. Ми надаємо послуги з автоматичного транскрибування, включаючи Zoom транскрипцію, Google Meet транскрибацію, Teams транскрипцію, STT конференцій та сумаризацію зустрічей.
Як отримувати аудіо з конференцій без затримок?
Використовуємо три підходи: завантаження запису через API (затримка 5–10 хв), webhooks (автозапуск після зустрічі, <1 хв) та вбудовані боти (реальний час). Вибір залежить від вимог до затримки та складності інтеграції. Для корпоративних клієнтів з високими вимогами до швидкості рекомендуємо webhooks — вони забезпечують автоматичний запуск обробки одразу після завершення зустрічі.
Завантаження запису через API — простий спосіб із затримкою до завершення зустрічі. Підходить для постобробки:
# Zoom API для завантаження записів
import requests
def download_zoom_recording(meeting_id: str, token: str) -> bytes:
recordings = requests.get(
f"https://api.zoom.us/v2/meetings/{meeting_id}/recordings",
headers={"Authorization": f"Bearer {token}"}
).json()
audio_file = next(
f for f in recordings["recording_files"]
if f["file_type"] == "M4A" # тільки аудіо
)
return requests.get(audio_file["download_url"]).content
Zoom Webhooks — автозапуск після завершення зустрічі:
@app.post("/zoom/webhook")
async def zoom_webhook(request: Request):
data = await request.json()
if data["event"] == "recording.completed":
meeting_id = data["payload"]["object"]["id"]
asyncio.create_task(process_meeting_recording(meeting_id))
Вбудовані боти — для платформ, де доступна установка додатків (Zoom Apps, Teams Bot).
| Підхід | Затримка | Складність | Вимоги |
|---|---|---|---|
| Download API | 5–10 хв | Низька | API ключ, сховище |
| Webhook | <1 хв | Середня | Сервер, webhook endpoint |
| Bot | Реальний час | Висока | Платформа підтримує |
Чому важлива діаризація спікерів?
Діаризація спікерів — задача визначення «хто коли говорить». Без неї протокол втрачає контекст: незрозуміло, хто прийняв рішення або поставив завдання. Наш метод в 2 рази точніший стандартних рішень (наприклад, вбудованої Zoom транскрипції) для зустрічей з накладанням голосів. Точність 95% для груп до 10 учасників. (Джерело: Wikipedia)
Транскрибація з діаризацією
async def transcribe_meeting(audio_path: str, participants: list[str] = None) -> dict:
transcriber = CallTranscriber()
result = await transcriber.transcribe_call(audio_path)
protocol = await generate_meeting_protocol(result, participants)
return protocol
async def generate_meeting_protocol(transcript: dict, participants: list) -> dict:
"""Генеруємо структурований протокол через LLM"""
full_text = "\n".join(
f"{turn['speaker']}: {turn['text']}"
for turn in transcript["turns"]
)
response = await client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "system",
"content": "Створи протокол наради з розділами: Порядок денний, Ключові рішення, Завдання (з відповідальними та термінами), Наступна зустріч."
}, {"role": "user", "content": full_text}]
)
return {
"summary": response.choices[0].message.content,
"transcript": transcript,
"participants": participants,
"duration": transcript["duration"]
}
Інтеграція з Microsoft Teams через Graph API
# Завантаження запису Teams через Microsoft Graph
def get_teams_recording(meeting_id: str, token: str) -> bytes:
recordings = requests.get(
f"https://graph.microsoft.com/v1.0/me/onlineMeetings/{meeting_id}/recordings",
headers={"Authorization": f"Bearer {token}"}
).json()
Стек технологій: PyTorch для моделей діаризації, OpenAI Whisper для STT, LangChain для оркестрації LLM, Pinecone для векторного пошуку по транскриптах. Все розгортається в ізольованому контурі клієнта.
Що входить у роботу
- Інтеграція з однією платформою (Zoom, Meet або Teams).
- Налаштування автоматичного запуску транскрибації після зустрічі.
- STT з діаризацією (до 10 спікерів).
- Генерація протоколу (порядок денний, рішення, завдання).
- Веб-інтерфейс для перегляду та пошуку по транскриптах.
- REST API для експорту протоколів.
- Інтеграція з календарем (Google Calendar) для автоматичного отримання посилань.
- Документація та навчання 2 користувачів.
- Підтримка 2 тижні.
Порівняння з альтернативами
| Рішення | Точність STT | Діаризація | Сумаризація | Інтеграція |
|---|---|---|---|---|
| Вбудована в Zoom | 60-70% | Немає (тільки список учасників) | Немає | Тільки Zoom |
| Otter.ai | 80-85% | Є (до 5) | Базова | Обмежена |
| Наше рішення | 95% | Є (до 10) | Бізнес-контекст | Zoom, Meet, Teams, API |
Процес впровадження
- Аналітика: з'ясовуємо платформи, кількість зустрічей, чи потрібна інтеграція з CRM.
- Інтеграція: налаштовуємо webhooks, OAuth, отримуємо доступи.
- Тестування: прогоняємо 10 записів, калібруємо модель під акценти та шуми.
- Деплой: розгортаємо на сервері клієнта або в хмарі.
- Навчання: 2 години онлайн-тренінгу для команди.
- Підтримка: 2 тижні після запуску.
Терміни та вартість
Інтеграція з однією платформою — від 1 тижня. З двома–трьома — до 3 тижнів. Вартість розраховується індивідуально, залежить від кількості зустрічей на місяць та додаткових функцій (наприклад, зв'язок з CRM). Для орієнтиру: ручне розшифрування однієї зустрічі тривалістю 1 година обходиться компанії в середньому в 2000–3000 гривень — автоматизація скорочує ці витрати на 80%. Зв'яжіться з нами для безкоштовної оцінки вашого проєкту — ми підготуємо пропозицію за 2 дні. Замовте впровадження, щоб заощадити до 80% часу на протоколюванні.
Документація Zoom API — використовуємо для отримання записів. За нашими оцінками, одна нарада тривалістю 1 година обходиться компанії в середньому в 2500 гривень витрат на ручне протоколювання, що робить автоматизацію економічно виправданою.







