Trascrizione di file audio corti

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 audio di durata superiore a 60 secondi, utilizza il riconoscimento vocale asincrono.

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

Eseguire il riconoscimento vocale sincrono su un file locale

Di seguito è riportato un esempio di esecuzione del riconoscimento vocale sincrono su un file audio locale:

REST

Per informazioni complete , consulta l'endpoint API speech:recognize. Per saperne di più sulla configurazione del corpo della richiesta, consulta la documentazione di riferimento di RecognitionConfig.

I contenuti audio forniti nel corpo della richiesta devono essere codificati in Base64. Per saperne di più su come codificare l'audio in Base64, consulta Codifica in Base64 dei contenuti audio. Per saperne di più sul campo content, consulta RecognitionAudio.

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

  • LANGUAGE_CODE: il codice BCP-47 della lingua parlata nella clip audio.
  • ENCODING: la codifica dell'audio che vuoi trascrivere.
  • SAMPLE_RATE_HERTZ: la frequenza di campionamento in hertz dell'audio che vuoi trascrivere.
  • ENABLE_WORD_TIME_OFFSETS: abilita questo campo se vuoi che vengano restituiti gli offset (timestamp) dell'ora di inizio e fine delle parole.
  • INPUT_AUDIO: una stringa codificata in Base64 dei dati audio che vuoi trascrivere.
  • PROJECT_ID: l'ID alfanumerico del tuo Google Cloud progetto.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "config": {
      "languageCode": "LANGUAGE_CODE",
      "encoding": "ENCODING",
      "sampleRateHertz": SAMPLE_RATE_HERTZ,
      "enableWordTimeOffsets": ENABLE_WORD_TIME_OFFSETS
  },
  "audio": {
    "content": "INPUT_AUDIO"
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

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

gcloud

Per informazioni complete, consulta il recognize comando.

Per eseguire il riconoscimento vocale su un file locale, utilizza Google Cloud CLI, passando il percorso del file locale 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

Per scoprire come installare e utilizzare la libreria client per Cloud STT, consulta Librerie client di Cloud STT. Per saperne di più, consulta la documentazione di riferimento dell'APIGo Cloud STT.

Per eseguire l'autenticazione in Cloud STT, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.


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 := os.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
}

Java

Per scoprire come installare e utilizzare la libreria client per Cloud STT, consulta Librerie client di Cloud STT. Per saperne di più, consulta la documentazione di riferimento dell'JavaAPI Cloud STT.

Per eseguire l'autenticazione in Cloud STT, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

/**
 * Performs speech recognition on raw PCM audio and prints the transcription.
 *
 * @param fileName the path to a PCM audio file to transcribe.
 */
public static void syncRecognizeFile(String fileName) throws Exception {
  try (SpeechClient speech = SpeechClient.create()) {
    Path path = Paths.get(fileName);
    byte[] data = Files.readAllBytes(path);
    ByteString audioBytes = ByteString.copyFrom(data);

    // Configure request with local raw PCM audio
    RecognitionConfig config =
        RecognitionConfig.newBuilder()
            .setEncoding(AudioEncoding.LINEAR16)
            .setLanguageCode("en-US")
            .setSampleRateHertz(16000)
            .build();
    RecognitionAudio audio = RecognitionAudio.newBuilder().setContent(audioBytes).build();

    // Use blocking call to get audio transcript
    RecognizeResponse response = speech.recognize(config, audio);
    List<SpeechRecognitionResult> results = response.getResultsList();

    for (SpeechRecognitionResult result : results) {
      // There can be several alternative transcripts for a given chunk of speech. Just use the
      // first (most likely) one here.
      SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
      System.out.printf("Transcription: %s%n", alternative.getTranscript());
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per Cloud STT, consulta Librerie client di Cloud STT. Per saperne di più, consulta la documentazione di riferimento dell'APINode.js Cloud STT.

Per eseguire l'autenticazione in Cloud STT, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Cloud STT, consulta Librerie client di Cloud STT. Per saperne di più, consulta la documentazione di riferimento dell'APIPython Cloud STT.

Per eseguire l'autenticazione in Cloud STT, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

from google.cloud import speech


def transcribe_file(audio_file: str) -> speech.RecognizeResponse:
    """Transcribe the given audio file.
    Args:
        audio_file (str): Path to the local audio file to be transcribed.
            Example: "resources/audio.wav"
    Returns:
        cloud_speech.RecognizeResponse: The response containing the transcription results
    """
    client = speech.SpeechClient()

    with open(audio_file, "rb") as f:
        audio_content = f.read()

    audio = speech.RecognitionAudio(content=audio_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(f"Transcript: {result.alternatives[0].transcript}")

    return response

Linguaggi aggiuntivi

C#: segui le istruzioni di configurazione di C# nella pagina delle librerie client, poi consulta la documentazione di riferimento di Cloud STT per .NET.

PHP: segui le istruzioni di configurazione di PHP nella pagina delle librerie client, poi consulta la documentazione di riferimento di Cloud STT per PHP.

Ruby: segui le istruzioni di configurazione di Ruby nella pagina delle librerie client, poi consulta la documentazione di riferimento di Cloud STT per Ruby.

Eseguire il riconoscimento vocale sincrono su un file remoto

Per tua comodità, l'API Cloud Speech-to-Text può eseguire il riconoscimento vocale sincrono direttamente su un file audio che si trova in Cloud Storage, senza la necessità di 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:

REST

Per informazioni complete , consulta l'endpoint API speech:recognize. Per saperne di più sulla configurazione del corpo della richiesta, consulta la documentazione di riferimento di RecognitionConfig.

I contenuti audio forniti nel corpo della richiesta devono essere codificati in Base64. Per saperne di più su come codificare l'audio in Base64, consulta Codifica in Base64 dei contenuti audio. Per saperne di più sul campo content, consulta RecognitionAudio.

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

  • LANGUAGE_CODE: il codice BCP-47 della lingua parlata nella clip audio.
  • ENCODING: la codifica dell'audio che vuoi trascrivere.
  • SAMPLE_RATE_HERTZ: la frequenza di campionamento in hertz dell'audio che vuoi trascrivere.
  • ENABLE_WORD_TIME_OFFSETS: abilita questo campo se vuoi che vengano restituiti gli offset (timestamp) dell'ora di inizio e fine delle parole.
  • STORAGE_BUCKET: un bucket Cloud Storage.
  • INPUT_AUDIO: il file di dati audio che vuoi trascrivere.
  • PROJECT_ID: l'ID alfanumerico del tuo Google Cloud progetto.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

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

gcloud

Per informazioni complete, consulta il recognize comando.

Per eseguire il riconoscimento vocale su un file locale, utilizza Google Cloud CLI, passando il percorso del file locale 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

Per scoprire come installare e utilizzare la libreria client per Cloud STT, consulta Librerie client di Cloud STT. Per saperne di più, consulta la documentazione di riferimento dell'APIGo Cloud STT.

Per eseguire l'autenticazione in Cloud STT, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.


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
}

Java

Per scoprire come installare e utilizzare la libreria client per Cloud STT, consulta Librerie client di Cloud STT. Per saperne di più, consulta la documentazione di riferimento dell'JavaAPI Cloud STT.

Per eseguire l'autenticazione in Cloud STT, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

/**
 * Performs speech recognition on remote FLAC file and prints the transcription.
 *
 * @param gcsUri the path to the remote FLAC audio file to transcribe.
 */
public static void syncRecognizeGcs(String gcsUri) throws Exception {
  // Instantiates a client with GOOGLE_APPLICATION_CREDENTIALS
  try (SpeechClient speech = SpeechClient.create()) {
    // Builds the request for remote FLAC file
    RecognitionConfig config =
        RecognitionConfig.newBuilder()
            .setEncoding(AudioEncoding.FLAC)
            .setLanguageCode("en-US")
            .setSampleRateHertz(16000)
            .build();
    RecognitionAudio audio = RecognitionAudio.newBuilder().setUri(gcsUri).build();

    // Use blocking call for getting audio transcript
    RecognizeResponse response = speech.recognize(config, audio);
    List<SpeechRecognitionResult> results = response.getResultsList();

    for (SpeechRecognitionResult result : results) {
      // There can be several alternative transcripts for a given chunk of speech. Just use the
      // first (most likely) one here.
      SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
      System.out.printf("Transcription: %s%n", alternative.getTranscript());
    }
  }
}

Node.js

Per scoprire come installare e utilizzare la libreria client per Cloud STT, consulta Librerie client di Cloud STT. Per saperne di più, consulta la documentazione di riferimento dell'APINode.js Cloud STT.

Per eseguire l'autenticazione in Cloud STT, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Cloud STT, consulta Librerie client di Cloud STT. Per saperne di più, consulta la documentazione di riferimento dell'APIPython Cloud STT.

Per eseguire l'autenticazione in Cloud STT, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

def transcribe_gcs(audio_uri: str) -> speech.RecognizeResponse:
    """Transcribes the audio file specified by the gcs_uri.
    Args:
        audio_uri (str): The Google Cloud Storage URI of the input audio file.
            E.g., gs://cloud-samples-data/speech/audio.flac
    Returns:
        cloud_speech.RecognizeResponse: The response containing the transcription results
    """
    from google.cloud import speech

    client = speech.SpeechClient()

    audio = speech.RecognitionAudio(uri=audio_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(f"Transcript: {result.alternatives[0].transcript}")

    return response

Linguaggi aggiuntivi

C#: segui le istruzioni di configurazione di C# nella pagina delle librerie client, poi consulta la documentazione di riferimento di Cloud STT per .NET.

PHP: segui le istruzioni di configurazione di PHP nella pagina delle librerie client, poi consulta la documentazione di riferimento di Cloud STT per PHP.

Ruby: segui le istruzioni di configurazione di Ruby nella pagina delle librerie client, poi consulta la documentazione di riferimento di Cloud STT per Ruby.