IBM Cloud Docs
Schlüsselworterkennung und Wortalternativen

Schlüsselworterkennung und Wortalternativen

Der Service IBM Watson® Speech to Text kann benutzerdefinierte Schlüsselwörter in den zugehörigen Transkriptionsergebnissen identifizieren. Der Service kann darüber hinaus alternative Wörter vorschlagen, die ähnlich klingen wie die Wörter in einer Transkription. In beiden Fällen müssen die Schlüsselwörter und die alternativen Wörter mit einem benutzerdefinierten Konfidenzniveau übereinstimmen.

Schlüsselworterkennung

Die Parameter keywords und keywords_threshold werden nur bei Modellen der vorherigen Generation unterstützt und nicht bei Modellen der nächsten Generation.

Die Funktion für Schlüsselworterkennung identifiziert angegebene Zeichenfolgen in einem Transkript. Der Service kann mehrere Vorkommen desselben Schlüsselworts erkennen und erfassen. Dabei werden Schlüsselwörter nur in den Endergebnissen erkannt und nicht in den Zwischenergebnissen. Die Funktion für Schlüsselworterkennung ist im Service standardmäßig inaktiviert.

Wenn Sie die Schlüsselworterkennung verwenden möchten, müssen Sie die beiden folgenden Parameter angeben:

  • Geben Sie im Parameter keywords ein Array mit den zu erkennenden Zeichenfolgen an. Der Service erkennt keine Schlüsselwörter, wenn der Parameter nicht angegeben oder leer ist. Eine Schlüsselwortzeichenfolge kann mehr als ein Token enthalten. Beispiel: Das Schlüsselwort Speech to Text umfasst drei Tokens. Der Schlüsselwortabgleich ist unabhängig von Groß-/Kleinschreibung, also ist Speech to Text letztlich gleichbedeutend mit speech to text.

    Für amerikanisches Englisch normalisiert der Service jedes Schlüsselwort, um gesprochen und geschriebene Zeichenfolgen abzugleichen. Beispiel: Durch Normalisieren von Zahlen werden die Sprech- und Schreibweisen der Zahlen abgeglichen. Für andere Sprachen müssen Schlüsselwörter in der gesprochenen Form angegeben werden.

  • Im Parameter keywords_threshold können Sie als Erkennungswahrscheinlichkeit für ein Schlüsselwort einen Wert zwischen 0,0 und 1,0 angeben. Dieser Schwellenwert gibt die Untergrenze für das Konfidenzniveau an, das der Service für ein Wort ermittelt haben muss, damit eine Übereinstimmung mit dem Schlüsselwort erkannt wird. Ein Schlüsselwort wird in der Transkription nur erkannt, wenn das zugehörige Konfidenzniveau größer-gleich dem angegebenen Schwellenwert ist.

    Das Angeben eines niedrigen Schwellenwerts kann dazu führen, dass viele Übereinstimmungen festgestellt werden. Wenn Sie einen Schwellenwert angeben, müssen Sie auch mindestens ein Schlüsselwort angeben. Wenn Sie den Parameter nicht angeben, werden keine Übereinstimmungen zurückgegeben.

Für die Schlüsselworterkennung gelten die folgenden Einschränkungen:

  • Mit einer einzigen Anforderung können bis zu 1.000 Schlüsselwörter erkannt werden.
  • Ein einzelnes Schlüsselwort kann eine maximale Länge von 1024 Zeichen haben. Die maximale effektive Länge für Doppelbyte-Sprachen ist möglicherweise kürzer.
  • Die meisten HTTP-Server geben für die Parameter einer Anforderung eine Begrenzung von 8 KB vor. Die Erkennung einer großen Anzahl von Schlüsselwörtern oder vieler langer Schlüsselwörter kann dazu führen, dass dieser Grenzwert überschritten wird. Wenn Sie eine größere Anzahl von Schlüsselwörtern abgleichen müssen, sollten Sie die Verwendung mehrteiligen HTTP-Anforderung in Betracht ziehen.

Die Schlüsselworterkennung ist erforderlich, um Schlüsselwörter in einem Audiodatenstrom zu identifizieren. Die Schlüsselworterkennung durch Verarbeiten einer endgültigen Transkription ist nicht möglich, da die Transkription die bestmöglichen Decodierungsergebnisse des Service für die Audioeingabedaten darstellt. Es enthält keine Tokens mit niedrigen Konfidenzwerten, die möglicherweise ein infrage kommendes Wort darstellen. Mit anderen Worten: Das Anwenden von Textverarbeitungstools auf eine Transkription auf der Clientseite verhindert möglicherweise das Erkennen von Schlüsselwörtern. Daher wird eine detailliertere Darstellung der Decodierungsergebnisse benötigt, die nur auf dem Server verfügbar ist.

Ergebnisse der Schlüsselworterkennung

Der Service gibt die Ergebnisse der Erkennung in einem Feld keywords_result im Array results zurück. Das Feld keywords_result enthält ein Wörterverzeichnis oder ein assoziatives Array der aufzulistenden Merkmale. Jedes Merkmal wird durch ein angegebenes Schlüsselwort identifiziert und enthält ein Array von Objekten. Der Service gibt für jede gefundene Übereinstimmung mit dem Schlüsselwort ein Element des Arrays zurück. Das Objekt für jede Übereinstimmung enthält die folgenden Felder:

  • normalized_text ist das angegebene Schlüsselwort, normalisiert auf den gesprochenen Ausdruck, der in den Audioeingabedaten als Übereinstimmung erkannt wurde.
  • start_time ist der Startzeitpunkt der Übereinstimmung, angegeben in Sekunden.
  • end_time ist der Endzeitpunkt der Übereinstimmung, angegeben in Sekunden.
  • confidence ist der vom Service ermittelte Konfidenzwert für die Übereinstimmung mit dem angegebenen Schlüsselwort. Der Konfidenzwert muss größer-gleich dem angegebenen Schwellenwert sein, damit die Übereinstimmung in die Ergebnisse aufgenommen wird.

Ein Schlüsselwort, für das der Service keine Übereinstimmungen findet, wird nicht in das Array eingetragen. In den folgenden Fällen wird möglicherweise kein Schlüsselwort gefunden:

  • Das Schlüsselwort kommt in den Audiodaten nicht vor. Das Fehlen des Schlüsselworts ist der offensichtlichste Grund.

  • Der festgelegte Schwellenwert ist zu hoch. Wenn der Service einen zu niedrigen Konfidenzwert für das Schlüsselwort ermittelt, wird die gefundene Übereinstimmung nicht in die Ergebnisse eingetragen.

  • Eine gesprochene Schlüsselwortzeichenfolge mit mehreren Tokens (z. B. Speech to Text) enthält zu viele Sprechpausen zwischen den Tokens. Beim Transkribieren der Audiodaten zerteilt der Service den Datenstrom in eine Reihe von Blöcken. Jeder Block besteht aus einem zusammenhängenden Segment der Audiodaten, das keine Sprechpause enthält, die länger als eine halbe Sekunde ist. Als Ergebnis wird ein Array von Objekten erstellt, das aus diesen Blöcken besteht.

    Der Service erkennt ein Schlüsselwort mit mehreren Tokens nur in den folgenden Fällen als Übereinstimmung:

    • Die Tokens des Schlüsselworts sind im selben Block enthalten.
    • Die Tokens folgen lückenlos aufeinander oder die Lücken sind nicht länger als 0,1 Sekunde.

    Im letzteren Fall kann ein kurzes Füllwort oder eine nicht lexikalische Äußerung (z. B. 'hmm' oder 'naja') zwischen zwei Tokens des Schlüsselworts liegen. In diesem Fall kann in Modellen der vorherigen Generation an dieser Stelle des Transkripts eine Verzögerungsmarkierung eingefügt werden. Modelle der nächsten Generation berücksichtigen die tatsächliche Unentschlossenheit in den Transkriptionsergebnissen. Weitere Informationen finden Sie unter "Sprachzögern und Zögerzeichen ".

Beispiel für Schlüsselworterkennung

In der folgenden Beispielanforderung wird der Parameter keywords auf ein URL-codiertes Array mit drei Zeichenfolgen (colorado, tornadound tornadoes) und der Parameter keywords_threshold auf 0.5 gesetzt:

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @{path}audio-file.flac \
"{url}/v1/recognize?keywords=colorado%2Ctornado%2Ctornadoes&keywords_threshold=0.5"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @{path}audio-file.flac \
"{url}/v1/recognize?keywords=colorado%2Ctornado%2Ctornadoes&keywords_threshold=0.5"

Der Service findet entsprechende Vorkommen von colorado und tornadoes:

{
  "result_index": 0,
  "results": [
    {
      "keywords_result": {
        "colorado": [
          {
            "normalized_text": "Colorado",
            "start_time": 4.94,
            "confidence": 0.91,
            "end_time": 5.62
          }
        ],
        "tornadoes": [
          {
            "normalized_text": "tornadoes",
            "start_time": 1.52,
            "confidence": 1.0,
            "end_time": 2.15
          }
        ]
      },
      "alternatives": [
        {
          "confidence": 0.96,
          "transcript": "several tornadoes touch down as a line of
severe thunderstorms swept through Colorado on Sunday "
        }
      ],
      "final": true
    }
  ]
}

Wortalternativen

Der Parameter word_alternatives_threshold wird nur bei Modellen der vorherigen Generation unterstützt, nicht bei Modellen der nächsten Generation.

Die Funktion für Wortalternativen (auch als Confusion Networks bezeichnet) meldet Hypothesen für ähnlich klingende Wortalternativen der Audioeingabedaten. Beispielsweise kann das Wort Austin die beste Hypothese für ein Wort aus den Audiodaten sein. Das Wort Boston kann jedoch eine weitere Hypothese im selben Zeitintervall sein. Hypothesen weisen einen gemeinsamen Start- und Endzeitpunkt auf, aber sie unterscheiden sich in Schreibweise und (in der Regel) Konfidenzwert.

Die Funktion für Wortalternativen ist im Service standardmäßig inaktiviert. Um anzugeben, dass Sie alternative Hypothesen empfangen möchten, können Sie im Parameter word_alternatives_threshold einen Wahrscheinlichkeitswert zwischen 0,0 und 1,0 angeben. Der Schwellenwert gibt die Untergrenze für das Konfidenzniveau an, das der Service für eine Hypothese ermittelt haben muss, damit Sie als Wortalternative zurückgegeben wird. Eine Hypothese wird nur vorgeschlagen, wenn der zugehörige Konfidenzwert größer-gleich dem angegebenen Schwellenwert ist.

Wortalternativen sind mit der Zeitachse für eine Transkription vergleichbar, die in kleinere Abschnitte (sogenannte Fächer) aufgeteilt ist. Jedes Fach kann eine oder mehrere Hypothese(n) mit unterschiedlichen Schreibweisen und Konfidenzwerten enthalten. Der Parameter word_alternatives_threshold steuert die Dichte (Menge) der vom Service zurückgegebenen Ergebnisse. Wenn ein niedriger Schwellenwert angegeben wird, kann dies zu einer großen Menge von Hypothesen führen.

Ergebnisse für Wortalternativen

Der Service gibt die Ergebnisse der Erkennung in einem Feld word_alternatives im Array results zurück. Das Feld word_alternatives ist ein Array mit Objekten, die jeweils die folgenden Felder für eine Wortalternative enthalten:

  • start_time gibt den Zeitpunkt in Sekunden an, an dem das Wort, für das Hypothesen zurückgegeben werden, in den Audioeingabedaten beginnt.
  • end_time gibt den Zeitpunkt in Sekunden an, an dem das Wort, für das Hypothesen zurückgegeben werden, in den Audioeingabedaten endet.
  • alternatives ist ein Array mit Hypothesenobjekten. Jedes Objekt enthält ein Element confidence, das das vom Service ermittelte Konfidenzniveau für die Hypothese angibt, und ein Element word, das die Hypothese angibt. Der Konfidenzwert muss größer-gleich dem angegebenen Schwellenwert sein, damit die Übereinstimmung in die Ergebnisse aufgenommen wird. Der Service sortiert die Alternativen nach Konfidenzwert.

Beispiel für Wortalternativen

In der folgenden Beispielanforderung wird ein eher niedriger Schwellenwert (word_alternatives_threshold) von 0.10 angegeben. Die einfachen Audioeingabedaten enhalten Wörter mit gängigen Homonymen und verschiedene mögliche akustische Interpretationen.

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/wav" \
--data-binary @{path}audio-file.wav \
"{url}/v1/recognize?word_alternatives_threshold=0.10"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/wav" \
--data-binary @{path}audio-file.wav \
"{url}/v1/recognize?word_alternatives_threshold=0.10"

Aufgrund des niedrigen Schwellenwerts gibt der Service mehrere Hypothesen und Konfidenzbewertungen für einige der Wörter sowie die Start- und Endzeiten aller Wörter zurück. Die letzte Transkription erkennt die Audioeingabedaten korrekt.

{
   "result_index": 0,
   "results": [
      {
         "final": true,
         "alternatives": [
            {
               "transcript": "yes I ate that tuna ",
               "confidence": 0.82
            }
         ],
         "word_alternatives": [
            {
               "start_time": 0.0,
               "end_time": 0.31,
               "alternatives": [
                  {
                     "word": "yes",
                     "confidence": 1.0
                  }
               ]
            },
            {
               "start_time": 0.31,
               "end_time": 0.46,
               "alternatives": [
                  {
                     "word": "I",
                     "confidence": 1.0
                  }
               ]
            },
            {
               "start_time": 0.46,
               "end_time": 0.63,
               "alternatives": [
                  {
                     "word": "ate",
                     "confidence": 0.89
                  },
                  {
                     "word": "eat",
                     "confidence": 0.11
                  }
               ]
            },
            {
               "start_time": 0.63,
               "end_time": 0.77,
               "alternatives": [
                  {
                     "word": "that",
                     "confidence": 0.72
                  },
                  {
                     "word": "the",
                     "confidence": 0.27
                  }
               ]
            },
            {
               "start_time": 0.77,
               "end_time": 1.2,
               "alternatives": [
                  {
                     "word": "tuna",
                     "confidence": 0.94
                  }
               ]
            }
         ]
      }
   ]
}