Informationen zu Spracherkennungsfunktionen

Speech-to-Text ist eine der drei vortrainierten Vertex AI-APIs in Google Distributed Cloud (GDC) Air-Gapped. Der Speech-to-Text-Dienst erkennt Sprache in Audiodateien und transkribiert Audioinhalte in Text. Speech-to-Text erfüllt die Anforderungen hinsichtlich Datenstandort und Compliance.

In der folgenden Tabelle werden die wichtigsten Funktionen von Speech-to-Text beschrieben:

Hauptmerkmale
Sprache-zu-Text Wenden Sie hochentwickelte Deep-Learning-Algorithmen für neuronale Netzwerke auf die automatische Spracherkennung an.
Modelle Stellen Sie Erkennungsmodelle bereit, die weniger als 1 GB groß sind und nur minimale Ressourcen verbrauchen.
API-kompatibel Mit der Speech-to-Text API und ihren Clientbibliotheken können Sie Audiodaten senden und eine Texttranskription vom Speech-to-Text-Dienst empfangen.

Unterstützte Audiocodierungen für Speech-to-Text

Die Speech-to-Text API unterstützt verschiedene Codierungen. In der folgenden Tabelle sind die unterstützten Audio-Codecs aufgeführt:

Codec Name Verlustfrei Verwendungshinweise
FLAC Free Lossless Audio Codec Ja 16 Bit oder 24 Bit für Streams
LINEAR16 Linear PCM Ja 16-Bit-Codierung mit linearer Pulscodemodulation (PCM). Der Header muss die Abtastrate enthalten.
MULAW μ-law Nein 8-Bit-PCM-Codierung
OGG_OPUS Opus-codierte Audioframes in einem Ogg-Container Nein Abtastrate muss 8.000 Hz, 12.000 Hz, 16.000 Hz, 24.000 Hz oder 48.000 Hz sein.

FLAC ist sowohl ein Audio-Codec als auch ein Audiodateiformat. Wenn Sie Audiodateien mit FLAC-Codierung transkribieren möchten, müssen Sie sie im .FLAC-Dateiformat bereitstellen, wobei die Dateien Header mit Metadaten enthalten müssen.

Speech-to-Text unterstützt WAV-Dateien mit LINEAR16- oder MULAW-codierten Audiodaten.

Weitere Informationen zu den Audio-Codecs von Speech-to-Text finden Sie in der Referenzdokumentation zu AudioEncoding.

Wenn Sie bei der Codierung des Quellmaterials eine Wahl haben, verwenden Sie eine verlustfreie Codierung wie FLAC oder LINEAR16 für eine bessere Spracherkennung.

Speech-to-Text-Funktionen

Speech-to-Text in Distributed Cloud bietet die folgenden drei Methoden für die Spracherkennung:

  • Synchrone Erkennung: Audiodaten werden an die Speech-to-Text API gesendet, für die Daten wird eine Spracherkennung durchgeführt und die Ergebnisse werden nach der Audioverarbeitung zurückgegeben. Anfragen für eine synchrone Erkennung sind auf Audiodaten mit einer maximalen Dauer von einer Minute beschränkt.

  • Asynchrone Erkennung: Audiodaten werden an die Speech-to-Text API gesendet und ein Vorgang mit langer Ausführungszeit wird initiiert. Während dieses Vorgangs können Sie regelmäßig Erkennungsergebnisse abfragen. Verwenden Sie asynchrone Anfragen für Audiodaten mit einer Dauer bis zu 480 Minuten.

  • Streamingerkennung: Führt die Spracherkennung für Audiodaten durch, die in einem bidirektionalen Stream bereitgestellt werden. Bei den 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 Ergebnisse zum Beispiel bereits angezeigt werden, während ein Nutzer noch spricht.

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

Synchrone Anfragen und Antworten

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 einer 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.

Speech-to-Text muss vor der Verarbeitung der nächsten Anfrage eine Antwort zurückgeben. 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.

Anfragen zur Spracherkennung

Eine synchrone Speech-to-Text API-Anfrage besteht aus einer Spracherkennungskonfiguration und Audiodaten. Das folgende Beispiel zeigt eine Anfrage:

{
    "config": {
        "encoding": "LINEAR16",
        "sample_rate_hertz": 16000,
        "language_code": "en-US",
    },
    "audio": {
        "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..."
    }
}

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

  • encoding: Gibt das Codierungsschema der bereitgestellten Audiodaten an. Dieses Feld hat den Typ AudioEncoding. Wenn Sie den Codec frei wählen können, sollten Sie für die beste Leistung eine verlustfreie Codierung wie FLAC oder LINEAR16 nutzen. Eine Liste der unterstützten Audio-Codierungsformate finden Sie unter Unterstützte Audio-Codierungen für Speech-to-Text. Das Feld encoding ist optional für FLAC- und WAV-Dateien, bei denen die Codierung im Dateiheader enthalten ist.
  • sample_rate_hertz: Gibt die Abtastrate der bereitgestellten Audiodaten in Hertz an. Weitere Informationen zu Abtastraten finden Sie unter Abtastraten. Das Feld sample_rate_hertz ist optional für FLAC- und WAV-Dateien, bei denen die Abtastrate im Dateiheader enthalten ist.
  • language_code: enthält die Sprache und Region, die zur Spracherkennung der bereitgestellten Audiodaten zu verwenden ist. Der Sprachcode muss eine BCP-47-Kennung sein. Sprachcodes bestehen aus primären Sprach-Tags und sekundären Tags für die Region zur Angabe von Dialekten. Im Beispiel steht en für Englisch und US für die USA. Eine Liste der unterstützten Sprachen finden Sie unter Unterstützte Sprachen.

Weitere Informationen und eine Beschreibung der optionalen Unterfelder, die Sie in das Feld config aufnehmen können, finden Sie unter RecognitionConfig.

Audiodaten werden mit dem Parameter audio vom Typ RecognitionAudio an Speech-to-Text übergeben. Das Feld audio enthält das folgende untergeordnete Feld:

  • content enthält die auszuwertenden Audiodaten, eingebettet in die Anfrage. Die Audiodatenbyte werden mit einer reinen Binärdarstellung codiert. JSON-Darstellungen verwenden Base64. Weitere Informationen finden Sie unter Eingebettete Audioinhalte. Audiodaten, die direkt in diesem Feld übergeben werden, sind auf eine maximale Dauer von einer Minute begrenzt.

Abtastraten

Die Abtastrate für Ihre Audiodaten wird im Feld sample_rate_hertz der Anfragekonfiguration festgelegt. Sie muss der Abtastrate des bereitgestellten Audioinhalts 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 sample_rate_hertz-Feld zu verwenden. Das Feld sample_rate_hertz ist jedoch für alle anderen Audioformate erforderlich.

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 Sie Ihre Audiodaten jedoch mit einer anderen Abtastrate als 16.000 Hz aufgezeichnet haben, sollten Sie sie nicht mit einer Abtastrate von 16.000 Hz resampeln. Die meisten Legacy-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-to-Text API mit ihrer ursprünglichen 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 language_code der Anfragekonfiguration angegeben. Dazu verwenden Sie eine BCP-47.

Eine vollständige Liste der unterstützten Sprachen für die einzelnen Funktionen finden Sie auf der Seite Unterstützte Sprachen.

Modellauswahl

Wenn Sie eine Anfrage zur Audiotranskription an Speech-to-Text senden, können Sie Ihre Audiodateien mit einem Modell für maschinelles Lernen verarbeiten, das für die Erkennung von Sprachaudio aus einem bestimmten Quelltyp trainiert wurde.

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 in Distributed Cloud unterstützt die folgenden zwei Modelle:

  • default: Transkribieren von Audio, das kein bestimmtes Audiomodell ist, z. B. Audio in Langform.
  • chirp: Transkribieren Sie mehrsprachige Audioinhalte, wenn eine höhere Genauigkeit erforderlich ist. Chirp führt die automatische Spracherkennung in vielen Sprachen durch, auch wenn es sich um Sprachen mit geringen Ressourcen handelt, für die nicht viele gekennzeichnete Daten zum Trainieren verfügbar sind.

Eingebettete Audioinhalte

Eingebettete Audioinhalte können mit dem Parameter content des Feldes audio in eine Spracherkennungsanfrage eingefügt werden. Eingebettete Audiodaten, die als „content“ in einer REST-Anfrage bereitgestellt werden, müssen mit der JSON-Serialisierung kompatibel sein.

Daten können zur synchronen Erkennung nur direkt im Feld content gesendet werden, wenn sie maximal 60 Sekunden und 10 MB groß sind. Alle Audiodaten im Feld content müssen das Base64-Format haben.

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

Die meisten Entwicklungsumgebungen enthalten ein base64-Dienstprogramm, um ein Binärbild als ASCII-Textdaten zu codieren. Außerdem hat Python integrierte Mechanismen für die Base64-Codierung von Inhalten. Die folgenden Beispiele zeigen, wie eine Datei codiert wird:

Linux

Codieren Sie die Datei mit dem base64-Befehlszeilentool. Verhindern Sie Zeilenumbrüche mit dem Flag -w 0:

base64 INPUT_FILE -w 0 > OUTPUT_FILE

Python

So codieren Sie Audiodateien mit Base64 in Python:

# Import the base64 encoding library.
import base64

# Pass the audio data to an encoding function.
def encode_audio(audio):
  audio_content = audio.read()
  return base64.b64encode(audio_content)

Antworten zur Spracherkennung

Es kann einige Zeit dauern, bis durch eine synchrone Speech-to-Text API-Antwort Ergebnisse zurückgegeben werden. Nach der Verarbeitung gibt die API eine Antwort wie im folgenden Beispiel zurück:

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

Alle synchronen Erkennungsantworten der Speech-to-Text API enthalten Spracherkennungsergebnisse vom Typ RecognizeResponse. Ein RecognizeResponse-Objekt enthält die folgenden Felder:

  • results: Enthält die Liste der Ergebnisse vom Typ SpeechRecognitionResult, wobei jedes Ergebnis einem Segment der Audiodaten entspricht. Jedes Ergebnis besteht aus einem oder mehreren der folgenden Unterfelder:

    • alternatives: Enthält eine Liste möglicher Transkriptionen vom Typ SpeechRecognitionAlternative. Die erste Alternative in einer Antwort ist immer die wahrscheinlichste. Jede Alternative besteht aus den folgenden Unterfeldern:

      • transcript: Enthält den transkribierten Text. Wenn aufeinanderfolgende Alternativen bereitgestellt werden, können Sie diese Transkriptionen verketten.
      • words: Enthält eine Liste mit wortspezifischen Informationen für jedes erkannte Wort.

Weitere Informationen finden Sie unter RecognizeResponse.

Asynchrone Anfragen und Antworten

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

Hier ist ein Beispiel für eine Vorgangsantwort:

{
  "name": "OPERATION_NAME",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.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 LongRunningRecognize-Anfrage abgeschlossen ist.

Das folgende Beispiel zeigt eine vollständige Antwort nach Beendigung der Anfrage:

{
  "name": "1268386125834704889",
  "metadata": {
    "lastUpdateTime": "2016-08-31T00:16:32.169Z",
    "@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.LongRunningRecognizeMetadata",
    "startTime": "2016-08-31T00:16:29.539820Z",
    "progressPercent": 100
  }
  "response": {
    "@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.LongRunningRecognizeResponse",
    "results": [{
      "alternatives": [{
        "transcript": "how old is the Brooklyn Bridge",
        "words": [
            {
              "word": "how"
            },
            {
              "word": "old"
            },
            {
              "word": "is"
            },
            {
              "word": "the"
            },
            {
              "word": "Brooklyn"
            },
            {
              "word": "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 Erkennungsanfrage zurückgegeben wird.

Streaminganfragen und -antworten

Ein Aufruf zur Streamingerkennung an die Speech-to-Text API ist so ausgelegt, dass damit Audiodaten in einem bidirektionalen Stream in Echtzeit erfasst und erkannt werden können. 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.

Streaming-Erkennungsanfragen

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 an die Speech-to-Text API das Senden mehrerer Anfragen. Die erste StreamingRecognizeRequest-Anfrage muss eine Konfiguration vom Typ StreamingRecognitionConfig enthalten.

Eine StreamingRecognitionConfig besteht aus dem Feld config, das Konfigurationsinformationen für die Audiodaten vom Typ RecognitionConfig enthält und mit dem in synchronen und asynchronen Anfragen gezeigten Feld identisch ist.

Streamingerkennungsantworten

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

  • speech_event_type: 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 die folgenden untergeordneten Felder:
    • alternatives: Enthält eine Liste alternativer Transkriptionen.
    • is_final: Gibt an, ob die Ergebnisse in diesem Listeneintrag vorläufige oder endgültige Ergebnisse sind.
    • result_end_time: Gibt die Zeitverschiebung des Endes dieses Ergebnisses relativ zum Beginn des Audios an.

Chip: Universal-Sprachmodell

Chirp ist die nächste Generation von Speech-to-Text-Modellen in Google Distributed Cloud (GDC) Air-Gapped. Chirp ist eine Version eines universellen Sprachmodells mit über 2 Mrd. Parametern, das in einem einzigen Modell in vielen Sprachen transkribieren kann.

Sie können Audiodateien in anderen unterstützten Sprachen transkribieren, indem Sie die Chirp-Komponente aktivieren.

Chirp erreicht eine hochmoderne Word Error Rate (WER) für verschiedene öffentliche Testsets und Sprachen und bietet mehrsprachige Unterstützung in Distributed Cloud. Dabei wird ein universeller Encoder verwendet, mit dem Modelle mit einer anderen Architektur als bei aktuellen Sprachmodellen trainiert werden. Außerdem werden Daten in vielen anderen Sprachen verwendet. Das Modell wird dann so optimiert, dass es Transkriptionen für bestimmte Sprachen anbieten kann. Ein einzelnes Modell vereint Daten aus mehreren Sprachen. Nutzer geben jedoch weiterhin die Sprache an, in der das Modell Sprache erkennen soll.

Chirp verarbeitet Sprache in viel größeren Blöcken als andere Modelle. Ergebnisse sind erst verfügbar, wenn ein ganzer Äußerungsvorgang abgeschlossen ist. Das bedeutet, dass Chirp möglicherweise nicht für die tatsächliche Nutzung geeignet ist.

Die Modell-ID für Chirp lautet chirp. Daher können Sie den Wert chirp im Feld model des RecognitionConfig-Objekts der Anfrage festlegen.

Verfügbare API-Methoden

Chirp unterstützt sowohl die Speech-to-Text API-Methoden Recognize als auch StreamingRecognize.

Die beiden Methoden unterscheiden sich, weil StreamingRecognize nur nach jeder Äußerung Ergebnisse zurückgibt. Aus diesem Grund hat diese Methode nach dem Beginn der Sprache eine Latenz von Sekunden statt Millisekunden im Vergleich zur Methode Recognize. StreamingRecognize hat jedoch eine sehr geringe Latenz, nachdem eine Äußerung beendet wurde, z. B. in einem Satz, auf den eine Pause folgt.