Implementing Automatic Transcription for Zoom/Google Meet/Teams Automatic transcription of video conferences is a popular corporate use case: a structured meeting transcript is automatically created from the recording, with attribution of remarks to participants and a list of tasks. ### Approaches to obtaining audio Option 1: Downloading the recording - simpler, with a delay:
# 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
```**Option 2: Zoom Webhooks** - auto-launch after meeting ends:```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))
```**Option 3: Zoom Apps / Teams Bot** - a built-in transcription platform. ### Transcription with diarization```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 via Graph API```python
# Скачивание записи 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
```Timeframe: Integration with one platform + transcription – 1 week. Universal system with logging – 2–3 weeks.







