IBM Cloud Docs
キーワード検出と単語候補

キーワード検出と単語候補

IBM Watson® Speech to Text サービスは、書き起こし結果でユーザー指定のキーワードを識別できます。 また、書き起こしの単語に音響的に類似した代替単語を提案することもできます。 どちらの場合も、キーワードと単語候補は、ユーザー指定の信頼度レベルを満たしている必要があります。

キーワード検出

keywordsパラメーターとkeywords_thresholdパラメーターは、次世代モデルではなく、前世代モデルでのみサポートされます。

キーワード検出機能は、書き起こしで指定されたストリングを検出します。 サービスでは、同じキーワードを何度でも検出して、各出現を報告できます。 キーワードは、最終結果でのみ識別されます。中間結果では識別されません。 デフォルトでは、サービスではキーワード検出は行われません。

キーワード検出を使用するには、以下の両方のパラメーターを指定する必要があります。

  • keywords パラメーターを使用して、検出するストリングの配列を指定します。 このパラメーターを省略した場合、または空の配列を指定した場合には、サービスでキーワード検出は行われません。 単一のキーワード・ストリングに、複数のトークンを含めることができます。 例えば、キーワード Speech to Text には 3 つのトークンが含まれています。 キーワードのマッチングでは大/小文字が区別されないため、Speech to Text は事実上 speech to text と等価です。

    米国英語の場合、発話ストリングと記述ストリングが一致するように各キーワードがサービスによって正規化されます。 例えば、発話数値と記述数値が一致するように数値が正規化されます。 他の言語の場合、キーワードは発話されるとおりに指定する必要があります。

  • keywords_threshold パラメーターを使用して、キーワードの一致と見なす、0.0 以上 1.0 以下の確率を指定します。 このしきい値は、単語がキーワードに一致するためにサービスで必要な信頼度レベルの下限を示します。 キーワードが書き起こしで検出されるのは、その信頼度が指定しきい値以上の場合のみです。

    小さいしきい値を指定すると、多数の一致が生成される可能性があります。 しきい値を指定した場合、1 つ以上のキーワードも指定する必要があります。 一致を返さない場合は、このパラメーターを省略します。

キーワード検出には以下の制限が適用されます。

  • 単一の要求で最大 1000 個のキーワードを検出できます。
  • 単一のキーワードの最大長は 1024 文字です。 2 バイト言語の最大有効長はこれより短くなる可能性があります。
  • ほとんどの HTTP サーバーとプロキシーでは、要求のパラメーターに 8 KB の制限が課されます。 非常に多くのキーワードや多くの長いキーワードを検出すると、この制限を超えることがあります。 多数のキーワードを検出する必要がある場合は、マルチパート HTTP 要求の使用を検討してください。

音声ストリーム内のキーワードを識別するには、キーワード検出が必要です。 最終書き起こしを処理することでキーワードを識別することはできません。これは、書き起こしが入力音声の最適なデコード結果を表すためです。 信頼度スコアが低いトークンは含まれていませんが、そのトークンが対象単語を表す可能性があります。 その場合、クライアント・サイドでテキスト処理ツールを書き起こしに適用しても、キーワードが識別されません。 これよりリッチなデコード結果表現が必要ですが、そのような表現はサーバーでのみ使用可能です。

キーワード検出の結果

サービスでは、keywords_result 配列の要素である results フィールドに結果が返されます。 keywords_result フィールドは、列挙可能プロパティーの辞書 (連想配列) です。 各プロパティーは、指定キーワードによって識別され、オブジェクトの配列が含まれます。 サービスは、キーワードに関して検出した一致ごとに配列の要素を 1 つ返します。 各一致のオブジェクトには、以下のフィールドが含まれます。

  • normalized_text。入力音声に一致した発話句に正規化された指定キーワードです。
  • start_time は、一致の開始時間 (秒単位) です。
  • end_time は、一致の終了時間 (秒単位) です。
  • confidence。一致したものが指定キーワードを表す、サービスの信頼度です。 結果に含まれるには、信頼度が指定しきい値以上でなければなりません。

サービスで一致するものが見つからなかったキーワードは、配列から省略されます。 以下の場合、キーワードは見つからない可能性があります。

  • 単に音声にキーワードが含まれていない。 キーワードがないことが、最も明らかな説明です。

  • 設定されているしきい値が大きすぎる。 サービスでキーワードは識別されているが、その信頼度レベルが低いことがあります。この場合、その一致は結果から省略されます。

  • 複数のトークンが含まれているキーワード・ストリング (例えば、Speech to Text) が発話されたが、トークン間の無音が長すぎた。 サービスでは、音声の書き起こし時に、ストリームを一連のブロックに分割します。 各ブロックは、0.5 秒を超える無音間隔が含まれていない連続した音声チャンクです。 このようなブロックで構成された、結果オブジェクトの配列が構成されます。

    サービスでは、以下の場合にのみ複数のトークンから成るキーワードが一致と見なされます。

    • キーワードのトークンが同じブロック内にある、
    • トークンが隣接しているか 0.1 秒以下のギャップで区切られている。

    後者の場合、短いフィラーまたは非字句の発話 (「uhm」や「well」など) は、キーワードの 2 つのトークンの間にある可能性があります。 この場合、前世代モデルは、書き起こしのこの位置に言い淀みマーカーを挿入できます。 次世代モデルでは、実際の転写結果に躊躇が含まれています。 詳細は 、「スピーチの躊躇と躊躇のマーカー 」を参照してください。

キーワード検出の例

以下の要求例では、keywords パラメーターを 3 つのストリング (coloradotornado、および tornadoes) の URL エンコード配列に設定し、keywords_threshold パラメーターを 0.5 に設定します。

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"

サービスは、colorado および 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
    }
  ]
}

単語候補

word_alternatives_thresholdパラメーターは、次世代モデルではなく、前世代モデルでのみサポートされます。

単語候補機能 (コンフュージョン・ネットワークとも呼ばれる) は、入力音声の単語に対する音響的に類似した候補の仮説を報告します。 例えば、単語 Austin が音声の単語の最適仮説であるが、 単語 Boston が同じ時間間隔における別の考えられる仮説である場合があります。 仮説では、共通の開始時間と終了時間が共有されますが、つづりは異なり、通常は信頼度スコアが異なります。

デフォルトでは、サービスでは単語候補は報告されません。 仮説候補を受け取る必要があることを指定するには、word_alternatives_threshold パラメーターを使用して、0.0 以上 1.0 以下の確率を指定します。 このしきい値は、仮説を単語候補として返すためにサービスで必要な仮説の信頼度レベルの下限を示します。 仮説が返されるのは、その信頼度が指定しきい値以上の場合のみです。

単語候補は、書き起こしのタイムラインを小さな間隔 (ビン) に分割したものと捉えることができます。 各ビンには、つづりと信頼度が異なる 1 つ以上の仮説を含めることができます。 word_alternatives_threshold パラメーターは、サービスで返される結果の密度を制御します。 小さいしきい値を指定すると、多数の仮説が生成される可能性があります。

単語候補の結果

サービスでは、word_alternatives 配列の要素である results フィールドに結果が返されます。 word_alternatives フィールドはオブジェクトの配列であり、各オブジェクトでは、単語候補に関する以下のフィールドが示されます。

  • start_time は、仮説が返された単語の入力音声での開始時間 (秒単位) を示します。
  • end_time は、仮説が返された単語の入力音声での終了時間 (秒単位) を示します。
  • alternatives。仮説オブジェクトの配列です。 各オブジェクトには、サービスの仮説の信頼度スコアを示す confidence および仮説を識別する word が含まれます。 結果に含まれるには、信頼度が指定しきい値以上でなければなりません。 サービスは信頼度によって候補を順序付けます。

単語候補の例

以下の要求例では、word_alternatives_threshold がやや低い 0.10 に指定されています。 この簡単な入力音声には、よくある同つづり同音異義語 (スペルと音が同じで意味の違う語) や、異なる音響上の解釈が可能である単語が含まれています。

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"

しきい値が低く設定されているため、サービスはすべての単語の開始時刻と終了時刻とともに、いくつかの語に対する複数の仮説と信頼度スコアを返しています。 最終的な書き起こしでは、入力音声を正しく認識します。

{
   "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
                  }
               ]
            }
         ]
      }
   ]
}