Реализация автоматического транскрибирования Zoom/Google Meet/Teams

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Реализация автоматического транскрибирования Zoom/Google Meet/Teams
Средняя
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    854
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1051
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    827

Реализация автоматического транскрибирования Zoom/Google Meet/Teams

Автотранскрибация видеоконференций — популярный корпоративный кейс: из записи совещания автоматически создаётся структурированный протокол с атрибуцией реплик участникам и списком задач.

Подходы к получению аудио

Вариант 1: Скачивание записи — проще, с задержкой:

# 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

Вариант 2: 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))

Вариант 3: Zoom Apps / Teams Bot — встроенный в платформу транскриптор.

Транскрибация с диаризацией

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()
    # Скачиваем content_url

Сроки: интеграция с одной платформой + транскрипция — 1 неделя. Универсальная система с протоколированием — 2–3 недели.