Kurze Audiodateien transkribieren

Auf dieser Seite wird gezeigt, wie eine kurze Audiodatei mithilfe synchroner Spracherkennung in Text transkribiert wird.

Bei der synchronen Spracherkennung wird der erkannte Text für eine kurze Audiosequenz (unter 60 Sekunden) zurückgegeben. Zur Verarbeitung einer Spracherkennungsanfrage für Audiodaten, die länger als 60 Sekunden sind, verwenden Sie die asynchrone Spracherkennung.

Audioinhalte können direkt aus einer lokalen Datei an Speech-to-Text gesendet werden. Alternativ kann Speech-to-Text in einem Google Cloud Storage-Bucket gespeicherte Audioinhalte verarbeiten. Auf der Seite Kontingente und Limits finden Sie Limits für die Anfragen zur synchronen Spracherkennung.

Synchrone Spracherkennung für eine lokale Datei ausführen

Im Folgenden finden Sie ein Beispiel für eine synchrone Spracherkennung für eine lokale Audiodatei.

REST UND BEFEHLSZEILE

Ausführliche Informationen finden Sie unter dem API-Endpunkt speech:recognize. Weitere Informationen zum Konfigurieren des Anfragetexts finden Sie in der Referenzdokumentation zu RecognitionConfig.

Der im Anfragetext bereitgestellte Audioinhalt muss base64-codiert sein. Weitere Informationen zur base64-Codierung erhalten Sie unter base64-Codierung von Audioinhalten. Weitere Informationen zum Feld content finden Sie unter RecognitionAudio.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LANGUAGE_CODE: Der BCP-47-Code der Sprache, die in Ihrem Audioclip gesprochen wird.
  • ENCODING: Die Codierung der Audiodaten, die transkribiert werden sollen.
  • SAMPLE_RATE_HERTZ: Abtastrate der zu transkribierenden Audiodaten in Hertz.
  • ENABLE_TIME_WORD_OFFSETS: Aktivieren Sie dieses Feld, wenn Sie möchten, dass Start- und Endzeitverschiebungen (Zeitstempel) für Wörter zurückgegeben werden.
  • INPUT_AUDIO: Ein base64-codierter String der Audiodaten, die transkribiert werden sollen.

HTTP-Methode und URL:

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

JSON-Text anfordern:

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

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie müssten in etwa folgende JSON-Antwort erhalten:

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

gcloud

Ausführliche Informationen finden Sie unter dem Befehl recognize.

Verwenden Sie zur Spracherkennung in einer lokalen Datei das gcloud-Befehlszeilentool und übergeben Sie den lokalen Dateipfad der Datei, um die Spracherkennung durchzuführen.

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

Wenn die Anfrage erfolgreich ist, gibt der Server eine Antwort im JSON-Format zurück:

{
  "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))

Weitere Sprachen

C# : Folgen Sie der Anleitung zur Einrichtung von C# auf der Seite "Clientbibliotheken" und rufen Sie dann die Speech-to-Text-Referenzdokumentation für .NET auf.

PHP: Folgen Sie der Anleitung zur Einrichtung von PHP auf der Seite "Clientbibliotheken" und rufen Sie dann die Speech-to-Text-Referenzdokumentation für PHP auf.

Ruby: Folgen Sie der Anleitung zur Einrichtung von Ruby auf der Seite "Clientbibliotheken" und rufen Sie dann die Speech-to-Text-Referenzdokumentation für Ruby auf.

Synchrone Spracherkennung für eine Remotedatei durchführen

Zur Erleichterung Ihrer Arbeit kann die Speech-to-Text API die synchrone Spracherkennung direkt für eine Audiodatei in Google Cloud Storage ausführen, ohne dass Sie den Inhalt der Audiodatei im Text Ihrer Anfrage senden müssen.

Hier ist ein Beispiel für die Durchführung einer synchronen Spracherkennung für eine Datei in Cloud Storage:

REST UND BEFEHLSZEILE

Ausführliche Informationen finden Sie unter dem API-Endpunkt speech:recognize. Weitere Informationen zum Konfigurieren des Anfragetexts finden Sie in der Referenzdokumentation zu RecognitionConfig.

Der im Anfragetext bereitgestellte Audioinhalt muss base64-codiert sein. Weitere Informationen zur base64-Codierung erhalten Sie unter base64-Codierung von Audioinhalten. Weitere Informationen zum Feld content finden Sie unter RecognitionAudio.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LANGUAGE_CODE: Der BCP-47-Code der Sprache, die in Ihrem Audioclip gesprochen wird.
  • ENCODING: Die Codierung der Audiodaten, die transkribiert werden sollen.
  • SAMPLE_RATE_HERTZ: Abtastrate der zu transkribierenden Audiodaten in Hertz.
  • ENABLE_TIME_WORD_OFFSETS: Aktivieren Sie dieses Feld, wenn Sie möchten, dass Start- und Endzeitverschiebungen (Zeitstempel) für Wörter zurückgegeben werden.
  • STORAGE_BUCKET: Ein Cloud Storage-Bucket.
  • INPUT_AUDIO: Die zu transkribierenden Audiodatei.

HTTP-Methode und URL:

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

JSON-Text anfordern:

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

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie müssten in etwa folgende JSON-Antwort erhalten:

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

gcloud

Ausführliche Informationen finden Sie unter dem Befehl recognize.

Verwenden Sie zur Spracherkennung in einer lokalen Datei das gcloud-Befehlszeilentool und übergeben Sie den lokalen Dateipfad der Datei, um die Spracherkennung durchzuführen.

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

Wenn die Anfrage erfolgreich ist, gibt der Server eine Antwort im JSON-Format zurück:

{
  "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))

Weitere Sprachen

C# : Folgen Sie der Anleitung zur Einrichtung von C# auf der Seite "Clientbibliotheken" und rufen Sie dann die Speech-to-Text-Referenzdokumentation für .NET auf.

PHP: Folgen Sie der Anleitung zur Einrichtung von PHP auf der Seite "Clientbibliotheken" und rufen Sie dann die Speech-to-Text-Referenzdokumentation für PHP auf.

Ruby: Folgen Sie der Anleitung zur Einrichtung von Ruby auf der Seite "Clientbibliotheken" und rufen Sie dann die Speech-to-Text-Referenzdokumentation für Ruby auf.