Zur Python-Clientbibliothek v0.27 migrieren

In der Python-Clientbibliothek v0.27 wurden gegenüber früheren Versionen einige strukturelle Änderungen vorgenommen. Diese Änderungen können folgendermaßen zusammengefasst werden:

  • Konsolidierung der Module in eine kleinere Anzahl von Typen

  • Ersatz von nicht typisierten Parametern durch stark typisierte Klassen und Aufzählungen

Dieser Artikel enthält Details zu den Änderungen, die Sie an Ihrem Python-Code für die Speech-to-Text API-Clientbibliotheken vornehmen müssen, um die Python-Clientbibliothek v0.27 zu verwenden.

Frühere Versionen der Clientbibliothek ausführen

Sie sind nicht verpflichtet, Ihre Python-Clientbibliothek auf v0.27 zu aktualisieren. Allerdings werden neue Funktionen der Speech-to-Text API nur mit Versionen der Clientbibliothek ab v0.27 unterstützt.

Wenn Sie weiterhin eine frühere Version der Python-Clientbibliothek verwenden und für Ihren Code keine Migration vornehmen möchten, geben Sie die Version der von Ihrer Anwendung verwendeten Python-Clientbibliothek an. Bearbeiten Sie zum Angeben einer bestimmten Bibliotheksversion die Datei "requirements.txt" so:

google-cloud-speech==0.26
    

Entfernte Module

Die folgenden Module wurden aus dem Paket Python-Clientbibliothek v0.27 entfernt.

  • google.cloud.speech.alternatives

  • google.cloud.speech.client

  • google.cloud.speech.encoding

  • google.cloud.speech.operation

  • google.cloud.speech.result

  • google.cloud.speech.sample

Erforderliche Codeänderungen

Importe

Fügen Sie die neuen Module google.cloud.speech.types und google.cloud.speech.enums ein, damit Sie auf die neuen Typen und Aufzählungen in der Python-Clientbibliothek v0.27 zugreifen können.

Das Modul types enthält die neuen Klassen für das Erstellen von Anfragen, z. B. types.RecognitionAudio. Das Modul enums enthält die Aufzählungen für die Angabe von Audiocodierungen. Sie können weiterhin Strings wie 'LINEAR16' verwenden, um Ihre Audiocodierung anzugeben. Wir empfehlen aber die Verwendung der Aufzählungen im Modul enums.

from google.cloud import speech
    from google.cloud.speech import enums
    from google.cloud.speech import types

Client erstellen

Die Klasse Client wurde durch die Klasse SpeechClient ersetzt. Ersetzen Sie Verweise auf die Klasse Client durch SpeechClient.

Frühere Versionen der Clientbibliotheken:

old_client = speech.Client()
    

Python-Clientbibliothek v0.27:

client = speech.SpeechClient()

Objekte für die Darstellung von Audioinhalten erstellen

Verwenden Sie die neuen Klassen RecognitionAudio und RecognitionConfig, um Audioinhalte aus einer lokalen Datei oder aus einem Google Cloud Storage-URI zu identifizieren. Beachten Sie, dass Parameter wie der Parameter language_code jetzt als Teil der Klasse RecognitionConfig und nicht als Parameter an die API-Methode übergeben werden.

Objekte für Audioinhalte aus einer lokalen Datei erstellen

Das folgende Beispiel zeigt die neue Möglichkeit, Audioinhalte einer lokalen Datei abzubilden.

Frühere Versionen der Clientbibliotheken:

with io.open(file_name, 'rb') as audio_file:
        content = audio_file.read()

    sample = old_client.sample(
        content,
        encoding='LINEAR16',
        sample_rate_hertz=16000)
    

Python-Clientbibliothek v0.27:

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

    audio = types.RecognitionAudio(content=content)
    config = types.RecognitionConfig(
        encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=16000,
        language_code='en-US')

Objekte für Audioinhalte aus einem Google Cloud Storage-URI erstellen

Das folgende Beispiel zeigt die neue Darstellung von Audioinhalten aus einem Google Cloud Storage-URI. gcs_uri ist der URI einer Audiodatei in Google Cloud Storage.

Frühere Versionen der Clientbibliotheken:

sample = old_client.sample(
        source_uri=gcs_uri,
        encoding='LINEAR16',
        sample_rate_hertz=16000)
    

Python-Clientbibliothek v0.27:

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

Anfragen durchführen

Synchrone Anfrage durchführen

Das folgende Beispiel zeigt die neue Möglichkeit, eine Anfrage für eine synchrone oder asynchrone Erkennung durchzuführen.

Frühere Versionen der Clientbibliotheken:

with io.open(file_name, 'rb') as audio_file:
        content = audio_file.read()

    sample = old_client.sample(
        content,
        encoding='LINEAR16',
        sample_rate_hertz=16000)

    alternatives = sample.recognize(language_code='en-US')
    

Python-Clientbibliothek v0.27:

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

    audio = types.RecognitionAudio(content=content)
    config = types.RecognitionConfig(
        encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=16000,
        language_code='en-US')

    response = client.recognize(config, audio)

Asynchrone Anfrage durchführen

Das folgende Beispiel zeigt die neue Möglichkeit, eine Anfrage für eine synchrone oder asynchrone Erkennung durchzuführen.

Frühere Versionen der Clientbibliotheken:

with io.open(file_name, 'rb') as audio_file:
        content = audio_file.read()

    sample = old_client.sample(
        content,
        encoding='LINEAR16',
        sample_rate_hertz=16000)

    operation = sample.long_running_recognize(language_code='en-US')
    

Python-Clientbibliothek v0.27:

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

    audio = types.RecognitionAudio(content=content)
    config = types.RecognitionConfig(
        encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=16000,
        language_code='en-US')

    operation = client.long_running_recognize(config, audio)

Streaminganfrage durchführen

Das folgende Beispiel zeigt die neue Möglichkeit, eine Anfrage für eine Streamingerkennung durchzuführen.

Frühere Versionen der Clientbibliotheken:

with io.open(file_name, 'rb') as audio_file:
        sample = old_client.sample(
            stream=audio_file,
            encoding='LINEAR16',
            sample_rate_hertz=16000)

        alternatives = sample.streaming_recognize(language_code='en-US')
    

Python-Clientbibliothek v0.27:

with io.open(stream_file, 'rb') as audio_file:
        content = audio_file.read()

    # In practice, stream should be a generator yielding chunks of audio data.
    stream = [content]
    requests = (types.StreamingRecognizeRequest(audio_content=chunk)
                for chunk in stream)

    config = types.RecognitionConfig(
        encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=16000,
        language_code='en-US')
    streaming_config = types.StreamingRecognitionConfig(config=config)

    # streaming_recognize returns a generator.
    responses = client.streaming_recognize(streaming_config, requests)

Antworten verarbeiten

Synchrone Erkennungsantwort verarbeiten

Das folgende Beispiel zeigt die neue Möglichkeit, eine Anfrage für eine synchrone Erkennung zu verarbeiten.

Frühere Versionen der Clientbibliotheken:

alternatives = sample.recognize(language_code='en-US')

    for alternative in alternatives:
        print('Transcript: {}'.format(alternative.transcript))
    

Python-Clientbibliothek v0.27:

response = client.recognize(config, 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))

Asynchrone Erkennungsantwort verarbeiten

Das folgende Beispiel zeigt die neue Möglichkeit, eine Anfrage für eine asynchrone Erkennung zu verarbeiten.

Frühere Versionen der Clientbibliotheken:

operation = sample.long_running_recognize('en-US')

    # Sleep and poll operation.complete
    # ...

    if operation.complete:
        alternatives = operation.results
        for alternative in alternatives:
            print('Transcript: {}'.format(alternative.transcript))
            print('Confidence: {}'.format(alternative.confidence))
    

Python-Clientbibliothek v0.27:

operation = client.long_running_recognize(config, audio)

    print('Waiting for operation to complete...')
    response = operation.result(timeout=90)

    # 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))
        print('Confidence: {}'.format(result.alternatives[0].confidence))

Streamingerkennungsantwort verarbeiten

Das folgende Beispiel zeigt die neue Möglichkeit, eine Anfrage für eine Streamingerkennung zu verarbeiten.

Frühere Versionen der Clientbibliotheken:

alternatives = sample.streaming_recognize('en-US')

    for alternative in alternatives:
        print('Finished: {}'.format(alternative.is_final))
        print('Stability: {}'.format(alternative.stability))
        print('Confidence: {}'.format(alternative.confidence))
        print('Transcript: {}'.format(alternative.transcript))
    

Python-Clientbibliothek v0.27:

responses = client.streaming_recognize(streaming_config, requests)

    for response in responses:
        # Once the transcription has settled, the first result will contain the
        # is_final result. The other results will be for subsequent portions of
        # the audio.
        for result in response.results:
            print('Finished: {}'.format(result.is_final))
            print('Stability: {}'.format(result.stability))
            alternatives = result.alternatives
            # The alternatives are ordered from most likely to least.
            for alternative in alternatives:
                print('Confidence: {}'.format(alternative.confidence))
                print(u'Transcript: {}'.format(alternative.transcript))