Реалізація автоматичного транскрибування Zoom/Google Meet/Teams Автотранскрибація відеоконференцій — популярний корпоративний кейс: із запису наради автоматично створюється структурований протокол з атрибуцією реплік учасникам та списком завдань. ### Підходи до отримання аудіо Варіант 1: Завантаження запису — простіше, із затримкою:```python
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** - автозапуск після закінчення зустрічі:python
@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** — вбудований у платформу транскриптор. ### Транскрибація з діаризацієюpython
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 APIpython
Скачивание записи 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







