Speech-to-Text API mit Python verwenden

1. Übersicht

9e7124a578332fed.png

Mit der Speech-to-Text API können Entwickler Audio in Text umwandeln. Dabei kommen leistungsstarke Modelle neuronaler Netze in einer nutzerfreundlichen API zum Einsatz. Die API unterstützt über 125 Sprachen und Sprachvarianten.

In dieser Anleitung konzentrieren Sie sich auf die Verwendung der Speech-to-Text API mit Python.

Lerninhalte

  • Umgebung einrichten
  • Audiodateien auf Englisch transkribieren
  • Audiodateien mit Wortzeitstempeln transkribieren
  • Audiodateien in verschiedenen Sprachen transkribieren

Voraussetzungen

  • Ein Google Cloud-Projekt
  • Ein Browser, z. B. Chrome oder Firefox
  • Python-Vorkenntnisse

Umfrage

Wie werden Sie diese Anleitung verwenden?

Nur lesen Lesen und Übungen durchführen

Wie würden Sie Ihre Erfahrung mit Python bewerten?

Anfänger Mittelstufe Fortgeschrittene

Wie würden Sie Ihre Erfahrungen mit Google Cloud-Diensten bewerten?

Anfänger Mittelstufe Fortgeschritten

2. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als PROJECT_ID angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.

Cloud Shell starten

Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Cloud Shell aktivieren

  1. Klicken Sie in der Cloud Console auf Cloud Shell aktivieren 853e55310c205094.png.

3c1dabeca90e44e5.png

Wenn Sie die Cloud Shell zum ersten Mal starten, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter.

9c92662c6a846a5c.png

Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.

9f0e51b578fecce5.png

Auf dieser virtuellen Maschine sind alle erforderlichen Entwicklungstools installiert. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser erledigt werden.

Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie authentifiziert sind und für das Projekt Ihre Projekt-ID eingestellt ist.

  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list

Befehlsausgabe

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project

Befehlsausgabe

[core]
project = <PROJECT_ID>

Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:

gcloud config set project <PROJECT_ID>

Befehlsausgabe

Updated property [core/project].

3. Umgebung einrichten

Bevor Sie die Speech-to-Text API verwenden können, müssen Sie die API in Cloud Shell mit dem folgenden Befehl aktivieren:

gcloud services enable speech.googleapis.com

Auf dem Bildschirm sollte Folgendes zu sehen sein:

Operation "operations/..." finished successfully.

Jetzt können Sie die Speech-to-Text API verwenden.

Wechseln Sie zu Ihrem Basisverzeichnis:

cd ~

Erstellen Sie eine virtuelle Python-Umgebung, um die Abhängigkeiten zu isolieren:

virtualenv venv-speech

Aktivieren Sie die virtuelle Umgebung:

source venv-speech/bin/activate

Installieren Sie IPython und die Speech-to-Text API-Clientbibliothek:

pip install ipython google-cloud-speech

Auf dem Bildschirm sollte Folgendes zu sehen sein:

...
Installing collected packages: ..., ipython, google-cloud-speech
Successfully installed ... google-cloud-speech-2.25.1 ...

Jetzt können Sie die Speech-to-Text API-Clientbibliothek verwenden.

In den nächsten Schritten verwenden Sie einen interaktiven Python-Interpreter namens IPython, den Sie im vorherigen Schritt installiert haben. Starten Sie eine Sitzung, indem Sie ipython in Cloud Shell ausführen:

ipython

Auf dem Bildschirm sollte Folgendes zu sehen sein:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Sie können Ihre erste Anfrage stellen…

4. Audiodateien transkribieren

In diesem Abschnitt transkribieren Sie eine englische Audiodatei.

Kopieren Sie den folgenden Code in Ihre IPython-Sitzung:

from google.cloud import speech


def speech_to_text(
    config: speech.RecognitionConfig,
    audio: speech.RecognitionAudio,
) -> speech.RecognizeResponse:
    client = speech.SpeechClient()

    # Synchronous speech recognition request
    response = client.recognize(config=config, audio=audio)

    return response


def print_response(response: speech.RecognizeResponse):
    for result in response.results:
        print_result(result)


def print_result(result: speech.SpeechRecognitionResult):
    best_alternative = result.alternatives[0]
    print("-" * 80)
    print(f"language_code: {result.language_code}")
    print(f"transcript:    {best_alternative.transcript}")
    print(f"confidence:    {best_alternative.confidence:.0%}")
    

Sehen Sie sich den Code an und achten Sie darauf, wie die Clientbibliotheksmethode recognize verwendet wird, um eine Audiodatei zu transkribieren*. Der Parameter config gibt an, wie die Anfrage verarbeitet werden soll, und der Parameter audio gibt die zu erkennenden Audiodaten an.

Anfrage senden:

config = speech.RecognitionConfig(
    language_code="en",
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response = speech_to_text(config, audio)
print_response(response)

Es sollte folgende Ausgabe angezeigt werden:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    how old is the Brooklyn Bridge
confidence:    98%

Aktualisieren Sie die Konfiguration, um die automatische Zeichensetzung zu aktivieren, und senden Sie eine neue Anfrage:

config.enable_automatic_punctuation = True

response = speech_to_text(config, audio)
print_response(response)

Es sollte folgende Ausgabe angezeigt werden:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%

Zusammenfassung

In diesem Schritt haben Sie eine Audiodatei auf Englisch mit verschiedenen Parametern transkribiert und das Ergebnis ausgegeben. Weitere Informationen zum Transkribieren von Audiodateien

5. Wortzeitstempel abrufen

Speech-to-Text kann Zeitverschiebungswerte (Zeitstempel) für die transkribierten Audiodaten erkennen. Zeitverschiebungswerte geben den Anfang und das Ende jedes gesprochenen Wortes in den bereitgestellten Audiodaten an. Ein Zeitverschiebungswert gibt die Zeit in Schritten von 100 ms an, die seit Beginn des Audiosignals vergangen ist.

Wenn Sie eine Audiodatei mit Zeitstempeln für einzelne Wörter transkribieren möchten, aktualisieren Sie Ihren Code, indem Sie Folgendes in Ihre IPython-Sitzung kopieren:

def print_result(result: speech.SpeechRecognitionResult):
    best_alternative = result.alternatives[0]
    print("-" * 80)
    print(f"language_code: {result.language_code}")
    print(f"transcript:    {best_alternative.transcript}")
    print(f"confidence:    {best_alternative.confidence:.0%}")
    print("-" * 80)
    for word in best_alternative.words:
        start_s = word.start_time.total_seconds()
        end_s = word.end_time.total_seconds()
        print(f"{start_s:>7.3f} | {end_s:>7.3f} | {word.word}")
        

Sehen Sie sich den Code an und prüfen Sie, wie eine Audiodatei mit Wort-Zeitstempeln* transkribiert wird.* Mit dem Parameter enable_word_time_offsets wird die API angewiesen, die Zeitversatzwerte für jedes Wort zurückzugeben. Weitere Informationen finden Sie in der Dokumentation.

Anfrage senden:

config = speech.RecognitionConfig(
    language_code="en",
    enable_automatic_punctuation=True,
    enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response = speech_to_text(config, audio)
print_response(response)

Es sollte folgende Ausgabe angezeigt werden:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%
--------------------------------------------------------------------------------
  0.000 |   0.300 | How
  0.300 |   0.600 | old
  0.600 |   0.800 | is
  0.800 |   0.900 | the
  0.900 |   1.100 | Brooklyn
  1.100 |   1.400 | Bridge?

Zusammenfassung

In diesem Schritt haben Sie eine Audiodatei auf Englisch mit Wort-Zeitstempeln transkribiert und das Ergebnis ausgegeben. Weitere Informationen zum Abrufen von Wortzeitstempeln

6. Verschiedene Sprachen transkribieren

Die Speech-to-Text API erkennt mehr als 125 Sprachen und Sprachvarianten. Eine Liste der unterstützten Sprachen finden Sie hier.

In diesem Abschnitt transkribieren Sie eine französische Audiodatei.

Um die französische Audiodatei zu transkribieren, aktualisieren Sie Ihren Code, indem Sie Folgendes in Ihre IPython-Sitzung kopieren:

config = speech.RecognitionConfig(
    language_code="fr-FR",
    enable_automatic_punctuation=True,
    enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
    uri="gs://cloud-samples-data/speech/corbeau_renard.flac",
)

response = speech_to_text(config, audio)
print_response(response)

Es sollte folgende Ausgabe angezeigt werden:

--------------------------------------------------------------------------------
language_code: fr-fr
transcript:    Maître corbeau sur un arbre perché Tenait dans son bec un fromage maître Renard par l'odeur alléché lui tint à peu près ce langage et bonjour monsieur du corbeau.
confidence:    94%
--------------------------------------------------------------------------------
  0.000 |   0.700 | Maître
  0.700 |   1.100 | corbeau
  1.100 |   1.300 | sur
  1.300 |   1.600 | un
  1.600 |   1.700 | arbre
  1.700 |   2.000 | perché
  2.000 |   3.000 | Tenait
  3.000 |   3.000 | dans
  3.000 |   3.200 | son
  3.200 |   3.500 | bec
  3.500 |   3.700 | un
  3.700 |   3.800 | fromage
...
 10.800 |  11.800 | monsieur
 11.800 |  11.900 | du
 11.900 |  12.100 | corbeau.

Zusammenfassung

In diesem Schritt konnten Sie eine französische Audiodatei transkribieren und das Ergebnis ausdrucken. Weitere Informationen zu den unterstützten Sprachen

7. Glückwunsch!

9e7124a578332fed.png

Sie haben gelernt, wie Sie die Speech-to-Text API mit Python verwenden, um verschiedene Arten von Transkriptionen für Audiodateien durchzuführen.

Bereinigen

So bereinigen Sie Ihre Entwicklungsumgebung über Cloud Shell:

  • Wenn Sie sich noch in Ihrer IPython-Sitzung befinden, kehren Sie zur Shell zurück: exit
  • Beenden Sie die Verwendung der virtuellen Python-Umgebung: deactivate
  • Löschen Sie den Ordner für die virtuelle Umgebung: cd ~ ; rm -rf ./venv-speech

So löschen Sie Ihr Google Cloud-Projekt über Cloud Shell:

  • Rufen Sie Ihre aktuelle Projekt-ID ab: PROJECT_ID=$(gcloud config get-value core/project)
  • Prüfen Sie, ob dies das Projekt ist, das Sie löschen möchten: echo $PROJECT_ID
  • Projekt löschen: gcloud projects delete $PROJECT_ID

Weitere Informationen

Lizenz

Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.