Speech-to-Text ist eine der drei vortrainierten Vertex AI APIs in der Google Distributed Cloud (GDC) Air-Gapped Appliance. Der Speech-to-Text-Dienst erkennt Sprache in Audiodateien und transkribiert Audio in Text. Speech-to-Text erfüllt die Anforderungen an den Datenstandort und die Compliance.
In der folgenden Tabelle werden die wichtigsten Funktionen von Speech-to-Text beschrieben:
| Hauptmerkmale | |
|---|---|
| Transkription | Wenden Sie erweiterte Deep-Learning-Algorithmen für neuronale Netzwerke auf die automatische Spracherkennung an. |
| Modelle | Stellen Sie Erkennungsmodelle mit weniger als 1 GB Größe bereit, die nur minimale Ressourcen verbrauchen. |
| API-kompatibel | Mit der Speech-to-Text API und ihren Clientbibliotheken können Sie Audio 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 nachstehenden Tabelle sind die unterstützten Audio-Codecs aufgelistet:
| 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 Audio
dateien 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.
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 der GDC Air-Gapped Appliance bietet die folgenden drei Methoden zur 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. Synchrone Erkennungsanfragen 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 von einer beliebigen Dauer bis zu maximal 480 Minuten.
Streamingerkennung: Die Spracherkennung wird aus Audiodaten durchgeführt, die als bidirektionaler Stream vorliegen. 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 das Ergebnis zum Beispiel bereits angezeigt wird, während ein Nutzer noch spricht.
Anfragen enthalten Konfigurationsparameter und 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 eine 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 eine Antwort zurückgeben, bevor die nächste Anfrage verarbeitet wird. Sie können pro Minute bis zu sieben Minuten Audio transkribieren. Das entspricht sieben Sekunden Audio, die pro Sekunde in jeder Appliance-Einheit transkribiert werden. Bei schlechter Audioqualität kann die Erkennungsanfrage allerdings deutlich länger dauern.
Spracherkennungsanfragen
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 TypAudioEncoding. Wenn Sie den Codec frei wählen können, sollten Sie für die beste Leistung eine verlustfreie Codierung wieFLACoderLINEAR16nutzen. Eine Liste der unterstützten Audiocodierungsformate finden Sie unter Unterstützte Audiocodierungen für Speech-to-Text. Das Feldencodingist optional fürFLAC- undWAV-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 Feldsample_rate_hertzist optional fürFLAC- undWAV-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 stehtenfür Englisch undUSfür die Vereinigten Staaten. Eine Liste der unterstützten Sprachen finden Sie unter Unterstützte Sprachen.
Übergeben Sie Audio mit dem Parameter audio vom Typ RecognitionAudio an Speech-to-Text. 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 Feld sample_rate_hertz 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 Kennung.
Auf der Seite Unterstützte Sprachen finden Sie eine vollständige Liste der unterstützten Sprachen für die einzelnen Funktionen.
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 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 in der GDC Air-Gapped Appliance unterstützt nur das Modell default.
Eingebettete Audioinhalte
Eingebettete Audioinhalte lassen sich durch das Übergeben des Parameters content innerhalb des Feldes audio in eine Spracherkennungsanfrage einfügen. 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 nicht mehr als 60 Sekunden lang und 10 MB groß sind. Alle Audiodaten im Feld content müssen das Base64-Format haben.
Wenn Sie eine Anfrage mit einer Clientbibliothek erstellen, schreiben Sie diese Binärdaten bzw. Base64-codierten Daten direkt in das contentFeld.
Die meisten Entwicklungsumgebungen enthalten ein base64-Dienstprogramm, um eine Binärdatei als ASCII-Textdaten zu codieren. Damit haben Sie die erforderlichen Tools und Unterstützung.
Außerdem hat Python integrierte Mechanismen für die Base64-Codierung von Inhalten. Die folgenden Beispiele zeigen, wie Sie eine Datei codieren:
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 auf Spracherkennungsanfragen
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 TypSpeechRecognitionResult, wobei jedes Ergebnis einem Segment der Audiodaten entspricht. Jedes Ergebnis besteht aus einem oder mehreren der folgenden untergeordneten Felder:alternatives: enthält eine Liste möglicher Transkriptionen vom TypSpeechRecognitionAlternative. Die erste Alternative in einer Antwort ist immer die wahrscheinlichste. Jede Alternative besteht aus den folgenden untergeordneten Feldern: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.
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 Vorgang mit langer Ausführungszeit 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 Anfrage LongRunningRecognize 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.
Streaminganfragen zur Erkennung
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 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.
Antworten auf Streamingerkennungsanfragen
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 TypSpeechEventType. 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 TypStreamingRecognitionResulthandelt. Die Listeresultsenthä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 den zeitlichen Versatz des Endes dieses Ergebnisses relativ zum Beginn des Audios an.