Spracherkennung – Grundlagen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Übersicht

Im vorliegenden Dokument wird die grundlegende Verwendung der Spracherkennung beschrieben. Sie erfahren, welche Arten von Anfragen Sie an Speech-to-Text senden können, wie Sie diese Anfragen erstellen und wie Sie die Antworten verarbeiten. Wir empfehlen allen Nutzern von Speech-to-Text, diesen Leitfaden zu lesen und eine der zugehörigen Anleitungen durchzugehen, bevor sie sich näher mit der API an sich befassen.

Jetzt testen

Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit von Speech-to-Text in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.

Speech-to-Text kostenlos testen

Sprachanfragen

Speech-to-Text verwendet zur Spracherkennung die folgenden drei Hauptmethoden:

  • Bei der synchronen Erkennung (REST und gRPC) werden Audiodaten an die Speech-to-Text API gesendet. Für die Daten wird eine Spracherkennung durchgeführt und die Ergebnisse werden zurückgegeben, nachdem alle Audiodaten verarbeitet wurden. Anfragen für eine synchrone Erkennung sind auf Audiodaten mit einer maximalen Dauer von einer Minute beschränkt.

  • Bei der asynchronen Erkennung (REST und gRPC) werden Audiodaten an die Speech-to-Text API gesendet und es wird ein lang andauernder Vorgang initiiert. Während dieses Vorgangs können Sie regelmäßig Erkennungsergebnisse abfragen. Verwenden Sie asynchrone Anfragen für Audiodaten von einer beliebigen Dauer bis zu maximal 480 Minuten.

  • Bei der Streamingerkennung (nur gRPC) wird die Spracherkennung für Audiodaten innerhalb eines bidirektionalen gRPC-Streams durchgeführt. Bei Streaminganfragen erfolgt die Erkennung in Echtzeit, zum Beispiel bei der Aufnahme von Live-Audio mit einem Mikrofon. Die Streamingerkennung liefert während der Aufnahme der Audiodaten Zwischenergebnisse, sodass das Ergebnis zum Beispiel bereits angezeigt wird, während ein Nutzer noch spricht.

Anfragen enthalten sowohl Konfigurationsparameter als auch Audiodaten. In den folgenden Abschnitten wird ausführlicher auf diese Arten von Erkennungsanfragen, die von ihnen generierten Antworten und die Verarbeitung dieser Antworten eingegangen.

Erkennung mit der Speech-to-Text API

Die einfachste Methode zur Spracherkennung aus Audiodaten besteht darin, eine Anfrage zur synchronen Erkennung an die Speech-to-Text API zu stellen. Speech-to-Text kann bis zu 1 Minute Audiosprachdaten verarbeiten, die in einer synchronen Anfrage gesendet wurden. Nachdem Speech-to-Text alle Audiodaten verarbeitet und erkannt hat, wird eine Antwort zurückgegeben.

Eine synchrone Anfrage blockiert. Das bedeutet, dass Speech-to-Text vor der Verarbeitung der nächsten Anfrage eine Antwort zurückgeben muss. Speech-to-Text verarbeitet Audiodaten in der Regel schneller als in Echtzeit. Audiodaten von 30 Sekunden Dauer werden im Durchschnitt in 15 Sekunden verarbeitet. Bei schlechter Audioqualität kann die Erkennungsanfrage allerdings deutlich länger dauern.

Speech-to-Text bietet sowohl REST- als auch gRPC-Methoden fürs Aufrufen von synchronen und asynchronen Speech-to-Text API-Anfragen. In diesem Artikel wird zu Demonstrationszwecken die REST API verwendet, da die grundlegende Verwendung der API so einfacher darstellbar und erklärbar ist. Der grundlegende Aufbau einer REST-Anfrage ist jedoch mit dem Aufbau einer gRPC-Anfrage vergleichbar. Anfragen für eine Streamingerkennung werden jedoch nur von gRPC unterstützt.

Synchrone Spracherkennungsanfragen

Eine synchrone Speech-to-Text API-Anfrage besteht aus einer Spracherkennungskonfiguration und Audiodaten. Im Folgenden finden Sie eine Beispielanfrage:

{
    "config": {
        "encoding": "LINEAR16",
        "sampleRateHertz": 16000,
        "languageCode": "en-US",
    },
    "audio": {
        "uri": "gs://bucket-name/path_to_audio_file"
    }
}

Alle synchronen Erkennungsanfragen an die Speech-to-Text API müssen ein Spracherkennungsfeld namens config vom Typ RecognitionConfig enthalten. RecognitionConfig enthält die folgenden untergeordneten Felder:

  • encoding (erforderlich) gibt das Codierungsschema der bereitgestellten Audiodaten vom Typ AudioEncoding an. Wenn Sie den Codec frei wählen können, sollten Sie eine verlustfreie Codierung wie FLAC oder LINEAR16 nutzen, um die bestmögliche Leistung zu erzielen. Weitere Informationen finden Sie unter Unterstützte Audiocodierungen. Das Feld encoding ist optional für FLAC- und WAV-Dateien, bei denen die Codierung im Dateiheader enthalten ist.
  • sampleRateHertz (erforderlich) gibt die Abtastrate der bereitgestellten Audiodaten (in Hertz) an. Weitere Informationen zu Abtastraten finden Sie unten im Abschnitt Abtastraten. Das Feld sampleRateHertz ist optional für FLAC- und WAV-Dateien, bei denen die Abtastrate im Dateiheader enthalten ist.
  • languageCode (erforderlich) enthält die Sprache und Region, die zur Spracherkennung der bereitgestellten Audiodaten zu verwenden ist. Der Sprachcode muss eine BCP-47-Kennung sein. Beachten Sie, dass Sprachcodes in der Regel aus den primären Sprach-Tags und sekundären Tags für die Region zur Angabe von Dialekten bestehen. Im obigen Beispiel ist dies "en" für Englisch und "US" für die Vereinigten Staaten. Eine Liste der unterstützten Sprachen finden Sie unter Unterstützte Sprachen.
  • maxAlternatives – (optional, standardmäßig 1) gibt die Anzahl der alternativen Transkriptionen an, die in der Antwort bereitgestellt werden sollen. Standardmäßig bietet die Speech-to-Text API eine primäre Transkription an. Wenn Sie verschiedene Alternativen auswerten möchten, setzen Sie maxAlternatives auf einen höheren Wert. Beachten Sie, dass Speech-to-Text nur dann Alternativen zurückgibt, wenn bei der Erkennung Alternativen von ausreichender Qualität ermittelt werden. Im Allgemeinen eignen sich Alternativen eher für Echtzeitanfragen, die eine Nutzerrückmeldung erfordern (z. B. Sprachbefehle). Sie sind daher besser für Anfragen zur Streamingerkennung geeignet.
  • profanityFilter – (optional) gibt an, ob anstößige Wörter oder Wortgruppen herausgefiltert werden sollen. Wörter, die herausgefiltert werden, enthalten ihren ersten Buchstaben und Sternchen für die restlichen Zeichen, z. B. S******. Dieser Filter basiert auf einzelnen Wörtern. Satzteile oder Wortkombinationen, die als Schimpfworte verwendet werden oder verletzend sind, können daher nicht umfassend herausgefiltert werden.
  • speechContext – (optional) enthält zusätzliche kontextbezogene Informationen zur Verarbeitung dieser Audiodaten. Ein Kontext enthält das folgende untergeordnete Feld:
    • phrases – enthält eine Liste von Wörtern und Wortfolgen, die Hinweise für die Spracherkennung enthalten. Mehr erfahren Sie in den Informationen zum Sprachkontext.

Audiodaten werden mit dem Parameter audio vom Typ RecognitionAudio an Speech-to-Text übergeben. Das Feld audio enthält eines der folgenden untergeordneten Felder:

  • content enthält die auszuwertenden Audiodaten, eingebettet in die Anfrage. Weitere Informationen finden Sie unten im Abschnitt Audioinhalte einbetten. Audiodaten, die direkt in diesem Feld übergeben werden, sind auf eine maximale Dauer von 1 Minute begrenzt.
  • uri enthält einen URI, der auf den Audioinhalt verweist. Die Datei darf nicht komprimiert sein (z. B. mit gzip). Derzeit muss dieses Feld einen Google Cloud Storage-URI im Format gs://bucket-name/path_to_audio_file enthalten. Weitere Informationen finden Sie unten im Abschnitt Audioverweis durch URI übergeben.

Weitere Informationen zu diesen Anfrage- und Antwortparametern finden Sie nachstehend.

Abtastraten

Die Abtastrate für Ihre Audiodaten wird im Feld sampleRateHertz der Anfragekonfiguration festgelegt. Sie muss der Abtastrate des bereitgestellten Audioinhalts oder Streams entsprechen. Speech-to-Text unterstützt Abtastraten zwischen 8.000 und 48.000 Hz. Sie können die Abtastrate für eine FLAC- oder WAV-Datei im Dateiheader angeben, anstatt das sampleRateHertz-Feld zu verwenden. Eine FLAC-Datei muss die Abtastrate im FLAC-Header enthalten, damit sie an die Speech-to-Text API gesendet werden kann.

Wenn Sie bei der Codierung des Quellmaterials eine Wahl haben, erfassen Sie Audio mit einer Abtastrate von 16.000 Hz. Niedrigere Werte können die Spracherkennungsgenauigkeit beeinträchtigen, höhere Werte haben keine nennenswerte Auswirkung auf die Spracherkennungsqualität.

Wenn Ihre Audiodaten jedoch bereits mit einer anderen Abtastrate als 16.000 Hz aufgezeichnet wurden, sollten Sie Ihre Audiodaten nicht mit einer Abtastrate von 16.000 Hz resampeln. Die meisten veralteten Audiocodecs für Telefonie nutzen beispielsweise Abtastraten von 8.000 Hz, die weniger genaue Ergebnisse liefern. Wenn Sie solche Audiodaten verwenden müssen, stellen Sie sie der Speech API mit ihrer nativen Abtastrate bereit.

Sprachen

Die Erkennungs-Engine von Speech-to-Text unterstützt eine Vielzahl von Sprachen und Dialekten. Die Sprache sowie der nationale oder regionale Dialekt Ihrer Audiodaten werden im Feld languageCode der Anfragekonfiguration angegeben. Dazu verwenden Sie eine BCP 47-Kennung.

Eine vollständige Liste der unterstützten Sprachen für die einzelnen Features finden Sie auf der Seite Sprachunterstützung.

Zeitversätze (Zeitstempel)

Speech-to-Text kann Zeitverschiebungswerte (Zeitstempel) für den Beginn und das Ende eines jeden gesprochenen Wortes zurückgeben, das in den bereitgestellten Audiodaten erkannt wird. Ein Zeitverschiebungswert gibt die Zeit in Schritten von 100 ms an, die seit Beginn des Audiosignals vergangen ist.

Zeitverschiebungen sind besonders nützlich für die Analyse von längeren Audiodateien, in denen Sie eventuell nach einem bestimmten Wort im erkannten Text suchen und dieses in den Originalaudioinhalten finden möchten. Zeitversätze werden in allen unseren Spracherkennungsmethoden unterstützt: recognize, streamingrecognize und longrunningrecognize.

Zeitverschiebungswerte werden nur für die erste Alternative der Erkennungsantwort eingefügt.

Sie können den Ergebnissen Ihrer Anfragen Zeitversätze hinzufügen, wenn Sie den Parameter enableWordTimeOffsets in Ihrer Anfragekonfiguration auf "true" setzen. Beispiele für die Verwendung der REST API oder der Clientbibliotheken finden Sie unter Zeitverschiebungen (Zeitstempel) verwenden. Sie können beispielsweise den Parameter enableWordTimeOffsets in die Anfragekonfiguration aufnehmen, wie hier gezeigt:

{
"config": {
  "languageCode": "en-US",
  "enableWordTimeOffsets": true
  },
"audio":{
  "uri":"gs://gcs-test-data/gettysburg.flac"
  }
}

Das Ergebnis, das von der Speech-to-Text API zurückgegeben wird, enthält Zeitverschiebungswerte für jedes erkannte Wort, wie im Folgenden gezeigt:

{
  "name": "6212202767953098955",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
    "progressPercent": 100,
    "startTime": "2017-07-24T10:21:22.013650Z",
    "lastUpdateTime": "2017-07-24T10:21:45.278630Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
    "results": [
      {
        "alternatives": [
          {
            "transcript": "Four score and twenty...(etc)...",
            "confidence": 0.97186122,
            "words": [
              {
                "startTime": "1.300s",
                "endTime": "1.400s",
                "word": "Four"
              },
              {
                "startTime": "1.400s",
                "endTime": "1.600s",
                "word": "score"
              },
              {
                "startTime": "1.600s",
                "endTime": "1.600s",
                "word": "and"
              },
              {
                "startTime": "1.600s",
                "endTime": "1.900s",
                "word": "twenty"
              },
              ...
            ]
          }
        ]
      },
      {
        "alternatives": [
          {
            "transcript": "for score and plenty...(etc)...",
            "confidence": 0.9041967,
          }
        ]
      }
    ]
  }
}

Modellauswahl

Speech-to-Text kann eines von mehreren Modellen für maschinelles Lernen verwenden, um Audiodateien zu transkribieren. Google hat diese Spracherkennungsmodelle für spezifische Audiotypen und -quellen trainiert.

Wenn Sie eine Anfrage zur Audiotranskription an Speech-to-Text senden, können Sie die Ergebnisse verbessern, wenn Sie die Quelle der ursprünglichen Audiodaten angeben. Diese Angabe ermöglicht der Speech-to-Text API, Ihre Audiodateien mithilfe eines Modells für maschinelles Lernen zu verarbeiten, das speziell dafür trainiert wurde, gesprochene Sprache aus dieser Art von Quelle zu erkennen.

Wenn Sie ein Modell für die Spracherkennung festlegen möchten, fügen Sie in Ihrer Anfrage das Feld model in das Objekt RecognitionConfig ein und geben das gewünschte Modell an.

Speech-to-Text kann die folgenden Arten von Modellen für maschinelles Lernen verwenden, um Audiodateien zu transkribieren.

Typ Enum-Konstante Beschreibung
Aktuelle Langversion latest_long

Verwenden Sie dieses Modell für alle Arten von langen Inhalten wie Medien oder spontane Sprache und Unterhaltungen. Verwenden Sie dieses Modell anstelle des Videomodells, insbesondere wenn das Videomodell nicht in Ihrer Zielsprache verfügbar ist. Sie können dies auch anstelle des Standardmodells verwenden.

Aktuelle Kurzversion latest_short

Verwenden Sie dieses Modell für kurze Äußerungen, die einige Sekunden lang sind. Diese Methode ist hilfreich, um Befehle oder andere Anwendungsfälle für die gezielte Sprachausgabe zu erfassen. Verwenden Sie dieses Modell anstelle des Befehls- und Suchmodells.

Video video

Verwenden Sie dieses Modell, um Audio in Videoclips oder anderen Quellen (z. B. Podcasts) mit mehreren Sprechern zu transkribieren. Dieses Modell ist auch oft die beste Wahl für Audiodaten, die mit einem hochwertigen Mikrofon aufgenommen wurden oder viele Hintergrundgeräusche haben. Optimale Ergebnisse erzielen Sie, wenn Sie Audiodaten bereitstellen, die mit einer Abtastrate von mindestens 16.000 Hz aufgezeichnet wurden.

Hinweis: Dies ist ein Premiummodell, dessen Preis über dem Standardpreis liegt.

Telefonanruf phone_call

Verwenden Sie dieses Modell zum Transkribieren der Audiodaten eines Telefonanrufs. In der Regel werden Smartphone-Audiodaten mit einer Abtastrate von 8.000 Hz aufgezeichnet.

Hinweis: Das optimierte Telefonmodell ist ein Premiummodell, dessen Preis über dem Standardpreis liegt.

ASR: Befehl und Suche command_and_search

Verwenden Sie dieses Modell zum Transkribieren kürzerer Audioclips. Beispiele hierfür sind Sprachbefehle und Sprachsuchen.

ASR: Standard default

Verwenden Sie dieses Modell, wenn die Audiodaten zu keinem der anderen in dieser Tabelle beschriebenen Modelle passen. Sie können es beispielsweise für lange Audioaufnahmen mit nur einem Sprecher nutzen. Das Standardmodell erstellt Transkriptionsergebnisse für jede Art von Audio, einschließlich Audio, z. B. Videoclips mit einem separaten Modell, das speziell auf diese zugeschnitten ist. Die Erkennung von Videoclip-Audios mit dem Standardmodell führt jedoch wahrscheinlich zu schlechteren Ergebnissen als bei der Verwendung des Videomodells. Idealerweise sollten dies High-Fidelity-Audiodaten sein, die mit einer Abtastrate von mindestens 16.000 Hz aufgezeichnet wurden.

Medizinisches Diktat medical_dictation

Verwenden Sie dieses Modell zum Transkribieren von Notizen, die von medizinischen Fachkräften diktiert wurden.

Medizinisches Gespräch medical_conversation

Verwenden Sie dieses Modell, um Unterhaltungen zwischen einem Arzt und einem Patienten zu transkribieren.

Eingebettete Audioinhalte

Eingebettete Audioinhalte können mit dem Parameter content des Feldes audio in eine Spracherkennungsanfrage eingefügt werden. Es lassen sich nur Audiodaten als "content" in einer gRPC-Anfrage bereitstellen, die mit der Proto3-Serialisierung kompatibel sind. Ferner müssen die Audiodaten in Form von Binärdaten eingefügt werden. Eingebettete Audiodaten, die als "content" in einer REST-Anfrage bereitgestellt werden, müssen mit der JSON-Serialisierung kompatibel und base64-codiert sein. Weitere Informationen finden Sie unter Base64-Codierung von Audioinhalten.

Beim Erstellen einer Anfrage über eine Google Cloud-Clientbibliothek werden diese Binärdaten bzw. base64-codierten Daten normalerweise direkt in das Feld content geschrieben.

Audioverweis durch URI übergeben

In den meisten Fällen verweisen Sie wahrscheinlich mit dem Parameter uri des Feldes audio in der Sprachanfrage (im Binärformat, nicht mit base64) auf eine Audiodatei, die sich in Google Cloud Storage befindet. Der Verweis wird im folgenden Format angegeben:

gs://bucket-name/path_to_audio_file

Beispielsweise verweist der folgende Teil einer Sprachanfrage auf die Beispieldatei, die in der Schnellstartanleitung verwendet wird:

...
    "audio": {
        "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
    }
...

Sie müssen eine zulässige Zugriffsberechtigung haben, um Google Cloud Storage-Dateien zu lesen, z. B. eine der Folgenden:

  • Öffentlich lesbar, wie unsere Beispiel-Audiodateien
  • Von Ihrem Dienstkonto lesbar, wenn Sie die Dienstkontoautorisierung verwenden
  • Von einem Nutzerkonto lesbar, wenn Sie die dreibeinige OAuth-Autorisierung für Nutzerkonten verwenden

Weitere Informationen zur Verwaltung des Zugriffs auf Google Cloud Storage finden Sie unter Zugriffssteuerungslisten erstellen und verwalten in der Google Cloud Storage-Dokumentation.

Speech-to-Text API-Antworten

Wie bereits erwähnt, kann es einige Zeit dauern, bis durch eine synchrone Speech-to-Text API-Antwort Ergebnisse zurückgegeben werden. Die Dauer hängt von der Länge der bereitgestellten Audiodaten ab. Nach der Verarbeitung gibt die API eine Antwort wie diese zurück:

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

Diese Felder werden im Folgenden beschrieben:

  • results enthält die Liste der Ergebnisse vom Typ SpeechRecognitionResult, wobei jedes Ergebnis einem Segment der Audiodaten entspricht. Audiosegmente sind durch Pausen voneinander getrennt. Jedes Ergebnis besteht aus einem oder mehreren der folgenden Felder:
    • alternatives enthält eine Liste möglicher Transkriptionen vom Typ SpeechRecognitionAlternatives. Ob mehrere Alternativen angezeigt werden, hängt davon ab, ob Sie mehrere Alternativen durch Festlegen von maxAlternatives auf einen Wert größer als 1 angefordert haben. Es hängt auch davon ab, ob die Qualität der von Speech-to-Text erzeugten Alternativen hoch genug ist. Jede Alternative besteht aus den folgenden Feldern:
      • transcript enthält den transkribierten Text. Weitere Informationen finden Sie unten im Abschnitt Transkriptionen behandeln.
      • confidence enthält einen Wert zwischen 0 und 1, der angibt, wie hoch Speech-to-Text die Zuverlässigkeit der vorliegenden Transkription einstuft. Weitere Informationen finden Sie nachstehend unter Konfidenzwerte interpretieren.

Wenn im bereitgestellten Audio keine Sprache erkannt werden konnte, enthält die zurückgegebene results-Liste keine Einträge. Nicht erkannte Sprache ist sehr häufig das Ergebnis von schlechter Audioqualität oder von Sprachcodierungen bzw. Abtastraten, die nicht der bereitgestellten Audiodatei entsprechen.

Die Komponenten dieser Antwort werden in den folgenden Abschnitten erläutert.

Bei jeder synchronen Speech-to-Text API-Antwort wird eine Ergebnisliste statt eines einzelnen Ergebnisses mit allen erkannten Audiodaten zurückgegeben. Die Liste der erkannten Audiosegmente (in den transcript-Elementen) wird in zusammenhängender Reihenfolge angezeigt.

Alternativen auswählen

Jedes Ergebnis in einer erfolgreichen Antwort der synchronen Spracherkennung kann eine oder mehrere alternatives enthalten, wenn der Wert maxAlternatives in der Anfrage größer als 1 ist. Wenn Speech-to-Text den Konfidenzwert einer Alternative als hoch genug einstuft, wird die Alternative in die Antwort eingeschlossen. Die erste Alternative in einer Antwort ist immer die beste, d. h. wahrscheinlichste Alternative.

Wenn für maxAlternatives ein höherer Wert als 1 eingestellt wurde, bedeutet dies nicht automatisch, dass mehrere Alternativen zurückgegeben werden. Im Allgemeinen ist das Anfordern mehrerer Alternativen besonders bei der Bereitstellung von Echtzeitoptionen für Nutzer sinnvoll, die Ergebnisse über eine Streamingerkennungsanfrage erhalten möchten.

Transkriptionen behandeln

Jede in einer Antwort gelieferte Alternative enthält ein transcript mit dem erkannten Text. Wenn aufeinanderfolgende Alternativen bereitgestellt werden, sollten Sie diese Transkriptionen verketten.

Der folgende Python-Code durchläuft die Ergebnisliste und verkettet die Transkriptionen miteinander. Beachten Sie, dass wir in allen Fällen die erste Alternative (die nullte) verwenden.

response = service_request.execute()
recognized_text = 'Transcribed Text: \n'
for i in range(len(response['results'])):
    recognized_text += response['results'][i]['alternatives'][0]['transcript']

Konfidenzwerte interpretieren

Der confidence-Wert ist eine Schätzung zwischen 0,0 und 1,0. Zu seiner Berechnung werden die "Wahrscheinlichkeitswerte" aggregiert, die jedem Wort im Audioinhalt zugewiesen sind. Je höher der Wert ist, desto höher ist die geschätzte Wahrscheinlichkeit, dass die einzelnen Wörter korrekt erkannt wurden. Dieses Feld wird meist nur für die oberste Hypothese und nur für die Ergebnisse bereitgestellt, in denen is_final=true gilt. Sie können beispielsweise anhand des confidence-Werts entscheiden, ob Sie dem Nutzer alternative Ergebnisse anzeigen oder ihn um eine Bestätigung bitten möchten.

Beachten Sie jedoch, dass das Modell das "beste", an erster Stelle stehende Ergebnis auf der Grundlage von mehr Signalen als nur des confidence-Werts (z. B. Satzkontext) bestimmt. Aus diesem Grund gibt es gelegentlich Fälle, in denen das beste Ergebnis nicht den höchsten Konfidenzwert hat. Wenn Sie nicht mehrere alternative Ergebnisse angefordert haben, kann das zurückgegebene "beste" Einzelergebnis einen niedrigeren Konfidenzwert haben als erwartet. Dies kann beispielsweise der Fall sein, wenn seltene Wörter verwendet werden. Einem Wort, das nur selten verwendet wird, kann ein niedriger "Wahrscheinlichkeitswert" zugewiesen werden, selbst wenn es richtig erkannt wird. Wenn das Modell anhand des Kontexts feststellt, dass das seltene Wort die wahrscheinlichste Option ist, wird dieses Ergebnis ganz oben zurückgegeben, auch wenn der confidence-Wert des Ergebnisses niedriger als bei alternativen Optionen ist.

Asynchrone Anfragen und Antworten

Eine asynchrone Speech-to-Text API-Anfrage an die Methode LongRunningRecognize ist in der Form mit einer synchronen Speech-to-Text API-Anfrage identisch. Statt jedoch eine Antwort zurückzugeben, wird durch die asynchrone Anfrage ein lang andauernder Vorgang (Typ Vorgang) initiiert und an den Aufgerufenen zurückgegeben Sie können die asynchrone Spracherkennung mit Audiodaten von einer beliebigen Länge bis zu maximal 480 Minuten verwenden.

Eine typische Vorgangsantwort ist nachfolgend dargestellt:

{
  "name": "operation_name",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata"
    "progressPercent": 34,
    "startTime": "2016-08-30T23:26:29.579144Z",
    "lastUpdateTime": "2016-08-30T23:26:29.826903Z"
  }
}

Beachten Sie, dass noch keine Ergebnisse vorhanden sind. Speech-to-Text fährt mit der Verarbeitung der Audiodaten fort und verwendet diesen Vorgang, um die Ergebnisse zu speichern. Die Ergebnisse werden im Feld response des Vorgangs angezeigt, der zurückgegeben wird, wenn die Anfrage LongRunningRecognize abgeschlossen ist.

Eine vollständige Antwort nach Beendigung der Anfrage sieht beispielsweise so aus:

{
  "name": "1268386125834704889",
  "metadata": {
    "lastUpdateTime": "2016-08-31T00:16:32.169Z",
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongrunningRecognizeMetadata",
    "startTime": "2016-08-31T00:16:29.539820Z",
    "progressPercent": 100
  }
  "response": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
    "results": [{
      "alternatives": [{
        "confidence": 0.98267895,
        "transcript": "how old is the Brooklyn Bridge"
      }]}]
  },
  "done": True,
}

Beachten Sie, dass done auf True gesetzt wurde und die response des Vorgangs eine Ergebnismenge vom Typ SpeechRecognitionResult enthält. Dies ist derselbe Typ, der von einer synchronen Speech-to-Text API-Erkennungsanfrage zurückgegeben wird.

Eine asynchrone REST-Antwort legt done standardmäßig auf den Standardwert False fest. Da für JSON jedoch keine Standardwerte in einem Feld erforderlich sind, sollten Sie beim Testen, ob ein Vorgang abgeschlossen ist, sowohl prüfen, ob das Feld done vorhanden ist, als auch, ob es auf True gesetzt ist.

Speech-to-Text API-Anfragen zur Streamingerkennung

Ein Speech-to-Text API-Streamingerkennungsaufruf ist für eine Echtzeiterfassung und -erkennung von Audiodaten in einem bidirektionalen Stream entwickelt worden. Ihre Anwendung kann Audiodaten im Anfragestream senden und vorläufige sowie endgültige Erkennungsergebnisse im Antwortstream in Echtzeit empfangen. Die Zwischenergebnisse geben das aktuelle Erkennungsergebnis für einen Audiobereich wieder, während die endgültigen Erkennungsergebnisse den letzten besten Versuch für diesen Audiobereich darstellen.

Streaminganfragen

Im Gegensatz zu synchronen und asynchronen Aufrufen, bei denen Sie sowohl die Konfiguration als auch die Audiodaten innerhalb einer einzigen Anfrage senden, erfordert die Streaminganfrage der Speech API das Senden mehrerer Anfragen. Die erste StreamingRecognizeRequest-Anfrage muss eine Konfiguration vom Typ StreamingRecognitionConfig ohne begleitende Audiodaten enthalten. Die nachfolgenden StreamingRecognizeRequest-Anfragen, die über denselben Stream gesendet werden, bestehen dann aus aufeinanderfolgenden Frames von Roh-Audiobytes.

Eine StreamingRecognitionConfig besteht aus folgenden Feldern:

  • config – (erforderlich) enthält Konfigurationsinformationen für die Audiodaten vom Typ RecognitionConfig und ist mit dem in synchronen und asynchronen Anfragen gezeigten Feld identisch.
  • single_utterance – (optional, standardmäßig false) gibt an, ob diese Anfrage automatisch beendet werden soll, wenn keine Sprache mehr erkannt wird. Wenn dies festgelegt ist, ermittelt die Speech-to-Text API Pausen, Stille oder sprachloses Audio, um so festzustellen, wann die Erkennung beendet werden soll. Ist dies nicht festgelegt, wird der Audiostream weiter verarbeitet, bis er entweder direkt geschlossen wird oder die maximale Länge des Audiostreams überschritten wurde. single_utterance auf true zu setzen, ist für die Verarbeitung von Sprachbefehlen sinnvoll.
  • interim_results – (optional, standardmäßig false) gibt an, dass diese Streaminganfrage vorläufige Ergebnisse zurückgeben soll, die sich dann nach der Verarbeitung weiterer Audiodaten zu einem späteren Zeitpunkt optimieren lassen. Zwischenergebnisse werden in den Antworten durch Festlegen von is_final auf false gekennzeichnet.

Streamingantworten

Die Ergebnisse einer Streamingspracherkennung werden in einer Reihe von Antworten vom Typ StreamingRecognitionResponse zurückgegeben. Eine solche Antwort umfasst die folgenden Felder:

  • speechEventType enthält Ereignisse vom Typ SpeechEventType. Der Wert dieser Ereignisse weist darauf hin, wann eine einzelne gesprochene Eingabe abgeschlossen ist. Die Sprachereignisse dienen als Marker in der Streamingantwort.
  • results enthält die Liste der Ergebnisse, bei denen es sich entweder um Zwischenergebnisse oder endgültige Ergebnisse vom Typ StreamingRecognitionResult handelt. Die results-Liste enthält folgende untergeordnete Felder:
    • alternatives enthält eine Liste alternativer Transkriptionen.
    • isFinal gibt an, ob die Ergebnisse in diesem Listeneintrag vorläufige oder endgültige Ergebnisse sind. Google kann mehrere isFinal=true-Ergebnisse in einem einzigen Stream zurückgeben, aber das isFinal=true-Ergebnis ist nur garantiert, nachdem der Schreibstream geschlossen wurde (halbgeschlossen).
    • stability gibt die bisherige Volatilität der Ergebnisse an, wobei 0.0 auf vollständige Instabilität und 1.0 auf vollständige Stabilität hinweist. Beachten Sie, dass im Gegensatz zum Konfidenzwert, der die Zuverlässigkeit einer Transkription ermittelt, der stability-Wert eine Schätzung darstellt, ob sich das gegenwärtige Teilergebnis noch ändern wird. Wenn isFinal auf true eingestellt ist, wird stability nicht festgelegt.