Trascrizione di file audio corti

In questa pagina viene spiegato come trascrivere un breve file audio in testo utilizzando il riconoscimento vocale sincrono.

Il riconoscimento vocale sincrono restituisce il testo riconosciuto per l'audio breve (meno di 60 secondi). Per elaborare una richiesta di riconoscimento vocale per l'audio di durata superiore a 60 secondi, utilizza il riconoscimento vocale asincrono.

I contenuti audio possono essere inviati direttamente a Speech-to-Text da un file locale oppure Speech-to-Text può elaborare i contenuti audio archiviati in un bucket Google Cloud Storage. Consulta la pagina relativa alle quote e ai limiti per conoscere i limiti relativi alle richieste di riconoscimento vocale sincrono.

Esecuzione del riconoscimento vocale sincrono in un file locale

Ecco un esempio di esecuzione del riconoscimento vocale sincrono su un file audio locale:

RISPOSTA & RIGA CMD

Per i dettagli completi, consulta l'endpoint dell'API speech:recognize. Per ulteriori informazioni sulla configurazione del corpo della richiesta, consulta la documentazione di riferimento di RecognitionConfig.

Il contenuto audio fornito nel corpo della richiesta deve essere codificato in base 64. Per ulteriori informazioni su come codificare l'audio in Base64, consulta la pagina Contenuti audio con codifica Base64. Per ulteriori informazioni sul campo content, consulta la sezione RecognitionAudio.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • LANGUAGE_CODE: codice BCP-47 della lingua parlata nel clip audio.
  • ENCODING: la codifica dell'audio che vuoi trascrivere.
  • SAMPLE_RATE_HERTZ: frequenza di campionamento in Hertz dell'audio che vuoi trascrivere.
  • ENABLE_TIME_WORD_OFFSETS: attiva questo campo se vuoi che vengano restituiti gli offset di tempo (inizio e fine) della parola.
  • INPUT_AUDIO: una stringa con codifica Base64 dei dati audio che vuoi trascrivere.

URL e metodo HTTP:

POST https://speech.googleapis.com/v1/speech:recognize

Corpo JSON della richiesta:

{
  "config":{
      "languageCode":"LANGUAGE_CODE",
      "encoding":ENCODING
      "sampleRateHertz":SAMPLE_RATE_HERTZ
      "enableTimeWordOffsets":ENABLE_TIME_WORD_OFFSETS
  },
  "audio":{
    "content":"INPUT_AUDIO"
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

gcloud

Per i dettagli completi, consulta il comando recognize.

Per eseguire il riconoscimento vocale su un file locale, utilizza l'interfaccia a riga di comando di Google Cloud, passando nel percorso file locale del file su cui eseguire il riconoscimento vocale.

gcloud ml speech recognize PATH-TO-LOCAL-FILE --language-code='en-US'

Se la richiesta ha esito positivo, il server restituisce una risposta in formato JSON:

{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.9840146,
          "transcript": "how old is the Brooklyn Bridge"
        }
      ]
    }
  ]
}

Go


func recognize(w io.Writer, file string) error {
	ctx := context.Background()

	client, err := speech.NewClient(ctx)
	if err != nil {
		return err
	}
	defer client.Close()

	data, err := ioutil.ReadFile(file)
	if err != nil {
		return err
	}

	// Send the contents of the audio file with the encoding and
	// and sample rate information to be transcripted.
	resp, err := client.Recognize(ctx, &speechpb.RecognizeRequest{
		Config: &speechpb.RecognitionConfig{
			Encoding:        speechpb.RecognitionConfig_LINEAR16,
			SampleRateHertz: 16000,
			LanguageCode:    "en-US",
		},
		Audio: &speechpb.RecognitionAudio{
			AudioSource: &speechpb.RecognitionAudio_Content{Content: data},
		},
	})

	// Print the results.
	for _, result := range resp.Results {
		for _, alt := range result.Alternatives {
			fmt.Fprintf(w, "\"%v\" (confidence=%3f)\n", alt.Transcript, alt.Confidence)
		}
	}
	return nil
}

Node.js

// Imports the Google Cloud client library
const fs = require('fs');
const speech = require('@google-cloud/speech');

// Creates a client
const client = new speech.SpeechClient();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const filename = 'Local path to audio file, e.g. /path/to/audio.raw';
// const encoding = 'Encoding of the audio file, e.g. LINEAR16';
// const sampleRateHertz = 16000;
// const languageCode = 'BCP-47 language code, e.g. en-US';

const config = {
  encoding: encoding,
  sampleRateHertz: sampleRateHertz,
  languageCode: languageCode,
};
const audio = {
  content: fs.readFileSync(filename).toString('base64'),
};

const request = {
  config: config,
  audio: audio,
};

// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
  .map(result => result.alternatives[0].transcript)
  .join('\n');
console.log('Transcription: ', transcription);

Python

def transcribe_file(speech_file):
    """Transcribe the given audio file."""
    from google.cloud import speech
    import io

    client = speech.SpeechClient()

    with io.open(speech_file, "rb") as audio_file:
        content = audio_file.read()

    audio = speech.RecognitionAudio(content=content)
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=16000,
        language_code="en-US",
    )

    response = client.recognize(config=config, audio=audio)

    # Each result is for a consecutive portion of the audio. Iterate through
    # them to get the transcripts for the entire audio file.
    for result in response.results:
        # The first alternative is the most likely one for this portion.
        print(u"Transcript: {}".format(result.alternatives[0].transcript))

Altre lingue

C#: segui le istruzioni di configurazione di C# nella pagina delle librerie client e consulta la documentazione di riferimento di Speech-to-Text per .NET.

PHP: segui le istruzioni di configurazione di PHP nella pagina delle librerie client e consulta la documentazione di riferimento di Speech-to-Text per PHP.

Ruby: segui le istruzioni per la configurazione di Ruby nella pagina delle librerie client e poi visita la documentazione di riferimento di Speech-to-Text per Ruby.

Esecuzione del riconoscimento vocale sincrono in un file remoto

Per praticità, l'API Speech-to-Text può eseguire il riconoscimento vocale sincrono direttamente su un file audio presente in Google Cloud Storage, senza dover inviare i contenuti del file audio nel corpo della richiesta.

Ecco un esempio di esecuzione del riconoscimento vocale sincrono su un file che si trova in Cloud Storage:

RISPOSTA & RIGA CMD

Per i dettagli completi, consulta l'endpoint dell'API speech:recognize. Per ulteriori informazioni sulla configurazione del corpo della richiesta, consulta la documentazione di riferimento di RecognitionConfig.

Il contenuto audio fornito nel corpo della richiesta deve essere codificato in base 64. Per ulteriori informazioni su come codificare l'audio in Base64, consulta la pagina Contenuti audio con codifica Base64. Per ulteriori informazioni sul campo content, consulta la sezione RecognitionAudio.

Prima di utilizzare qualsiasi dato della richiesta, apporta le seguenti sostituzioni:

  • LANGUAGE_CODE: codice BCP-47 della lingua parlata nel clip audio.
  • ENCODING: la codifica dell'audio che vuoi trascrivere.
  • SAMPLE_RATE_HERTZ: frequenza di campionamento in Hertz dell'audio che vuoi trascrivere.
  • ENABLE_TIME_WORD_OFFSETS: attiva questo campo se vuoi che vengano restituiti gli offset di tempo (inizio e fine) della parola.
  • STORAGE_BUCKET: un bucket di Cloud Storage.
  • INPUT_AUDIO: il file di dati audio che vuoi trascrivere.

URL e metodo HTTP:

POST https://speech.googleapis.com/v1/speech:recognize

Corpo JSON della richiesta:

{
  "config":{
      "languageCode":"LANGUAGE_CODE",
      "encoding":ENCODING
      "sampleRateHertz":SAMPLE_RATE_HERTZ
      "enableTimeWordOffsets":ENABLE_TIME_WORD_OFFSETS
  },
  "audio":{
    "uri":"gs://STORAGE_BUCKET/INPUT_AUDIO"
  }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

gcloud

Per i dettagli completi, consulta il comando recognize.

Per eseguire il riconoscimento vocale su un file locale, utilizza l'interfaccia a riga di comando di Google Cloud, passando nel percorso file locale del file su cui eseguire il riconoscimento vocale.

gcloud ml speech recognize 'gs://cloud-samples-tests/speech/brooklyn.flac' \
--language-code='en-US'

Se la richiesta ha esito positivo, il server restituisce una risposta in formato JSON:

{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.9840146,
          "transcript": "how old is the Brooklyn Bridge"
        }
      ]
    }
  ]
}

Go


func recognizeGCS(w io.Writer, gcsURI string) error {
	ctx := context.Background()

	client, err := speech.NewClient(ctx)
	if err != nil {
		return err
	}
	defer client.Close()

	// Send the request with the URI (gs://...)
	// and sample rate information to be transcripted.
	resp, err := client.Recognize(ctx, &speechpb.RecognizeRequest{
		Config: &speechpb.RecognitionConfig{
			Encoding:        speechpb.RecognitionConfig_LINEAR16,
			SampleRateHertz: 16000,
			LanguageCode:    "en-US",
		},
		Audio: &speechpb.RecognitionAudio{
			AudioSource: &speechpb.RecognitionAudio_Uri{Uri: gcsURI},
		},
	})

	// Print the results.
	for _, result := range resp.Results {
		for _, alt := range result.Alternatives {
			fmt.Fprintf(w, "\"%v\" (confidence=%3f)\n", alt.Transcript, alt.Confidence)
		}
	}
	return nil
}

Node.js

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

// Creates a client
const client = new speech.SpeechClient();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const gcsUri = 'gs://my-bucket/audio.raw';
// const encoding = 'Encoding of the audio file, e.g. LINEAR16';
// const sampleRateHertz = 16000;
// const languageCode = 'BCP-47 language code, e.g. en-US';

const config = {
  encoding: encoding,
  sampleRateHertz: sampleRateHertz,
  languageCode: languageCode,
};
const audio = {
  uri: gcsUri,
};

const request = {
  config: config,
  audio: audio,
};

// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
  .map(result => result.alternatives[0].transcript)
  .join('\n');
console.log('Transcription: ', transcription);

Python

def transcribe_gcs(gcs_uri):
    """Transcribes the audio file specified by the gcs_uri."""
    from google.cloud import speech

    client = speech.SpeechClient()

    audio = speech.RecognitionAudio(uri=gcs_uri)
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.FLAC,
        sample_rate_hertz=16000,
        language_code="en-US",
    )

    response = client.recognize(config=config, audio=audio)

    # Each result is for a consecutive portion of the audio. Iterate through
    # them to get the transcripts for the entire audio file.
    for result in response.results:
        # The first alternative is the most likely one for this portion.
        print(u"Transcript: {}".format(result.alternatives[0].transcript))

Altre lingue

C#: segui le istruzioni di configurazione di C# nella pagina delle librerie client e consulta la documentazione di riferimento di Speech-to-Text per .NET.

PHP: segui le istruzioni di configurazione di PHP nella pagina delle librerie client e consulta la documentazione di riferimento di Speech-to-Text per PHP.

Ruby: segui le istruzioni per la configurazione di Ruby nella pagina delle librerie client e poi visita la documentazione di riferimento di Speech-to-Text per Ruby.