Trascrizione di file audio corti

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina mostra 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 un 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 sui limiti di quota e limiti per i limiti sulle richieste di riconoscimento vocale sincrono.

Esecuzione del riconoscimento vocale sincrono su un file locale

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

REST &AM; LINEA CMD

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

I contenuti audio forniti nel corpo della richiesta devono essere codificati in base64. Per ulteriori informazioni su come codificare audio base64, consulta Codificare i contenuti audio in Base64. Per ulteriori informazioni sul campo content, consulta RiconoscimentoAudio.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

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

Metodo HTTP e URL:

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

Corpo JSON 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 il percorso file locale del file in 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))

Linguaggi aggiuntivi

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

PHP: segui le istruzioni di configurazione dei file 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 consulta la documentazione di riferimento di Speech-to-Text per Ruby.

Esecuzione del riconoscimento vocale sincrono su un file remoto

Per comodità, l'API Speech-to-Text può eseguire il riconoscimento vocale sincrono direttamente su un file audio situato in Google Cloud Storage, senza la necessità di inviare il contenuto del file audio nel corpo della richiesta.

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

REST &AM; LINEA CMD

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

I contenuti audio forniti nel corpo della richiesta devono essere codificati in base64. Per ulteriori informazioni su come codificare audio base64, consulta Codificare i contenuti audio in Base64. Per ulteriori informazioni sul campo content, consulta RiconoscimentoAudio.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LANGUAGE_CODE: il 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 orari di inizio e di fine delle parole (timestamp).
  • STORAGE_BUCKET: un bucket Cloud Storage.
  • INPUT_AUDIO: il file di dati audio che vuoi trascrivere.

Metodo HTTP e URL:

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

Corpo JSON 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 il percorso file locale del file in 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))

Linguaggi aggiuntivi

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

PHP: segui le istruzioni di configurazione dei file 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 consulta la documentazione di riferimento di Speech-to-Text per Ruby.