# Cómo transcribir una grabación de Zoom, Meet o Teams identificando quién habla

> Exporta el archivo de la reunión en MP4 o M4A y manda su URL a POST /transcribe con include_diarization en true. Cada intervención te llegará con su etiqueta speaker y las marcas de inicio y fin. Con ese texto ya etiquetado, puedes pedirle a tu LLM que redacte el acta y saque la lista de tareas. Ten en cuenta que la API trabaja sobre archivos grabados, no entra como bot a las llamadas en vivo.

Última actualización: 2026-10-18 · HTML: https://console.kolwrite.com/es/guides/meeting-transcription-api

## Transcribir la grabación separando a los hablantes

Sube el archivo con `POST /upload` (admite hasta 100 MiB; para grabaciones más largas, extrae antes el audio con ffmpeg) o pasa cualquier URL pública, y luego lanza el trabajo. El parámetro `num_speakers` es opcional: úsalo cuando sepas cuántas personas hablaron.

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

Para saber cuándo termina, puedes ir consultando `GET /transcribe/{jobId}` o pasar un `webhook_url` para que te avisemos al servidor, algo bastante más cómodo en reuniones largas.

Cada intervención viene con su hablante, los tiempos y el desglose por palabra:

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

## Ponerle nombre a cada hablante

Los hablantes vienen con etiquetas genéricas (`Speaker 1`, `Speaker 2`). Asociar cada una con una persona te toca a ti, por ejemplo guiándote por la lista de asistentes o viendo quién se presenta primero. Con un pequeño mapeo en tu código queda bien claro:

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

## Sacar el acta y las tareas pendientes

KolWrite te entrega el texto con los tiempos y quién dijo qué; del resumen y las tareas se encarga el LLM que uses habitualmente. Conviene dejar las marcas de tiempo en el texto que le pasas al modelo para poder enlazar cada tarea con el minuto exacto de la grabación, y pedirle en el prompt que se ciña estrictamente a lo que dice la transcripción.

## Llamadas con un participante por canal

Si tienes una llamada grabada en estéreo, con el agente a la izquierda y el cliente a la derecha, no te hace falta usar diarización: te basta con separar por canal. Este modo admite entre 2 y 8 canales y no es compatible con `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"
}
```

Si la gente se pisa al hablar, cambia `standard` por `overlap`. Con esa opción, la tarifa del modelo se cobra sobre el valor más alto entre lo que dura la grabación y el total de habla detectada en los canales.

## Cuánto cuesta

| Trabajo | Modelo | Coste |
| --- | --- | --- |
| Reunión de una hora con identificación de hablantes | `oracle` | 1,44 US$ |
| La misma reunión con diarización Pro para audios complicados | `oracle` + `pro_diarization` | 1,68 US$ |
| 30 minutos de audio complicado con diarización Pro | `oracle_max` + `pro_diarization` | 1,92 US$ |

Ni la diarización normal ni la separación estándar por canales tienen coste extra. Puedes ver las tarifas en [/llms/pricing.md](https://console.kolwrite.com/llms/pricing.md).

## Cosas a tener en cuenta antes de dar el texto por bueno

- En las reuniones se tratan datos personales. Avisa a los asistentes de que vas a grabar y transcribir la sesión, y protege los textos resultantes igual que proteges los archivos de audio.
- Cuando la gente habla a la vez, hay timbres de voz muy parecidos o el micrófono es malo, cuesta más distinguir quién es quién. En grabaciones difíciles, prueba a activar `pro_diarization` o a separar por canales.
- Si toda la reunión es en un mismo idioma, pasa el código en `language`. La detección automática solo asigna un idioma para todo el archivo.
- Conviene que alguien repase los nombres propios, los números y los acuerdos antes de dar por buena el acta y ponerse a trabajar sobre ella.

## Preguntas y respuestas

### ¿Cómo transcribo una grabación de Zoom con los nombres de los hablantes?

Descarga la grabación, envíala a `POST /transcribe` con `include_diarization: true` y reemplaza en tu código `Speaker 1`, `Speaker 2` por los nombres reales. La API separa a los hablantes con etiquetas, pero asignarles un nombre depende de ti.

### ¿Puede unirse a mi llamada de Google Meet o Teams?

No. KolWrite transcribe las grabaciones que tú le envías; no funciona en tiempo real ni entra en reuniones en directo.

### ¿Escribe el acta de la reunión y las tareas pendientes?

Recibes la transcripción con los tiempos y los hablantes identificados. A partir de ese texto, tu propio LLM se encarga de redactar el acta y extraer las tareas.

### ¿Cómo se gestionan las llamadas telefónicas con dos hablantes?

Si cada hablante va en un canal distinto, usa `channel_speaker_separation` con `channel_labels` en vez de la diarización.

### ¿Qué idiomas admite para las reuniones?

Cualquiera de los 100 idiomas de la [lista de idiomas](https://console.kolwrite.com/es/languages/), incluidos el hebreo y el árabe. Si toda la reunión es en un mismo idioma, indícalo en el parámetro `language`.

## Páginas relacionadas

- [API de marcas de tiempo por palabra](https://console.kolwrite.com/es/guides/word-timestamps-api)
- [Herramienta de transcripción para agentes de IA](https://console.kolwrite.com/es/guides/transcription-tool-for-ai-agents)
- [Centros de llamadas y ventas](https://console.kolwrite.com/es/use-cases/call-centers)
- [Empresas](https://console.kolwrite.com/es/use-cases/enterprise)
- [Documentación de la API](https://console.kolwrite.com/es/public_api_docs)

---
Obtener una clave de API: https://console.kolwrite.com/auth?lang=es · Documentación de la API: https://console.kolwrite.com/es/public_api_docs · llms.txt: https://console.kolwrite.com/llms.txt
