# Как расшифровать запись из Zoom, Meet или Teams с разметкой по спикерам

> Выгрузите запись в MP4 или M4A и передайте её URL в POST /transcribe, указав include_diarization со значением true. В ответе у каждой реплики будет метка speaker, а также время начала и конца. Эту размеченную расшифровку можно скормить вашей LLM, чтобы она собрала протокол и список задач. Сам API работает только с переданными файлами и не подключается к живым встречам.

Обновлено: 2026-10-18 · HTML: https://console.kolwrite.com/ru/guides/meeting-transcription-api

## Расшифровка с разделением по спикерам

Загрузите файл через `POST /upload` (до 100 MiB; из длинных записей лучше сначала вытащить аудиодорожку через ffmpeg) или передайте любой публичный URL, а затем запустите задачу. Параметр `num_speakers` указывать не обязательно, но если вы знаете, сколько человек говорило, передайте его.

```bash
curl https://app.kolwrite.com/transcribe \
  -H "x-api-key: $KOLWRITE_API_KEY" -H "Content-Type: application/json" \
  -d '{"audio_url": "https://example.com/weekly-sync.mp4", "model": "oracle", "language": "auto",
       "include_diarization": true, "num_speakers": 4, "output_format": "json"}'
```

Проверяйте статус через `GET /transcribe/{jobId}` или укажите `webhook_url`, чтобы мы сами прислали уведомление на ваш сервер, когда длинная запись обработается.

В каждом возвращённом фрагменте указан спикер, таймкоды и отдельные слова:

```json
{
  "jobId": "34c63d45-4cb5-473b-bc60-25c175e69c57",
  "status": "COMPLETED",
  "result": {
    "language": "en",
    "segments": [
      {
        "start": 1.0,
        "end": 3.75,
        "text": "Hello everyone and welcome to the show.",
        "speaker": "Speaker 1",
        "words": [
          { "start": 1.0, "end": 1.35, "word": "Hello" },
          { "start": 1.4, "end": 1.75, "word": "everyone" }
        ]
      }
    ]
  }
}
```

## Подпишите говорящих

Спикеры размечаются обезличенно: `Speaker 1`, `Speaker 2` и так далее. Сопоставить их с реальными людьми нужно на вашей стороне, например по списку участников созвона или по первым репликам, где люди представляются. Проще всего заменить метки на имена прямо в коде:

minutes.py

```python
# minutes.py — turn the diarized result into text an LLM can summarize
NAMES = {"Speaker 1": "Dana", "Speaker 2": "Omar", "Speaker 3": "Lee"}  # you decide who is who


def clock(seconds):
    m, s = divmod(int(seconds), 60)
    h, m = divmod(m, 60)
    return f"{h}:{m:02}:{s:02}" if h else f"{m}:{s:02}"


def meeting_text(result):
    lines = []
    for segment in result["segments"]:
        who = NAMES.get(segment.get("speaker"), segment.get("speaker", "Unknown"))
        lines.append(f'[{clock(segment["start"])}] {who}: {segment["text"]}')
    return "\n".join(lines)


PROMPT = """Below is a meeting transcript with timestamps. Write: (1) a five-line summary,
(2) decisions, (3) action items as "owner - task - [timestamp]". Use only what is in the transcript.

"""
# Send PROMPT + meeting_text(result) to the model you use.
```

## Протокол встречи и список задач

KolWrite отдаёт расшифровку с таймкодами и разметкой спикеров, а резюме и список задач составляет та LLM, которой вы уже пользуетесь. Не удаляйте таймкоды из текста, чтобы у каждой задачи была привязка к моменту, когда её озвучили, и задайте модели инструкцию опираться только на текст расшифровки.

## Многоканальные записи звонков (один спикер на канал)

Если телефонный звонок записан в стерео (например, оператор в левом канале, а клиент в правом), диаризация не нужна, проще разделить спикеров по каналам. Этот режим поддерживает от 2 до 8 каналов и не работает одновременно с `include_diarization`.

```json
{
  "audio_url": "https://example.com/support-call.wav",
  "model": "oracle",
  "channel_speaker_separation": "standard",
  "channel_labels": { "0": "Agent", "1": "Customer" },
  "output_format": "json"
}
```

Если собеседники часто перебивают друг друга и говорят одновременно, выберите режим `overlap` вместо `standard`. Оплата по тарифу выбранной модели при этом посчитается по большему из двух значений: общей длительности файла или суммарной длительности речи, найденной во всех каналах.

## Сколько это стоит

| Задача | Модель | Стоимость |
| --- | --- | --- |
| Часовая встреча с разметкой спикеров | `oracle` | 1,44 $ |
| Та же встреча, но с диаризацией Pro для сложного звука | `oracle` + `pro_diarization` | 1,68 $ |
| 30 минут сложного звука с диаризацией Pro | `oracle_max` + `pro_diarization` | 1,92 $ |

Базовая диаризация и стандартное разделение каналов бесплатны. Подробные тарифы: [/llms/pricing.md](https://console.kolwrite.com/llms/pricing.md).

## Что важно учесть перед запуском в работу

- В записях встреч содержатся персональные данные. Предупреждайте участников о том, что разговор записывается и расшифровывается, а текстовые расшифровки храните так же бережно, как и сами записи.
- Диаризация чаще всего ошибается, когда люди говорят одновременно, у них похожие голоса или плохой микрофон. На сложных записях включайте `pro_diarization` или разводите участников по разным аудиоканалам.
- Если вся встреча проходит на одном языке, передайте его код в параметре `language` явно (автоопределение выбирает один язык на весь файл).
- Прежде чем брать протокол в работу, человек должен проверить в нём все имена, числа и принятые решения.

## Вопросы и ответы

### Как расшифровать запись Zoom с именами говорящих?

Скачайте запись, передайте её в `POST /transcribe` с параметром `include_diarization: true`, а затем в своём коде свяжите метки `Speaker 1` и `Speaker 2` с именами. API размечает говорящих, а привязкой к именам управляете вы.

### Может ли сервис сам подключиться к звонку в Google Meet или Teams?

Нет. KolWrite работает только с готовыми файлами, которые вы в него загружаете. Он не расшифровывает речь на лету и не умеет подключаться к текущим встречам.

### Составляет ли он протокол и список задач?

Вы получите расшифровку с таймкодами и метками говорящих. А протокол встречи и список задач по этому тексту соберет уже ваша собственная LLM.

### Как обрабатывать телефонные звонки с двумя собеседниками?

Если каждый голос записан в отдельную дорожку, вместо диаризации лучше включить `channel_speaker_separation` и задать `channel_labels`.

### На каких языках можно расшифровывать встречи?

Доступны все 100 языков из [нашего списка](https://console.kolwrite.com/ru/languages/), включая иврит и арабский. Если вся встреча проходит на одном языке, укажите его в параметре `language`.

## Связанные страницы

- [API временных меток для отдельных слов](https://console.kolwrite.com/ru/guides/word-timestamps-api)
- [Инструмент транскрипции для ИИ-агентов](https://console.kolwrite.com/ru/guides/transcription-tool-for-ai-agents)
- [Колл-центры и продажи](https://console.kolwrite.com/ru/use-cases/call-centers)
- [Компании](https://console.kolwrite.com/ru/use-cases/enterprise)
- [Документация API](https://console.kolwrite.com/ru/public_api_docs)

---
Получить ключ API: https://console.kolwrite.com/auth?lang=ru · Документация API: https://console.kolwrite.com/ru/public_api_docs · llms.txt: https://console.kolwrite.com/llms.txt
