> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Edición de transcripciones

> **Note**
>
> **Guía práctica** · Da por hecho que has completado la guía de
> [streaming del lado del cliente](/docs/es/eleven-api/guides/how-to/speech-to-text/realtime/client-side-streaming) o
> [streaming del lado del servidor](/docs/es/eleven-api/guides/how-to/speech-to-text/realtime/server-side-streaming).

## Descripción general

> **Warning**
>
> La edición de transcripciones es una función experimental y añade un recargo del 30 % al coste base de la transcripción,
> facturado por un mínimo de 10 segundos de audio por cada transcripción confirmada. Consulta la [página de precios de la API](https://elevenlabs.io/pricing?price.section=speech_to_text\&price.sections=speech_to_text,speech_to_text#pricing-table)
> para obtener información detallada sobre los precios.

La transcripción en tiempo real puede aplicar una instrucción de edición en lenguaje natural a cada transcripción confirmada; por ejemplo, para escribir fechas pronunciadas con un formato fijo o para desarrollar abreviaturas y acrónimos. La instrucción se envía una vez al abrir la conexión, y cada transcripción confirmada va seguida de un evento `edited_transcript` independiente con el texto editado.

Las transcripciones parciales nunca se editan. El evento `committed_transcript` tampoco cambia, por lo que las integraciones existentes siguen funcionando cuando activas esta función.

> **Warning**
>
> La edición de transcripciones no se puede combinar con `entity_detection`. Las conexiones que configuran ambas opciones
> se rechazan con un error `invalid_request`.

## Activar la edición de transcripciones

Envía la instrucción con la opción `transcriptEdit` al conectarte (el parámetro de consulta `transcript_edit` de la API de WebSocket). La instrucción puede tener hasta 2000 caracteres. Consulta la [guía de edición de transcripciones por lotes](/docs/es/eleven-api/guides/how-to/speech-to-text/batch/transcript-editing#writing-instructions) para obtener orientación sobre cómo escribir instrucciones.

En todos los SDK, las transcripciones editadas llegan mediante el evento `RealtimeEvents.EDITED_TRANSCRIPT`.

### Lado del cliente

Usa `@elevenlabs/client` en el navegador con un token de un solo uso emitido por tu servidor, como se describe en la [guía de streaming del lado del cliente](/docs/es/eleven-api/guides/how-to/speech-to-text/realtime/client-side-streaming).

```typescript
import { Scribe, RealtimeEvents } from "@elevenlabs/client";

// Fetch a single-use token from your server first
const response = await fetch("/scribe-token", yourAuthHeaders);
const { token } = await response.json();

const connection = Scribe.connect({
  token,
  modelId: "scribe_v2_realtime",
  transcriptEdit: "Write all dates in ISO 8601 format (YYYY-MM-DD)",
  microphone: {
    echoCancellation: true,
    noiseSuppression: true,
  },
});

connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data) => {
  console.log("Committed:", data.text);
});

connection.on(RealtimeEvents.EDITED_TRANSCRIPT, (data) => {
  console.log("Edited:", data.edited_text);
});
```

### Lado del servidor

Usa el SDK oficial en tu servidor, como se describe en la [guía de streaming del lado del servidor](/docs/es/eleven-api/guides/how-to/speech-to-text/realtime/server-side-streaming#configure-the-sdk). Solo difieren de esa guía la opción y el controlador de eventos; el envío de audio y el cierre de la conexión funcionan igual.

```python
import asyncio
import os
from dotenv import load_dotenv
from elevenlabs import AudioFormat, ElevenLabs, RealtimeAudioOptions, RealtimeEvents

load_dotenv()

async def main():
    elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))

    connection = await elevenlabs.speech_to_text.realtime.connect(RealtimeAudioOptions(
        model_id="scribe_v2_realtime",
        audio_format=AudioFormat.PCM_16000,
        sample_rate=16000,
        transcript_edit="Write all dates in ISO 8601 format (YYYY-MM-DD)",
    ))

    def on_committed_transcript(data):
        print(f"Committed: {data.get('text', '')}")

    def on_edited_transcript(data):
        print(f"Edited: {data.get('edited_text', '')}")

    connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, on_committed_transcript)
    connection.on(RealtimeEvents.EDITED_TRANSCRIPT, on_edited_transcript)

    # Send audio chunks as shown in the server-side streaming guide, then close.
    await connection.close()

if __name__ == "__main__":
    asyncio.run(main())
```

```typescript
import { ElevenLabsClient, RealtimeEvents, AudioFormat } from "@elevenlabs/elevenlabs-js";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

const connection = await elevenlabs.speechToText.realtime.connect({
  modelId: "scribe_v2_realtime",
  audioFormat: AudioFormat.PCM_16000,
  sampleRate: 16000,
  transcriptEdit: "Write all dates in ISO 8601 format (YYYY-MM-DD)",
});

connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data) => {
  console.log("Committed:", data.text);
});

connection.on(RealtimeEvents.EDITED_TRANSCRIPT, (data) => {
  console.log("Edited:", data.edited_text);
});

// Send audio chunks as shown in the server-side streaming guide, then close.
```

## Recibir transcripciones editadas

Cuando está activada, cada transcripción confirmada va seguida de un evento `edited_transcript` que contiene el texto confirmado y su versión editada:

```json
{
  "message_type": "edited_transcript",
  "text": "our next meeting is on the twelfth of July twenty twenty-six",
  "edited_text": "our next meeting is on 2026-07-12"
}
```

Comportamiento que debes tener en cuenta:

* Las ediciones se aplican por segmento confirmado. El evento `edited_transcript` se emite poco después del evento `committed_transcript` correspondiente, ya que la edición se ejecuta de forma asíncrona. Puede llegar después de la siguiente transcripción parcial, y las ediciones de segmentos consecutivos pueden llegar fuera de orden. Usa el campo `text` para asociar una edición a su transcripción confirmada.
* Si no se han realizado ediciones en un segmento, `edited_text` es idéntico a `text`.
* Si no se puede generar una edición para un segmento, no se envía ningún evento `edited_transcript` para él. El evento `committed_transcript` no se ve afectado.
* Las marcas de tiempo por palabra en `committed_transcript_with_timestamps` describen el texto confirmado original, no el texto editado.

## Siguientes pasos

#### [Edición de transcripciones por lotes](/docs/es/eleven-api/guides/how-to/speech-to-text/batch/transcript-editing)

Orientación para redactar instrucciones y el formato de respuesta por lotes.

#### [Referencia de eventos](/docs/es/eleven-api/guides/how-to/speech-to-text/realtime/event-reference)

Lista completa de eventos y tipos de error de la API de Voz a Texto en tiempo real.