トレーニングおよびテストのデータセット
カスタム音声プロジェクトでは、トレーニング、定性検査、定量測定用のデータセットをアップロードできます。 この記事では、カスタム音声に使用できるトレーニングおよびテスト データの種類について説明します。
カスタム モデルをテストしてトレーニングするために使用するテキストとオーディオには、モデルに認識させる必要がある多様なスピーカーとシナリオのセットからのサンプルが含まれている必要があります。 カスタム モデルのテストとトレーニングのためにデータを収集する場合は、次の要素を考慮してください。
- テキストと音声オーディオ データを含めることで、ユーザーがモデルを操作するときに音声で伝える発言をカバーできるようにします。 たとえば、温度を上げ下げするモデルでは、ユーザーがそのような変更を要求するために作成するステートメントに関してトレーニングする必要があります。
- データには、モデルに認識させる必要があるすべての音声の差異を含めます。 アクセント、方言、言語の混在、年齢、性別、音声ピッチ、ストレス レベル、時刻など、多くの要因によって音声が異なる可能性があります。
- モデルが使用されるさまざまな環境 (屋内、屋外、交通騒音など) からのサンプルを含めます。
- 実稼働システムで使用するハードウェア デバイスでオーディオを録音します。 モデルで、さまざまな品質のデバイスで記録された音声を識別する必要がある場合は、モデルをトレーニングするために用意するオーディオ データも、これらの多様なシナリオを表している必要があります。
- データセットは、プロジェクトの要件に応じて多様かつ代表的なものとします。 後でモデルにさらにデータを追加できます。
- モデルで文字起こしする必要があるデータのみを含めます。 カスタム モデル認識の要件の範囲内ではないデータを含めると、全体的な認識品質に悪影響を及ぼす可能性があります。
データ型
次の表には、許容されるデータの種類と、それぞれのデータの種類を使用する場合と推奨される数量が一覧表示されています。 モデルを作成するのに、すべてのデータの種類は必要ありません。 データ要件は、テストを作成するのか、またはモデルをトレーニングするのかによって異なります。
データの種類 | テストに使用 | テストに推奨 | トレーニングに使用 | トレーニングに推奨 |
---|---|---|---|---|
オーディオのみ | はい (目視検査) | 5 つ以上のオーディオ ファイル | はい (en-US ではプレビュー) |
1 から 100 時間のオーディオ |
"オーディオ + 人間" とラベルが付いたトランスクリプト | はい (精度の評価) | 0.5-5 時間のオーディオ | はい | 1 から 100 時間のオーディオ |
プレーン テキスト | いいえ | 適用なし | はい | 1 - 200 MB の関連テキスト |
構造化テキスト | いいえ | 適用なし | はい | 最大 4,000 の項目、最大 50,000 のトレーニング文を含む最大 10 個のクラス |
発音 | いいえ | 適用なし | はい | 1 KB から 1 MB までの発音テキスト |
表示の形式 | いいえ | 適用なし | はい | ITN の場合は最大 200 行、書き換えの場合は 1,000 行、不適切なフィルターの場合は 1,000 行 |
通常、プレーンテキストまたは構造化テキストを使用したトレーニングは数分で終了します。
ヒント
プレーンテキスト データまたは構造化テキスト データから始めます。 このデータによって、特殊な用語や語句の認識が改善されます。 テキストを使用したトレーニングは、オーディオによるトレーニングよりもはるかに高速です (分単位と日単位)。
モデルが使用される言語、音響、ハードウェアに一致する小さなサンプル データのセットから始めます。 トレーニング用に大きなデータセットの収集に投資する前に、代表的なデータの小さなデータセットで問題点を明らかにできます。 カスタム音声データのサンプルについては、この GitHub リポジトリを参照してください。
オーディオ データを使用してカスタム モデルをトレーニングする場合は、オーディオ データのトレーニングに使用する専用ハードウェアがある Speech リソース リージョンを選択します。 詳細については、リージョン テーブルの脚注を参照してください。 カスタム音声トレーニング用の専用ハードウェアがあるリージョンでは、音声サービスで最大 100 時間のオーディオ トレーニング データが使用され、1 日に約 10 時間のデータを処理できます。 モデルがトレーニングされた後、必要に応じて、Models_CopyTo REST API を使用してモデルを別のリージョンにコピーできます。
シナリオ別にデータセットを検討する
シナリオのサブセットでトレーニングされたモデルは、それらのシナリオでのみ適切に実行できます。 カスタム モデルで認識する必要があるシナリオの完全な範囲を表すデータを慎重に選択します。 次の表は、一部の音声認識シナリオで考慮すべきデータセットを示しています。
シナリオ | プレーンテキスト データと構造化テキスト データ | "オーディオ + 人間" とラベルが付いたトランスクリプト | 発音を含む新しい単語 |
---|---|---|---|
コール センター | マーケティング ドキュメント、Web サイト、コール センター アクティビティに関連する製品レビュー | 人間によって文字起こしされたコール センターのコール | 発音があいまいな用語 (前のセクションの Xbox の例を参照) |
音声アシスタント | コマンドとエンティティのさまざまな組み合わせを使用する文の一覧 | コマンドを読み上げる音声をデバイスに録音し、テキストに変換する | 独特の発音を持つ名前 (映画、曲、製品) |
ディクテーション | 手書き入力 (インスタント メッセージや電子メールなど) | 前の例と同様 | 前の例と同様 |
動画の字幕 | TV 番組のスクリプト、映画、マーケティング コンテンツ、動画の要約 | 動画の正確なトランスクリプト | 前の例と同様 |
問題に対処するためにどのデータセットを使用するかを決めるには、次の表を参考にしてください。
使用事例 | データ型 |
---|---|
医療用語や IT 用語などの業界固有の語彙や文法に対する認識精度を向上させる。 | プレーンテキストまたは構造化テキスト データ |
製品名や頭字語など、発音が標準ではない単語または用語の表音および表示形式を定義する。 | 構造化テキスト内の発音データまたは音声発音 |
読み上げのスタイル、アクセント、または特定の背景ノイズの認識精度を向上させる。 | "オーディオ + 人間" とラベルが付いたトランスクリプト |
オーディオ + 人間によってラベル付けされた、トレーニングまたはテスト用の文字起こしデータ
オーディオ + 人間によってラベル付けされた文字起こしデータは、トレーニングとテストの両方の目的に使用できます。 比較のために、人間によってラベル付けされた文字起こし (逐語的) を用意する必要があります。
- 若干のアクセント、話し方、背景ノイズのような音響的な側面を改善するため。
- オーディオ ファイルの処理時に Microsoft の音声テキスト変換の精度を測定するため。
オーディオ データを使用したトレーニングをサポートする基本モデルの一覧については、「言語のサポート」を参照してください。 基本モデルでオーディオ データを使用したトレーニングがサポートされている場合でも、サービスによってオーディオの一部しか使用されないことがあります。 その場合も、すべてのトランスクリプトが使用されます。
重要
基本モデルでオーディオ データを使用したカスタマイズがサポートされていない場合は、文字起こしテキストのみがトレーニングに使用されます。 オーディオ データを使用したカスタマイズをサポートする基本モデルに切り替えると、トレーニング時間が数時間から数日に増える可能性があります。 トレーニング時間の変化は、トレーニング専用のハードウェアがないリージョンの基本モデルに切り替えたときに最も顕著になります。 トレーニング時間を短縮するため、オーディオ データが不要な場合は削除してください。
"人間" とラベルが付いた文字起こしデータを含むオーディオでは、オーディオがターゲットのユース ケースに由来する場合に、精度が最大限に向上します。 サンプルは、音声の完全な範囲をカバーする必要があります。 たとえば、小売店のコール センターでは、夏の月間には水着とサングラスに関する電話を最も多く受けます。 サンプルに、検出する音声の完全なスコープが含まれていることを確認します。
次の詳細を考慮してください。
- オーディオを使用するトレーニングは、人間にとっても音声が聞き取りにくい場合に最大のメリットが得られます。 ほとんどの場合、トレーニングは、単に関連するテキストだけを使用することから開始します。
- 米国英語など、最も使用の多い言語の 1 つを使用する場合は、オーディオ データを使用してトレーニングする必要性は低いです。 このような言語では、ほとんどのシナリオで基本モデルで既に優れた認識結果が得られるため、関連するテキストでトレーニングするだけで十分であると考えられます。
- カスタム音声では、単語のコンテキストのみをキャプチャして、挿入エラーや削除エラーではなく置換エラーを減らすことができます。
- 文字起こしエラーを含むサンプルは避けてください。ただし、音質の多様性は含めます。
- 問題のあるドメインに関連付けられていない文は避けてください。 関連のない文は、モデルに悪影響を及ぼす可能性があります。
- 文字起こしデータの品質が多様である場合は、特に優れた文 (キー フレーズを含む優れた文字起こしなど) を複製して重みを上げることができます。
- 音声サービスは、関連するテキストとして追加されたかのように、トランスクリプトを自動的に使用してドメイン固有の単語や語句の認識を改善します。
- トレーニング操作の完了には、数日かかる場合があります。 トレーニング速度を上げるには、トレーニング用の専用ハードウェアがあるリージョンに、音声サービスのサブスクリプションを作成する必要があります。
認識を向上させるには、大規模なトレーニング データセットが必要です。 一般には、1 から 100 時間の音声で単語単位の文字起こしを提供することをお勧めします (トレーニングで課金されない古いモデルの場合は最大 20 時間)。 ただし、30 分程度でも、認識結果の向上に役立つことがあります。 人間がラベル付けした文字起こしの作成は時間がかかる場合がありますが、認識の向上は、ユーザーが用意するデータによって決まります。 高品質なトランスクリプトのみをアップロードする必要があります。
オーディオ ファイルには、録音の最初と最後に無音部分が含まれている場合があります。 可能であれば、各サンプル ファイルの音声の前後に少なくとも 0.5 秒の無音部分を含めます。 音量が小さかったり、邪魔な背景ノイズが入っていたりするオーディオは役には立ちませんが、カスタム モデルが制限されたり損なわれたりすることはありません。 オーディオ サンプルを収集する前に、マイクと信号処理ハードウェアのアップグレードを常に検討してください。
重要
人間がラベル付けしたトランスクリプトを準備するためのベスト プラクティスの詳細については、「人間のラベルが付いたトランスクリプトとオーディオ」を参照してください。
カスタム音声プロジェクトには、次のプロパティを持つオーディオ ファイルが必要です。
重要
これらは、オーディオと人間によるラベル付けを使用した文字起こしのトレーニングとテストの要件です。 これらは、オーディオのみのトレーニングとテストのものとは異なります。 オーディオのみのトレーニングとテストを使用したい場合は、このセクションを参照してください。
プロパティ | 値 |
---|---|
ファイル形式 | RIFF (WAV) |
サンプル レート | 8,000 Hz または 16,000 Hz |
チャンネル | 1 (モノラル) |
オーディオあたりの最大長 | 2 時間 (テスト) / 40 秒 (トレーニング) オーディオを使用したトレーニングのオーディオの最大長は、ファイルあたり 40 秒です (Whisper のカスタマイズの場合は最大 30 秒)。 40 秒を超えるオーディオ ファイルの場合、文字起こしファイルの対応するテキストのみがトレーニングに使用されます。 すべてのオーディオ ファイルが 40 秒を超える場合、トレーニングは失敗します。 |
サンプル形式 | PCM、16 ビット |
アーカイブ形式 | .zip |
Zip の最大サイズ | 2 GB または 10,000 ファイル |
トレーニング用のプレーンテキスト データ
関連テキストのプレーンテキスト文を追加して、ドメイン固有の単語や語句の認識を向上させることができます。 関連テキスト文を使用すると、一般的な単語やドメイン固有の単語をコンテキストに表示することによって、その単語の誤認識に関連する置換エラーを減らすことができます。 ドメイン固有の単語は、一般的でない単語や造語である可能性がありますが、認識できるように明快に発音する必要があります。
ドメイン関連の文は、1 つのテキスト ファイルで指定してください。 読み上げられる発話に近いテキスト データを使用します。 発話は、完全または文法的に正しい必要はありませんが、モデルで認識されることが予想される音声入力を正確に反映している必要があります。 可能であれば、1つの文またはキーワードを別の行に制御してみてください。 製品名などの用語の重みを増やすには、その用語を含む複数の文を追加します。 ただし、コピーしすぎないでください。これが全体的な認識率に影響する可能性があります。
Note
認識できない文字や単語などのノイズを含む関連テキスト文は避けてください。
この表を使用して、プレーンテキスト データセット ファイルが確実に正しく書式設定されるようにします。
プロパティ | 値 |
---|---|
テキストのエンコード | UTF-8 BOM |
1 行あたりの発話の数 | 1 |
ファイルの最大サイズ | 200 MB |
また、次の制限にも従う必要があります。
- 文字、単語、または単語のグループを 3 回より多く繰り返すことは避けます。 たとえば、"aaaa"、"yeah yeah yeah yeah"、"that's it that's it that's it that's it" などは使用しないでください。繰り返し回数が多すぎる行は、Speech サービスによって削除される可能性があります。
- 特殊文字または 上記
U+00A1
の UTF-8 文字は使用しないでください。 - URI は拒否されます。
- 一部の言語 (日本語や韓国語など) では、大量のテキスト データをインポートする際に時間がかかったり、タイム アウトしたりすることがあります。データセットは、それぞれ最大 20,000 行のテキスト ファイルに分割することを検討してください。
トレーニング用の構造化テキスト データ
注意
トレーニング用の構造化テキスト データはパブリック プレビュー段階です。
構造化テキスト データは、データが特定のパターンに従っている場合 (特に、リストの単語や語句だけが異なる発話) に使用します。 トレーニング データの作成を簡略化し、カスタム言語モデル内でのモデリングを改善できるようにするには、マークダウン形式の構造化テキストを使用して項目および単語の発音のリストを定義します。 その後、トレーニング発話内でこれらのリストを参照できます。
多くの場合、予想される発話は特定のパターンに従っています。 一般的なパターンの 1 つとして、発話では、リストの単語や語句だけが異なることが挙げられます。 このパターンの例として、次のようなものがあります。
- "私は
product
について質問があります" では、product
は、可能な製品のリストです。 - "その
object
をcolor
にします" では、object
はジオメトリック形状のリストで、color
は色のリストです。
構造化テキストを使用したトレーニングでサポートされている基本モデルとロケールの一覧については、「言語サポート」を参照してください。 これらのロケール用の最新の基本モデルを使用する必要があります。 構造化テキストを使用したトレーニングをサポートしないロケールの場合、このサービスではプレーンテキスト データを使用したトレーニングの一部として、クラスを参照しないトレーニング文を受け入れます。
構造化テキスト ファイルには、拡張子 .md が必要です。 最大ファイル サイズは 200 MB で、テキスト エンコードは UTF-8 BOM である必要があります。 マークダウンの構文、特にリスト エンティティと発話の例は、Language Understanding モデルの構文と同じです。 完全なマークダウン構文の詳細については、「Language Understanding マークダウン」を参照してください。
サポートされている Markdown 形式の主な詳細を次に示します。
プロパティ | 説明 | 制限 |
---|---|---|
@list |
例文で参照できる項目のリスト。 | 最大 20 個のリスト。 リストあたり最大 35,000 項目。 |
speech:phoneticlexicon |
汎用音素セットに従った発音の一覧。 発音は、単語がリストまたはトレーニング文に出現する各インスタンス用に調整されます。 たとえば、"cat" のように聞こえる単語があり、発音を "k ae t" に調整する場合は、speech:phoneticlexicon リストに - cat/k ae t を追加します。 |
最大 15,000 個のエントリ。 単語あたり最大 2 個の発音。 |
#ExampleSentences |
ポンド記号 (# ) は、例文のセクションを区切ります。 セクション見出しには、文字、数字、アンダースコアのみを含めることができます。 例文には、モデルで予想される音声の範囲が反映されている必要があります。 トレーニング文で左右の中かっこ ({@list name} ) を使用して、@list の下の項目を参照できます。 同じトレーニング文の中でリストを複数参照することも、まったく参照しないこともできます。 |
最大 200 MB のファイル サイズ。 |
// |
コメントは、二重スラッシュ (// ) の後に続けます。 |
適用できません |
構造化テキスト ファイルの例を次に示します。
// This is a comment because it follows a double slash (`//`).
// Here are three separate lists of items that can be referenced in an example sentence. You can have up to 10 of these.
@ list food =
- pizza
- burger
- ice cream
- soda
@ list pet =
- cat
- dog
- fish
@ list sports =
- soccer
- tennis
- cricket
- basketball
- baseball
- football
// List of phonetic pronunciations
@ speech:phoneticlexicon
- cat/k ae t
- fish/f ih sh
// Here are two sections of training sentences.
#TrainingSentences_Section1
- you can include sentences without a class reference
- what {@pet} do you have
- I like eating {@food} and playing {@sports}
- my {@pet} likes {@food}
#TrainingSentences_Section2
- you can include more sentences without a class reference
- or more sentences that have a class reference like {@pet}
トレーニング用の発音データ
専門用語や造語は、発音が独特な場合があります。 単語をより小さく分割して発音できる場合は、これらを認識できます。 たとえば、"Xbox" を認識するには、"エックス ボックス" と発音します。 この方法では、全体的な精度は向上しませんが、このキーワードや他のキーワードの認識を向上させる可能性があります。
認識を向上させるためにカスタムの発音ファイルを提供できます。 カスタムの発音ファイルを使用して、一般的な単語の発音を変更しないでください。 カスタム発音がサポートされている言語の一覧については、言語のサポートを参照してください。
注意
発音ファイルは、構造化テキスト トレーニング データを除く、他のトレーニング データセットと共に使用できます。 発音データを構造化テキストと共に使用するには、それが構造化テキスト ファイル内にある必要があります。
音声フォームは、スペルアウトされた音声シーケンスです。これは文字、単語、文節、または 3 つすべての組み合わせで構成できます。 こちらの表には、次の例が含まれています。
認識され、表示されるフォーム | 音声フォーム |
---|---|
3CPO | three c p o |
CNTK | c n t k |
IEEE | i triple e |
発音は、1 つのテキスト ファイルで指定してください。 音声発話と、それぞれのカスタム発音を含めます。 ファイル内の各行は、認識された形式で始まり、タブ文字、スペース区切りの発音シーケンスの順に続く必要があります。
3CPO three c p o
CNTK c n t k
IEEE i triple e
発音データセット ファイルが有効で正しい形式であることを確認するには、次の表を参照してください。
プロパティ | 値 |
---|---|
テキストのエンコード | UTF-8 BOM (英語では ANSI もサポートされています) |
1 行のあたりの発音数 | 1 |
ファイルの最大サイズ | 1 MB (Free レベルに 1 KB) |
トレーニングまたはテスト用の音声データ
オーディオ データは、Microsoft の基準の音声テキスト変換モデルやカスタム モデルの精度をテストするのに最適です。 オーディオ データは、特定のモデルのパフォーマンスに関する音声の精度を検査するために使用されることに注意してください。 モデルの精度を定量化する場合は、オーディオ + 人間というラベルが付いた文字起こしを使用します。
注意
トレーニング用の音声のみのデータは、en-US
ロケールではプレビューで使用できます。 他のロケールの場合、音声データを使用してトレーニングするには、人間がラベル付けしたトランスクリプトも提供する必要があります。
カスタム音声プロジェクトには、次のプロパティを持つオーディオ ファイルが必要です。
重要
これらは、オーディオのみのトレーニングとテストの要件です。 これらは、オーディオと人間によるラベル付けを使用した文字起こしのトレーニングとテストのものとは異なります。 オーディオと人間によるラベル付けを使用した文字起こしのトレーニングとテストを使用したい場合は、このセクションを参照してください。
プロパティ | 値 |
---|---|
ファイル形式 | RIFF (WAV) |
サンプル レート | 8,000 Hz または 16,000 Hz |
チャンネル | 1 (モノラル) |
オーディオあたりの最大長 | 2 時間 |
サンプル形式 | PCM、16 ビット |
アーカイブ形式 | .zip |
最大アーカイブ サイズ | 2 GB または 10,000 ファイル |
Note
トレーニング データとテスト データをアップロードする場合、.zip ファイルのサイズは 2 GB を超えることはできません。 トレーニング用にさらに多くのデータが必要な場合は、複数の .zip ファイルに分割し、個別にアップロードします。 その後、複数 のデータセットからトレーニングを選択できます。 ただし、テストは "単一" のデータセットからのみ行うことができます。
SoX を使用して、オーディオのプロパティを確認したり、既存のオーディオを適切な形式に変換したりします。 SoX のコマンドの例をいくつか示します。
アクティビティ | SoX コマンド |
---|---|
オーディオ ファイルの形式を確認します。 | sox --i <filename> |
オーディオ ファイルを、シングルチャネル、16 ビット、16 KHz に変換します。 | sox <input> -b 16 -e signed-integer -c 1 -r 16k -t wav <output>.wav |
トレーニング用のカスタム表示テキスト フォーマット データ
表示テキストの書式設定データの準備と音声テキスト変換での表示テキストの書式設定について説明します。
自動音声認識出力表示フォーマットは、ダウンストリーム タスクにとって重要であり、すべてに当てはまるものを存在しません。 カスタム表示フォーマット ルールを追加すると、ユーザーは独自の字句から表示へのフォーマット ルールを定義して、Microsoft Azure Custom Speech サービス上の音声認識サービスの品質を向上させることができます。
これにより、書き換えルールを追加して特定の単語を大文字にして再定式化したり、不適切な単語を追加して出力からマスクしたり、数字、日付、メール アドレスなどの特定のパターンの高度な ITN ルールを定義したりするなど、表示出力を完全にカスタマイズできます。また、一部のフレーズを保護し、どの表示プロセスからも除外することもできます。
次に例を示します。
カスタム書式設定 | 表示テキスト |
---|---|
なし | contoso の私の財務番号は 8BEV3 です |
"Contoso" を大文字にする (#rewrite ルールを介して)財務番号をフォーマットする ( #itn ルールを介して) |
Contoso の財務番号は 8B-EV-3 です |
構造化テキストを使用したトレーニングでサポートされている基本モデルとロケールの一覧については、「言語サポート」を参照してください。 表示フォーマット ファイルには、拡張子 .md が必要です。 最大ファイル サイズは 10 MB で、テキスト エンコードは UTF-8 BOM である必要があります。 表示フォーマット ルールのカスタマイズの詳細については、「表示フォーマット ルールのベスト プラクティス」を参照してください。
プロパティ | 説明 | 制限 |
---|---|---|
#ITN | 数値、住所、日付などの特定の表示パターンを定義するための invert-text-normalization ルールのリスト。 | 最大 200 行 |
#rewrite | 大文字化やスペル修正などの理由で特定の単語を置き換えるための書き換えペアのリスト。 | 最大 1,000 行 |
#profanity | Microsoft の組み込みの不適切表現リストに加えた表示およびマスク出力から ****** としてマスクされる不要な単語のリスト。 |
最大 1,000 行 |
#test | 字句フォーマット入力や想定される表示フォーマット出力など、表示ルールが期待どおりに動作しているかを検証する単体テスト ケースのリスト。 | 最大 10 MB のファイル サイズ |
表示フォーマット ファイルの例を次に示します。
// this is a comment line
// each section must start with a '#' character
#itn
// list of ITN pattern rules, one rule for each line
\d-\d-\d
\d-\l-\l-\d
#rewrite
// list of rewrite rules, each rule has two phrases, separated by a tab character
old phrase new phrase
# profanity
// list of profanity phrases to be tagged/removed/masked, one line one phrase
fakeprofanity
#test
// list of test cases, each test case has two sentences, input lexical and expected display output
// the two sentences are separated by a tab character
// the expected sentence is the display output of DPP+CDPP models
Mask the fakeprofanity word Mask the ************* word