# Como transcrever gravações do Zoom, Meet ou Teams identificando quem falou

> Exporte a gravação em MP4 ou M4A e envie a URL para POST /transcribe com include_diarization definido como true. Cada trecho retorna com o rótulo speaker e os tempos de início e fim. Com essa transcrição em mãos, basta enviá-la ao seu LLM para montar a ata e os itens de ação. Vale notar que a API trabalha sobre arquivos gravados; ela não entra em chamadas ao vivo.

Última atualização: 2026-10-18 · HTML: https://console.kolwrite.com/pt/guides/meeting-transcription-api

## Transcreva a gravação separando os participantes

Faça o upload do arquivo via `POST /upload` (até 100 MiB; para gravações mais longas, extraia o áudio com o ffmpeg) ou informe qualquer URL pública para iniciar o trabalho. O parâmetro `num_speakers` é opcional: preencha quando você souber quantas pessoas falaram.

```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"}'
```

Acompanhe o status em `GET /transcribe/{jobId}` ou configure `webhook_url` para ser avisado no seu servidor assim que uma reunião longa terminar de processar.

Cada trecho devolve o participante, os tempos e as palavras:

```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" }
        ]
      }
    ]
  }
}
```

## Dê nome a quem fala

Os falantes vêm com identificadores genéricos (`Speaker 1`, `Speaker 2`). Você é quem define quem é quem, cruzando com a lista de participantes ou vendo quem se apresenta primeiro. Basta um mapeamento simples no código para deixar os nomes claros:

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.
```

## Ata e itens de ação

O KolWrite entrega a transcrição com os tempos e a identificação de quem falou; o resumo e a lista de tarefas ficam por conta do LLM que você já usa. Deixe os carimbos de tempo no texto enviado ao prompt para que cada tarefa aponte para o minuto exato da conversa, e oriente o modelo a se basear apenas no que está escrito ali.

## Gravações de chamadas com uma pessoa por canal

Quando a chamada é gravada em estéreo (por exemplo, atendente no canal esquerdo e cliente no direito), você não precisa de diarização: basta separar por canal. Esse modo aceita de 2 a 8 canais e não pode ser usado junto com `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"
}
```

Quando as pessoas falam ao mesmo tempo, troque `standard` por `overlap`. Nesse modo, a tarifa do modelo é cobrada sobre o que for maior: a duração da gravação ou o tempo total de fala detectado nos canais.

## Quanto custa

| Trabalho | Modelo | Custo |
| --- | --- | --- |
| Reunião de uma hora com identificação de falantes | `oracle` | US$ 1,44 |
| A mesma reunião usando diarização Pro para áudio difícil | `oracle` + `pro_diarization` | US$ 1,68 |
| 30 minutos, áudio difícil, com diarização Pro | `oracle_max` + `pro_diarization` | US$ 1,92 |

A diarização comum e a separação padrão por canais não têm custo extra. Veja os preços em [/llms/pricing.md](https://console.kolwrite.com/llms/pricing.md).

## Cuidados antes de usar o resultado

- Reuniões têm dados pessoais. Avise os participantes que a conversa será gravada e transcrita, e proteja o texto gerado com o mesmo rigor dedicado aos arquivos de áudio.
- Vozes parecidas, microfones ruins e gente falando ao mesmo tempo dificultam a separação de quem está falando. Quando o áudio estiver difícil, teste o `pro_diarization` ou a separação por canais.
- Se a reunião inteira for em um único idioma, passe o código em `language`. A detecção automática escolhe apenas um idioma para o arquivo todo.
- Sempre vale revisar nomes próprios, números e decisões antes que a equipe saia executando o que está na ata.

## Perguntas e respostas

### Como transcrevo uma gravação do Zoom com o nome dos participantes?

Baixe a gravação e mande para `POST /transcribe` com `include_diarization: true`. A API identifica quem fala como `Speaker 1`, `Speaker 2` e assim por diante. Depois, você faz a associação com os nomes reais no seu próprio código.

### Ela entra na minha chamada do Google Meet ou do Teams?

Não. O KolWrite só transcreve gravações enviadas por você. Ele não funciona em tempo real nem participa de reuniões ao vivo.

### Ela gera a ata e os itens de ação?

Ela entrega a transcrição com os tempos e a identificação dos falantes. Quem redige a ata e os itens de ação a partir desse texto é o seu próprio LLM.

### Como lidar com chamadas de telefone com duas pessoas?

Se a voz de cada pessoa estiver em um canal separado, use `channel_speaker_separation` com `channel_labels` no lugar da diarização.

### Quais idiomas funcionam nas reuniões?

Todos os 100 idiomas da nossa [lista de idiomas](https://console.kolwrite.com/pt/languages/), incluindo árabe e hebraico. Se a reunião inteira for em uma única língua, passe esse valor no parâmetro `language`.

## Páginas relacionadas

- [API de carimbos de tempo por palavra](https://console.kolwrite.com/pt/guides/word-timestamps-api)
- [Ferramenta de transcrição para agentes de IA](https://console.kolwrite.com/pt/guides/transcription-tool-for-ai-agents)
- [Centrais de atendimento e chamadas de vendas](https://console.kolwrite.com/pt/use-cases/call-centers)
- [Empresas](https://console.kolwrite.com/pt/use-cases/enterprise)
- [Documentação da API](https://console.kolwrite.com/pt/public_api_docs)

---
Obter uma chave de API: https://console.kolwrite.com/auth?lang=pt · Documentação da API: https://console.kolwrite.com/pt/public_api_docs · llms.txt: https://console.kolwrite.com/llms.txt
