音声認識の結果について
使用するインターフェースに関係なく、IBM Watson® Speech to Text サービスは、指定されたパラメーターを反映する書き起こし結果を返します。 このサービスは、すべての JSON 応答の内容を UTF-8 文字セットで返します。
基本的な書き起こしの応答
サービスは、音声認識要求の実行の例に対して以下の応答を返します。 これらの例では、音声ファイルとそのコンテンツ・タイプだけが渡されます。 音声は、1 つの文を単語間に目立った休止を入れずに読み上げたものです。
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.96,
"transcript": "several tornadoes touch down as a line of severe thunderstorms swept through Colorado on Sunday "
}
],
"final": true
}
]
}
サービスは SpeechRecognitionResults オブジェクト (最上位の応答オブジェクト) を返します。 こうした単純な要求の場合、オブジェクトには 1 つの results フィールドと 1 つの result_index フィールドが含まれています。
resultsフィールドには、書き起こし結果に関する情報の配列が示されます。 例えば、alternativesフィールドにはtranscriptとサービスの結果に対するconfidenceが含まれています。finalフィールドには、結果が変更されないことを示すtrueの値が入っています。result_indexフィールドには、結果の固有 ID が含まれています。 この例は、休止のない 1 つの音声ファイルが指定され、追加のパラメーターが指定されていない要求に対する最終的な結果を示しています。 したがって、サービスは、値がresult_index(これは常に初期インデックスです) である 1 つの0フィールドを返しています。
入力音声がこれよりも複雑であるか、要求に追加のパラメーターが指定されている場合、その結果にはこれよりも多くの情報が含まれる可能性があります。
alternatives フィールド
alternatives フィールドには、書き起こし結果の配列が示されます。 この要求の場合、配列には 1 つの要素のみが含まれます。
transcriptフィールドには、書き起こし結果が示されます。confidenceフィールドは、書き起こしにおけるサービスの信頼性を示すスコアです。この例では 90% を超えています。
final フィールドと result_index フィールドによって、これらの値の意味が限定されます。
サービスに対する内部の変更および改善は、書き起こしと信頼度スコアに影響を与える可能性があります。 例えば、音声認識を改善して、より正確な書き起こし結果を返すことができます。 同様に、音声認識が改善された結果として、書き起こしスコアと単語の信頼度スコアが若干変化する可能性があります。 このような変更は控えめなものになることが予想されますが、時間の経過とともに書き起こしや信頼度スコアが変わらないことは想定していません。
final フィールド
final フィールドは、書き起こしが最終的な書き起こし結果であるかどうかを示します。
- 変更されないことが保証されている最終結果の場合、このフィールドは
trueになります。 サービスは、最終結果の更新をこれ以上送信しません。 - 変更される可能性のある中間結果の場合、このフィールドは
falseになります。 WebSocket インターフェースでinterim_resultsパラメーターを使用すると、サービスは音声を書き起こす際に、複数のresultsフィールドの形式で進化する仮説を返します。 中間結果の場合、finalフィールドは常にfalseであり、confidenceフィールドは常に省略されます。
大規模なスピーチモデル、前世代モデル、次世代モデルで中間結果を得るための WebSocket インターフェイスの使用については、以下のトピックを参照してください:
result_index フィールド
result_index フィールドは、その要求に固有の結果の ID を示します。 中間結果を要求すると、入力音声の変化する仮説としてサービスから複数の results フィールドが送信されます。 同一音声の最終結果の場合と同様に、同一音声の中間結果のインデックスの値は常に同一です。
同じインデックスを、単一の要求の複数の最終結果に使用することもできます。 中間結果を要求するかどうかに関係なく、音声に休止たは長時間の無音が含まれている場合、サービスは同じインデックスを使用して複数の最終結果を返すことができます。 詳しくは、休止と無音を参照してください。
音声の最終結果の受信後には、要求の残り部分でサービスがそれ以降の結果にそのインデックスを付けて送信することはありません。 それ以降の結果のインデックスは 1 ずつ増えます。
音声から複数の最終結果が生成される場合は、最終結果の transcript 要素を連結して、音声の完全な書き起こしにまとめることができます。 受信した順序で結果をアセンブルします。 完全な最終書き起こしをアセンブルする場合は、final フィールドが false である中間結果を無視できます。
追加の応答コンテンツ
多くの音声認識パラメーターは、サービスの応答の内容に影響を与えます。 パラメーターによっては、サービスが複数の書き起こし結果を返すことがあります。
end_of_phrase_silence_timeinterim_resultssplit_transcript_at_phrase_end
一部のパラメーターは、書き起こしの内容を変更できます。
profanity_filterredactionsmart_formatting
他のパラメーターは、結果にさらに情報を追加できます。
audio_metricskeywordsおよびkeywords_thresholdmax_alternativesprocessing_metricsおよびprocessing_metrics_intervalspeaker_labelstimestampsword_alternatives_thresholdword_confidence
使用可能なパラメーターについて詳しくは、音声認識パラメーターの使用およびパラメーターの要約を参照してください。
休止と無音
サービスが結果を返す方法は、サービスに渡す音声だけでなく、音声認識に使用するインターフェースとモデルによっても異なります。 デフォルトでは、サービスは音声ストリーム全体を単一の発話として書き起こし、すべての音声に対して単一の最終結果を返します。 ただし、サービスは、以下の条件に応じて複数の最終結果を返すことができます。
- 音声には、発話された単語または句の間に休止または長時間の無音が含まれています。 ほとんどの言語では、個別の最終結果を決定するためにサービスが使用するデフォルトの休止間隔は 0.8 秒です。 中国語の場合、デフォルトの間隔は 0.6 秒です。
end_of_phrase_silence_timeパラメータを使用すると、一時停止インターバルの時間を変更できる。 詳しくは、句の終わりの無音時間を参照してください。 - *前世代モデルの場合、*発話は最大 2 分に達します。 サービスは、2 分間の継続的な処理の後、書き起こしを複数の最終結果に分割します。
以下に、HTTP インターフェースと WebSocket インターフェースからの 2 つの最終結果の応答の例を示します。 いずれでも同じ入力音声が使用されています。 音声は、"one two three four five six" というフレーズを読み上げるもので、"three" と "four" の間に 1 秒の休止があります。 以下の例では、音声認識のデフォルトの休止間隔を使用しています。
-
*HTTP インターフェースの場合、*サービスは、常に単一の
SpeechRecognitionResultsオブジェクトを送信します。alternatives配列には各最終結果の個別の要素が含まれています。 応答には、値がresult_indexの0フィールドが 1 つ含まれています。{ "result_index": 0, "results": [ { "alternatives": [ { "confidence": 0.99, "transcript": "one two three " } ], "final": true }, { "alternatives": [ { "confidence": 0.99, "transcript": "four five six " } ], "final": true } ] } -
*WebSocket インターフェースの場合、*サービスは、前の例と同じ結果を送信します。 応答には単一の
SpeechRecognitionResultsオブジェクトが含まれ、alternatives配列には各最終結果に個別の要素が含まれ、応答には0の値を持つ単一のresult_indexフィールドが含まれます。{ "result_index": 0, "results": [ { "alternatives": [ { "confidence": 0.99, "transcript": "one two three " } ], "final": true }, { "alternatives": [ { "confidence": 0.99, "transcript": "four five six " } ], "final": true } ] }WebSocket インターフェースでは、中間結果の応答に含まれる JSON オブジェクトが増えます。 大規模なスピーチモデル、前世代モデル、次世代モデルで中間結果を得るための WebSocket インターフェイスの使用については、以下のトピックを参照してください:
ストリーミングされた音声で 30 秒の無音があると、非アクティブ・タイムアウトになる可能性があります。 詳しくは、タイムアウトを参照してください。
言語の言い淀みと言い淀みのマーカー
発話には、しばしば躊躇 (ちゅうちょ) や言葉による休止 (言葉による休止) が含まれます。これらは、「不体感」とも呼ばれます。 ユーザーが発言中に「uhm」、「対」、「hmm」、および関連する非語彙発話などのフィラーを挿入すると、躊躇が発生します。 このサービスは、大規模な音声モデル、以前のモデル、および次世代モデルでは異なる方法でヘシテーションを処理します。
前世代のモデルに対する躊躇
前世代モデルの場合、サービスには、ほとんどの言語の書き起こし結果に言い淀みマーカーが含まれています。 異なる言語では、異なるためらいマーカーを使ったり、ためらいをまったく示さなかったりする:
- *米国英語の場合、*言い淀みマーカーは、トークン
%HESITATIONによって示されます。 言い淀みマーカーを生成する単語は、aah、ah、hm、hmm、huh、huh-uh、hum、ohh、ugh、uh、uh-huh、uh-oh、uh-uh、um、およびum-humです。 - *日本語の場合、*言い淀みマーカーは通常、
D_で始まります。 - *スペイン語の場合、*サービスは言い淀みマーカーを生成しません。
以下の例は、米国英語の書き起こしのトークン %HESITATION を示しています。
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.99,
"transcript": ". . . that %HESITATION that's a . . ."
}
],
"final": true
}
]
}
言い淀みマーカーは中間結果と最終結果の両方に表示されることがあります。 スマート・フォーマット設定を有効にすると、米国英語の最終結果に言い淀みマーカーが表示されなくなります。 詳しくは、スマート・フォーマット設定を参照してください。
言い淀みマーカーは、書き起こしの他のフィールドにも含まれることもあります。 例えば、書き起こしの個々の単語の単語のタイム・スタンプを要求すると、各言い淀みマーカーの開始時刻と終了時刻が報告されます。
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"timestamps": [
. . .
[
"that",
7.31,
7.69
],
[
"%HESITATION",
7.69,
7.98
],
[
"that's",
7.98,
8.41
],
[
"a",
8.41,
8.48
],
. . .
],
"confidence": 0.99,
"transcript": ". . . that %HESITATION that's a . . ."
}
],
"final": true
}
]
}
言い淀みマーカーをアプリケーションで使用する必要がない場合は、書き起こしから削除しても問題ありません。
次世代モデルに対する躊躇
次世代モデルの場合、サービスにはすべての書き起こし結果に実際の躊躇語が含まれます。 次世代モデルでは、躊躇を単語として扱うため、中間結果、最終結果、および単語のタイム・スタンプの結果などのその他のフィールドには、躊躇が出現する可能性があります。 次世代モデルでは言い淀みマーカーは生成されません。スマート・フォーマット設定を有効にしても、最終結果から言い淀みが除去されることはありません。 言語によって、異なる言い淀み語を識別することができます。
- 米国英語の場合、 プレビュー生成モデルの一般的な言い淀みワードは、
aah、ah、hm、hmm、huh、huh-uh、hum、ohh、ugh、uh、uh-huh、uh-oh、uh-uh、um、およびum-humです。 これらすべてのためらいの言葉が書き起こしに現れるとは限りません。 - 日本語の場合、 言い淀みワードは通常、
ア、アノー、ウーン、エート、マ、テ、マ、およびンートなどの半角文字で構成されます。 一部の躊躇は、全角文字として認識される場合があります。
応答に躊躇する可能性を高めるために、カスタム言語モデルを使用できます。 カスタム・モデルでは、躊躇を含むコーパスを追加するか、ユーザーの言動が「いいね」を持つカスタム単語を作成します。 カスタム言語モデルについて詳しくは、 カスタム言語モデルの作成 を参照してください。
次の例は、アメリカ英語のトランスクリプトにおける「uhm」のためらいを示している:
{
"result_index": 0,
"results": [
{
"alternatives": [
{
"confidence": 0.99,
"transcript": ". . . that uhm that's a . . ."
}
],
"final": true
}
]
}
大文字化
このサービスでは、ほとんどの言語で応答書き起こしに大文字化は使用されません。 アプリケーションで大文字化が重要な場合は、各文の最初の単語と、大文字化が適切なすべての単語を大文字化する必要があります。
このサービスは、以下の言語およびモデルにのみ自動大文字化を適用します。 スマート・フォーマット設定を使用するかどうかに関係なく、サービスは常にこの大文字化を適用します。
-
*米国英語の前世代モデルの場合、*このサービスは多くの固有名詞を大文字にします。 例えば、barack obama graduated from columbia university という句について、サービスは以下の書き起こしを返します。
Barack Obama graduated from Columbia Universityこのサービスは、次世代モデルで米国英語の固有名詞を大文字化にしません。
-
*ドイツ語の次世代モデルの場合、*このサービスは多くの名詞を大文字にします。 例えば、er braucht erst einen neuen eintrag ins vokabular punkt という句について、サービスは以下の書き起こしを返します。
er braucht erst einen neuen Eintrag ins Vokabular Punktこのサービスは、前世代モデルでドイツ語の名詞を大文字化にしません。
句読点
デフォルトでは、応答の書き起こしに句読点は挿入されません。 必要な句読点をサービスの結果に追加する必要があります。
言語によっては、スマート・フォーマット設定を使用して、特定のキーワード・ストリングを句読点記号 (コンマ、ピリオド、疑問符、感嘆符など) に置き換えるよう、サービスに指示できます。 詳しくは、スマート・フォーマット設定を参照してください。