Erkennungsmetadaten hinzufügen

Auf dieser Seite wird beschrieben, wie Sie zusätzliche Details über die Audioquelle hinzufügen, die in einer Spracherkennungsanfrage an Speech-to-Text enthalten ist.

In Speech-to-Text gibt es mehrere Modelle für maschinelles Lernen, mit denen aufgezeichnete Audiodaten in Text umgewandelt werden. Jedes dieser Modelle wurde basierend auf spezifischen Eigenschaften der Audioeingangsdaten trainiert, einschließlich des Typs der Audiodatei, des ursprünglichen Aufnahmegeräts, des Abstands des Sprechers vom Aufnahmegerät und der Anzahl der Sprecher in der Audiodatei.

Wenn Sie eine Transkriptionsanfrage an Speech-to-Text senden, können Sie diese zusätzlichen Details über die Audiodaten innerhalb der übermittelten Erkennungsmetadaten angeben. Mithilfe dieser Details kann Speech-to-Text Ihre Audiodaten genauer transkribieren.

Google erfasst diese Metadaten, um die gängigsten Anwendungsfälle für Speech-to-Text zu analysieren und zusammenzufassen. Dies ermöglicht Google, sich bei Verbesserungen von Speech-to-Text auf die häufigsten Anwendungsfälle zu konzentrieren.

Verfügbare Metadatenfelder

Sie können in den Metadaten einer Transkriptionsanfrage die folgenden Felder angeben.

Feld Typ Beschreibung
interactionType ENUM Der Anwendungsfall der Audiodaten.
industryNaicsCodeOfAudio Zahl Die Branche der Audiodatei als sechsstelliger NAICS-Code.
microphoneDistance ENUM Der Abstand des Mikrofons vom Sprecher.
originalMediaType ENUM Das ursprüngliche Medium des Audiomaterials, entweder reines Audio oder Video.
recordingDeviceType ENUM Die Art des für die Audioaufnahme verwendeten Geräts, einschließlich Smartphones, PC-Mikrofonen und Fahrzeugen.
recordingDeviceName String Das für die Aufzeichnung verwendete Gerät. Dieser beliebig festlegbare String kann Wörter wie "Pixel XL", "VoIP" oder "Nierenmikrofon" enthalten.
originalMimeType String Der MIME-Typ der ursprünglichen Audiodatei. Beispiele hierfür sind "audio/m4a", "audio/x-alaw-basic", "audio/mp3" und "audio/3gpp".
obfuscatedId String Die dem Datenschutz unterliegende ID des Nutzers. Diese dient dazu, die Anzahl der einzelnen Nutzer zu bestimmen, die den Dienst verwenden.
audioTopic String Eine beliebig festlegbare Beschreibung des in der Audiodatei besprochenen Themas. Beispiele sind "Führung durch New York", "Gerichtsverhandlung" oder "Liveinterview zwischen zwei Personen".

Weitere Informationen über diese Felder finden Sie in der Referenzdokumentation zu RecognitionMetadata.

Erkennungsmetadaten aktivieren

Wenn Sie einer Spracherkennungsanfrage an die Speech-to-Text API Erkennungsmetadaten hinzufügen möchten, setzen Sie das Feld metadata der Anfrage auf ein Objekt vom Typ RecognitionMetadata. Die Speech-to-Text API unterstützt Erkennungsmetadaten für alle Spracherkennungsmethoden: speech:recognize, speech:longrunningrecognize und Streaming. Weitere Informationen zu den Arten von Metadaten, die Sie in einer Anfrage angeben können, finden Sie in der Referenzdokumentation zu RecognitionMetadata.

Der folgende Code zeigt, wie Sie in einer Transkriptionsanfrage zusätzliche Metadatenfelder angeben.

Protokoll

Ausführliche Informationen finden Sie unter dem API-Endpunkt speech:recognize.

Für eine synchrone Spracherkennung senden Sie eine POST-Anfrage und geben den entsprechenden Anfragetext an. Das folgende Beispiel zeigt eine POST-Anfrage mit curl. In diesem Beispiel wird das Zugriffstoken für ein Dienstkonto verwendet, das mit dem Google Cloud CLI für das Projekt eingerichtet wurde. Anleitungen zur Installation des gcloud-CLI, zur Einrichtung eines Dienstkontos für ein Projekt und zur Anforderung eines Zugriffstokens finden Sie in der Kurzanleitung.

curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer "$(gcloud auth print-access-token) \
    https://speech.googleapis.com/v1p1beta1/speech:recognize \
    --data '{
    "config": {
        "encoding": "FLAC",
        "sampleRateHertz": 16000,
        "languageCode": "en-US",
        "enableWordTimeOffsets":  false,
        "metadata": {
            "interactionType": "VOICE_SEARCH",
            "industryNaicsCodeOfAudio": 23810,
            "microphoneDistance": "NEARFIELD",
            "originalMediaType": "AUDIO",
            "recordingDeviceType": "OTHER_INDOOR_DEVICE",
            "recordingDeviceName": "Polycom SoundStation IP 6000",
            "originalMimeType": "audio/mp3",
            "obfuscatedId": "11235813",
            "audioTopic": "questions about landmarks in NYC"
        }
    },
    "audio": {
        "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
    }
}

Weitere Informationen zum Konfigurieren des Anfragetexts erhalten Sie in der Referenzdokumentation zu RecognitionConfig.

Wenn die Anfrage erfolgreich ist, gibt der Server den HTTP-Statuscode 200 OK und die Antwort im JSON-Format zurück:

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

Node.js

// Imports the Google Cloud client library for Beta API
/**
 * TODO(developer): Update client library import to use new
 * version of API when desired features become available
 */
const speech = require('@google-cloud/speech').v1p1beta1;
const fs = require('fs');

// Creates a client
const client = new speech.SpeechClient();

async function syncRecognizeWithMetaData() {
  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const filename = 'Local path to audio file, e.g. /path/to/audio.raw';
  // const encoding = 'Encoding of the audio file, e.g. LINEAR16';
  // const sampleRateHertz = 16000;
  // const languageCode = 'BCP-47 language code, e.g. en-US';

  const recognitionMetadata = {
    interactionType: 'DISCUSSION',
    microphoneDistance: 'NEARFIELD',
    recordingDeviceType: 'SMARTPHONE',
    recordingDeviceName: 'Pixel 2 XL',
    industryNaicsCodeOfAudio: 519190,
  };

  const config = {
    encoding: encoding,
    sampleRateHertz: sampleRateHertz,
    languageCode: languageCode,
    metadata: recognitionMetadata,
  };

  const audio = {
    content: fs.readFileSync(filename).toString('base64'),
  };

  const request = {
    config: config,
    audio: audio,
  };

  // Detects speech in the audio file
  const [response] = await client.recognize(request);
  response.results.forEach(result => {
    const alternative = result.alternatives[0];
    console.log(alternative.transcript);
  });

Python

from google.cloud import speech_v1p1beta1 as speech

client = speech.SpeechClient()

speech_file = "resources/commercial_mono.wav"

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

# Here we construct a recognition metadata object.
# Most metadata fields are specified as enums that can be found
# in speech.enums.RecognitionMetadata
metadata = speech.RecognitionMetadata()
metadata.interaction_type = speech.RecognitionMetadata.InteractionType.DISCUSSION
metadata.microphone_distance = (
    speech.RecognitionMetadata.MicrophoneDistance.NEARFIELD
)
metadata.recording_device_type = (
    speech.RecognitionMetadata.RecordingDeviceType.SMARTPHONE
)

# Some metadata fields are free form strings
metadata.recording_device_name = "Pixel 2 XL"
# And some are integers, for instance the 6 digit NAICS code
# https://www.naics.com/search/
metadata.industry_naics_code_of_audio = 519190

audio = speech.RecognitionAudio(content=content)
config = speech.RecognitionConfig(
    encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
    sample_rate_hertz=8000,
    language_code="en-US",
    # Add this in the request to send metadata.
    metadata=metadata,
)

response = client.recognize(config=config, audio=audio)

for i, result in enumerate(response.results):
    alternative = result.alternatives[0]
    print("-" * 20)
    print(u"First alternative of result {}".format(i))
    print(u"Transcript: {}".format(alternative.transcript))