Effettuare una richiesta di riconoscimento vocale

Per richiedere il riconoscimento vocale con il servizio IBM Watson® Speech to Text, devi fornire solo l'audio che deve essere trascritto. Il servizio offre le stesse funzionalità di trascrizione di base con ciascuna delle sue interfacce: l'interfaccia WebSocket, l'interfaccia HTTP sincrona e l'interfaccia HTTP asincrona.

Gli esempi che seguono mostrano le richieste di trascrizione di base, senza parametri opzionali, per ciascuna delle interfacce del servizio:

Comprendere i risultati del riconoscimento vocale descrive la risposta del servizio per questi esempi.

Requisiti di utilizzo

Quando effettui una richiesta di riconoscimento vocale, tieni conto dei seguenti requisiti di utilizzo di base:

  • I nomi di metodo sono sensibili a maiuscole/minuscole.
  • Le intestazioni di richiesta HTTP non sono sensibili a maiuscole/minuscole.
  • I parametri di query HTTP e WebSocket sono sensibili a maiuscole/minuscole.
  • I nomi di campo JSON sono sensibili a maiuscole/minuscole.
  • Tutto il contenuto di risposta JSON è nel set di caratteri UTF-8.
  • Nella documentazione vengono utilizzati parentesi graffe ({ }) per indicare valori variabili. Ometti le parentesi quadre quando fornisci valori variabili.

Tieni inoltre conto dei seguenti requisiti specifici per il servizio:

  • Devi specificare solo l'audio di input. Tutti gli altri parametri sono facoltativi.
  • Se necessario, assicurati di specificare il parametro " model " per indicare un modello adatto alla tua lingua e al tuo audio.
  • Se specifichi un campo JSON o un parametro di query non valido come parte dell'input, la risposta include un campo warnings che descrive l'argomento non valido. La richiesta ha esito positivo nonostante le eventuali avvertenze.

Invio di audio con una richiesta

L'audio che passi al servizio deve essere in uno dei formati supportati dal servizio. Per la maggior parte dei tipi di audio, il servizio può rilevare automaticamente il formato. Per alcuni tipi di audio, devi specificare il formato con Content-Type o un parametro equivalente. Per ulteriori informazioni, vedi Formati audio. (Per maggiore chiarezza, i seguenti esempi specificano il formato audio con tutte le richieste.)

Con le interfacce WebSocket e HTTP sincrona, puoi passare un massimo di 100 MB di dati audio con una singola richiesta. Con l'interfaccia HTTP asincrona, puoi passare un massimo di 1 GB di dati audio. Devi inviare almeno 100 byte di audio con qualsiasi richiesta.

Se riconosci grandi quantità di audio, puoi dividere manualmente l'audio in porzioni più piccole. Ma di solito è più efficiente e conveniente convertire l'audio in un formato compresso e con perdita. La compressione può massimizzare la quantità di dati che puoi inviare con una singola richiesta. Soprattutto se l'audio è in formato WAV o FLAC, convertirlo in un formato con perdita può fare una differenza considerevole.

Utilizzo dell'interfaccia WebSocket

L'interfaccia WebSocket fornisce un'implementazione efficiente che offre bassa latenza e velocità effettiva elevata su una connessione full duplex. Tutte le richieste e le risposte vengono inviate tramite la stessa connessione WebSocket.

Per utilizzare l'interfaccia WebSocket, devi prima utilizzare il metodo /v1/recognize per stabilire una connessione con il servizio. Specifica i parametri come il modello di lingua e qualsiasi modello personalizzato da utilizzare per le richieste inviate tramite la connessione. Quindi, registra i listener di eventi per gestire le risposte fornite dal servizio. Per effettuare una richiesta, invia un messaggio di testo JSON che include il formato audio e qualsiasi parametro aggiuntivo. Passa l'audio come messaggio binario (blob), quindi invia un messaggio di testo per segnalare la fine dell'audio.

Il seguente esempio fornisce il codice JavaScript che stabilisce una connessione e invia i messaggi di testo e binari per una richiesta di riconoscimento. L'esempio di base non include il codice per definire tutti i gestori di eventi necessari per la connessione.

var access_token = {access_token};
var wsURI = '{ws_url}/v1/recognize'
  + '?access_token=' + access_token;
var websocket = new WebSocket(wsURI);

websocket.onopen = function(evt) { onOpen(evt) };

function onOpen(evt) {
  var message = {
    action: 'start',
    content-type: 'audio/flac'
  };
  websocket.send(JSON.stringify(message));
  websocket.send(blob);
  websocket.send(JSON.stringify({action: 'stop'}));
}

Utilizzo dell'interfaccia HTTP sincrona

L'interfaccia HTTP sincrona fornisce il modo più semplice per effettuare una richiesta di riconoscimento. Utilizza il metodo POST /v1/recognize per effettuare una richiesta al servizio. Passa l'audio e tutti i parametri con la singola richiesta. Il seguente esempio curl mostra una richiesta di riconoscimento HTTP di base:

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file.flac \
"{url}/v1/recognize"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file.flac \
"{url}/v1/recognize"

Utilizzo dell'interfaccia HTTP asincrona

L'interfaccia HTTP asincrona fornisce un'interfaccia non bloccante per la trascrizione dell'audio. Puoi utilizzare l'interfaccia con o senza la previa registrazione di un URL di callback con il servizio. Con un URL di callback, il servizio invia notifiche di callback con lo stato del lavoro e i risultati del riconoscimento. L'interfaccia utilizza le firme HMAC-SHA1 basate su un segreto specificato dall'utente per fornire l'autenticazione e l'integrità dei dati per le sue notifiche. Senza un URL di callback, devi eseguire il polling del servizio per ottenere lo stato del lavoro e i risultati. Con entrambi gli approcci, utilizzi il metodo POST /v1/recognitions per effettuare una richiesta di riconoscimento.

Il seguente esempio curl mostra una semplice richiesta di riconoscimento HTTP asincrona. La richiesta non include un URL di callback, quindi devi eseguire il polling del servizio per ottenere lo stato del lavoro e la trascrizione risultante.

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file.flac \
"{url}/v1/recognitions"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file.flac \
"{url}/v1/recognitions"