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

# Modifica delle trascrizioni

> **Note**
>
> **Guida pratica** · Presuppone che tu abbia completato la guida sullo streaming
> [lato client](/docs/it/eleven-api/guides/how-to/speech-to-text/realtime/client-side-streaming) o
> [lato server](/docs/it/eleven-api/guides/how-to/speech-to-text/realtime/server-side-streaming).

## Panoramica

> **Warning**
>
> La modifica delle trascrizioni è una funzionalità sperimentale e aggiunge un supplemento del 30% al costo base della trascrizione, fatturato per almeno 10 secondi di audio per ogni trascrizione confermata. Consulta la [pagina dei prezzi API](https://elevenlabs.io/pricing?price.section=speech_to_text\&price.sections=speech_to_text,speech_to_text#pricing-table)
> per informazioni dettagliate sui prezzi.

La trascrizione in tempo reale può applicare un'istruzione di modifica in linguaggio naturale a ogni trascrizione confermata, ad esempio per scrivere le date pronunciate in un formato fisso o espandere abbreviazioni e acronimi. L'istruzione viene passata una volta all'apertura della connessione e ogni trascrizione confermata è seguita da un evento `edited_transcript` separato contenente il testo modificato.

Le trascrizioni parziali non vengono mai modificate. Anche l'evento `committed_transcript` non viene modificato, quindi le integrazioni esistenti continuano a funzionare quando attivi la funzionalità.

> **Warning**
>
> La modifica delle trascrizioni non può essere combinata con `entity_detection`. Le connessioni che impostano entrambe le opzioni vengono rifiutate con un errore `invalid_request`.

## Abilitare la modifica delle trascrizioni

Passa l'istruzione con l'opzione `transcriptEdit` durante la connessione (il parametro query `transcript_edit` dell'API WebSocket). L'istruzione può contenere fino a 2000 caratteri. Consulta la [guida alla modifica delle trascrizioni batch](/docs/it/eleven-api/guides/how-to/speech-to-text/batch/transcript-editing#writing-instructions) per indicazioni su come scrivere le istruzioni.

In tutti gli SDK, le trascrizioni modificate arrivano tramite l'evento `RealtimeEvents.EDITED_TRANSCRIPT`.

### Lato client

Usa `@elevenlabs/client` nel browser con un token monouso emesso dal tuo server, come descritto nella [guida allo streaming lato client](/docs/it/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);
});
```

### Lato server

Usa l'SDK ufficiale sul tuo server, come descritto nella [guida allo streaming lato server](/docs/it/eleven-api/guides/how-to/speech-to-text/realtime/server-side-streaming#configure-the-sdk). Rispetto a quella guida, cambiano solo l'opzione e il gestore dell'evento; l'invio dell'audio e la chiusura della connessione funzionano allo stesso modo.

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

## Ricevere le trascrizioni modificate

Quando è abilitata, ogni trascrizione confermata è seguita da un evento `edited_transcript` che contiene il testo confermato e la relativa versione modificata:

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

Comportamenti da tenere presenti:

* Le modifiche vengono applicate per ogni segmento confermato. L'evento `edited_transcript` viene emesso poco dopo il corrispondente evento `committed_transcript`, poiché la modifica viene eseguita in modo asincrono. Può arrivare dopo la trascrizione parziale successiva e le modifiche per segmenti consecutivi possono arrivare in ordine diverso. Usa il campo `text` per associare una modifica alla relativa trascrizione confermata.
* Se non è stata apportata alcuna modifica a un segmento, `edited_text` è identico a `text`.
* Se non è possibile produrre una modifica per un segmento, non viene inviato alcun evento `edited_transcript`. L'evento `committed_transcript` non viene modificato.
* I timestamp a livello di parola in `committed_transcript_with_timestamps` descrivono il testo confermato originale, non quello modificato.

## Passaggi successivi

#### [Modifica delle trascrizioni batch](/docs/it/eleven-api/guides/how-to/speech-to-text/batch/transcript-editing)

Indicazioni per scrivere le istruzioni e formato della risposta batch.

#### [Riferimento degli eventi](/docs/it/eleven-api/guides/how-to/speech-to-text/realtime/event-reference)

Elenco completo degli eventi e dei tipi di errore dell'API STT in tempo reale.