この記事では、ベースの音声テキスト変換モデルまたは独自のカスタム モデルの精度を定量的に測定し、向上させる方法について説明します。 精度をテストするには、オーディオと人間によってラベル付けされた文字起こしデータが必要です。 30 分から 5 時間の典型的な音声を用意する必要があります。
重要
テスト時には、システムによって文字起こしが行われます。 価格はサービス オファリングやサブスクリプション レベルによって異なるため、この点に留意することが重要です。 最新の詳細情報については、公式の Azure AI サービスの価格を常に参照してください。
テストを作成する
ヒント
Speech Studio から Azure AI Foundry ポータルにカスタム音声モデルを取り込みます。 Azure AI Foundry ポータルでは、既存の Speech リソースに接続することで、中断した場所を選択できます。 既存の Speech リソースへの接続の詳細については、既存の Speech リソースへの接続に関する記事を参照してください。
テストを作成することで、カスタム モデルの精度をテストできます。 テストには、オーディオ ファイルとそれに対応する文字起こしのコレクションが必要です。 カスタム モデルの精度は、音声テキスト変換ベース モデルまたは別のカスタム モデルと比較できます。 テスト結果を取得したら、音声認識結果と比較してワード エラー率 (WER) を評価します。
トレーニング データセットとテスト データセットをアップロードしたら、テストを作成できます。
微調整されたカスタム音声モデルをテストするには、次の手順に従います。
Azure AI Foundry ポータルにサインインします。
左側のウィンドウから [微調整 ] を選択し、[ AI サービスの微調整] を選択します。
カスタム音声の微調整 の開始方法に関する記事の説明に従って、開始したカスタム音声微調整タスク (モデル名別) を選択します。
[ テスト モデル>+ テストの作成] を選択します。
新しいテストの作成ウィザードで、テストの種類を選択します。 精度 (定量的) テストの場合は、[ 精度の評価 (オーディオ + トランスクリプト データ)] を選択します。 次に、[次へ] を選択します。
テストに使用するデータを選択します。 次に、[次へ] を選択します。
精度を評価し、比較するために最大 2 つのモデルを選択します。 この例では、トレーニング済みモデルと基本モデルを選択します。 次に、[次へ] を選択します。
テストの名前と説明を入力します。 次に、[次へ] を選択します。
設定を確認し、[テストの作成] を選択します。 [モデルのテスト] ページに戻ります。 データの状態は、[処理中] です。
精度テストを作成するには、次の手順に従います。
Speech Studio にサインインします。
[Custom Speech]> プロジェクト名 >[モデルをテストする] を選択します。
[新しいテストを作成する] を選択します。
[Evaluate accuracy]\(精度の評価\)>[次へ] を選択します。
オーディオと人間によってラベル付けされた文字起こしデータセットを 1 つ選択し、[次へ] を選択します。 使用可能なデータセットがない場合は、セットアップをキャンセルし、[Speech datasets]\(音声データセット\) メニューに移動して、データセットをアップロードします。
Note
モデルで使用したものとは異なる音響データセットを選択することが重要です。 この方法を使用すると、モデルのパフォーマンスをより現実的に判断できます。
評価するモデルを最大で 2 つ選択し、[次へ] を選択します。
テストの名前と説明を入力し、[次へ] を選択します。
テストの詳細を確認し、[保存して閉じる] を選択します。
続行する前に、 Speech CLI がインストールされ、構成されていることを確認します。
テストを作成するには、spx csr evaluation create
コマンドを使用します。 次の手順に従って要求パラメーターを作成します。
project
プロパティを既存のプロジェクトの ID に設定します。project
でカスタム音声の微調整を管理できるように、 プロパティをお勧めします。 プロジェクト ID を取得するには、 REST API ドキュメントのプロジェクト ID を取得するを 参照してください。- 必要な
model1
プロパティを、テストするモデルの ID に設定します。 - 必要な
model2
プロパティを、テストする別のモデルの ID に設定します。 2 つのモデルを比較しない場合は、model1
とmodel2
の両方に同じモデルを使用します。 - 必要な
dataset
プロパティを、テストに使用するデータセットの ID に設定します。 language
プロパティを設定します。それ以外の場合、Speech CLI は既定で "en-US" を設定します。 このパラメーターは、データセットのコンテンツのロケールである必要があります。 ロケールを後から変更することはできません。 Speech CLIlanguage
プロパティは、JSON 要求と応答のlocale
プロパティに対応します。- 必須の
name
プロパティを設定します。 このパラメーターは、 Azure AI Foundry ポータルに表示される名前です。 Speech CLIname
プロパティは、JSON 要求と応答のdisplayName
プロパティに対応します。
テストを作成する 音声 CLI コマンドの例を次に示します:
spx csr evaluation create --api-version v3.2 --project aaaabbbb-0000-cccc-1111-dddd2222eeee --dataset bbbbcccc-1111-dddd-2222-eeee3333ffff --model1 ccccdddd-2222-eeee-3333-ffff4444aaaa --model2 ddddeeee-3333-ffff-4444-aaaa5555bbbb --name "My Evaluation" --description "My Evaluation Description"
重要
--api-version v3.2
を設定する必要があります。 Speech CLI では REST API が使用されますが、 v3.2
以降のバージョンはまだサポートされていません。
次の形式で応答本文を受け取る必要があります。
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/eeeeffff-4444-aaaa-5555-bbbb6666cccc",
"model1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"model2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"dataset": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
},
"transcription2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
},
"transcription1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
},
"project": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
},
"links": {
"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
},
"properties": {
"wordErrorRate1": -1.0,
"sentenceErrorRate1": -1.0,
"sentenceCount1": -1,
"wordCount1": -1,
"correctWordCount1": -1,
"wordSubstitutionCount1": -1,
"wordDeletionCount1": -1,
"wordInsertionCount1": -1,
"wordErrorRate2": -1.0,
"sentenceErrorRate2": -1.0,
"sentenceCount2": -1,
"wordCount2": -1,
"correctWordCount2": -1,
"wordSubstitutionCount2": -1,
"wordDeletionCount2": -1,
"wordInsertionCount2": -1
},
"lastActionDateTime": "2024-07-14T21:31:14Z",
"status": "NotStarted",
"createdDateTime": "2024-07-14T21:31:14Z",
"locale": "en-US",
"displayName": "My Evaluation",
"description": "My Evaluation Description",
"customProperties": {
"testingKind": "Evaluation"
}
}
応答本文の最上位の self
プロパティは評価の URI です。 この URI を使用して、プロジェクトとテスト結果の詳細を取得します。 また、評価の更新と削除にもこの URI を使用します。
評価に関する 音声 CLI ヘルプを表示するには、次のコマンドを実行します:
spx help csr evaluation
テストを作成するには、Speech to text REST API の Evaluations_Create 操作を使用します。 次の手順に従って要求本文を作成します。
project
プロパティを既存のプロジェクトの ID に設定します。project
でカスタム音声の微調整を管理できるように、 プロパティをお勧めします。 プロジェクト ID を取得するには、 REST API ドキュメントのプロジェクト ID を取得するを 参照してください。customProperties
内でtestingKind
プロパティをEvaluation
に設定します。Evaluation
を指定しない場合、テストは品質検査テストとして扱われます。testingKind
プロパティがEvaluation
またはInspection
に設定されているかどうかに関係なく、API を使用して精度スコアにアクセスできますが、Azure AI Foundry ポータルではアクセスできません。- 必須の
model1
プロパティを、テストするモデルの URI にセットします。 - 必須の
model2
プロパティを、テストする別のモデルの URI にセットします。 2 つのモデルを比較しない場合は、model1
とmodel2
の両方に同じモデルを使用します。 - 必須の
dataset
プロパティを、テストに使用するデータセットの URI にセットします。 - 必須の
locale
プロパティを設定します。 このプロパティは、データセットのコンテンツのロケールである必要があります。 ロケールを後から変更することはできません。 - 必須の
displayName
プロパティを設定します。 このプロパティは、 Azure AI Foundry ポータルに表示される名前です。
HTTP POST 要求は、次の例に示すように URI を使用して行います。 YourSpeechResoureKey
を音声 リソース キーに置き換え、YourServiceRegion
を音声 リソース リージョンに置き換え、前述のように要求本文のプロパティをセットします。
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -H "Content-Type: application/json" -d '{
"model1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"model2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"dataset": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
},
"project": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
},
"displayName": "My Evaluation",
"description": "My Evaluation Description",
"customProperties": {
"testingKind": "Evaluation"
},
"locale": "en-US"
}' "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations"
次の形式で応答本文を受け取る必要があります:
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/eeeeffff-4444-aaaa-5555-bbbb6666cccc",
"model1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"model2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"dataset": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
},
"transcription2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
},
"transcription1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
},
"project": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
},
"links": {
"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
},
"properties": {
"wordErrorRate1": -1.0,
"sentenceErrorRate1": -1.0,
"sentenceCount1": -1,
"wordCount1": -1,
"correctWordCount1": -1,
"wordSubstitutionCount1": -1,
"wordDeletionCount1": -1,
"wordInsertionCount1": -1,
"wordErrorRate2": -1.0,
"sentenceErrorRate2": -1.0,
"sentenceCount2": -1,
"wordCount2": -1,
"correctWordCount2": -1,
"wordSubstitutionCount2": -1,
"wordDeletionCount2": -1,
"wordInsertionCount2": -1
},
"lastActionDateTime": "2024-07-14T21:31:14Z",
"status": "NotStarted",
"createdDateTime": "2024-07-14T21:31:14Z",
"locale": "en-US",
"displayName": "My Evaluation",
"description": "My Evaluation Description",
"customProperties": {
"testingKind": "Evaluation"
}
}
応答本文の最上位の self
プロパティは評価の URI です。 この URI を使用して、評価のプロジェクトとテスト結果の詳細を取得します。 また、評価の更新か削除にもこの URI を使用します。
テスト結果を取得する
テスト結果を取得し、音声認識結果と比較してワード エラー率 (WER) を評価することが必要です。
テストの状態が [成功] の場合、結果を表示できます。 テストを選択して結果を表示します。
テスト結果を取得するには、次の手順に従います:
- Speech Studio にサインインします。
- [Custom Speech]> プロジェクト名 >[モデルをテストする] を選択します。
- テスト名でリンクを選択します。
- テストが完了したら、状態が [成功] にセットされていれば、テスト対象の各モデルの WER の数値を含む結果が表示されます。
このページには、データセット内のすべての発話と、送信されたデータセットからの文字起こしと共に、認識結果が一覧表示されます。 挿入、削除、置換を含むさまざまなエラーの種類を切り替えることができます。 音声を聞きながら各列の認識結果を比較すると、どちらのモデルがニーズに合うか決定し、どのような追加のトレーニングと改善が必要かを判断できます。
続行する前に、 Speech CLI がインストールされ、構成されていることを確認します。
テスト結果を取得するには、spx csr evaluation status
コマンドを使用します。 次の手順に従って要求パラメーターを作成します。
- 必要な
evaluation
プロパティを、テスト結果を取得する評価の ID に設定します。
テスト結果を取得する 音声 CLI コマンドの例を次に示します:
spx csr evaluation status --api-version v3.2 --evaluation aaaabbbb-6666-cccc-7777-dddd8888eeee
重要
--api-version v3.2
を設定する必要があります。 Speech CLI では REST API が使用されますが、 v3.2
以降のバージョンはまだサポートされていません。
ワード エラー率とその他の詳細は、応答本文で返されます。
次の形式で応答本文を受け取る必要があります。
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/eeeeffff-4444-aaaa-5555-bbbb6666cccc",
"model1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"model2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"dataset": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
},
"transcription2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
},
"transcription1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
},
"project": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
},
"links": {
"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
},
"properties": {
"wordErrorRate1": 0.028900000000000002,
"sentenceErrorRate1": 0.667,
"tokenErrorRate1": 0.12119999999999999,
"sentenceCount1": 3,
"wordCount1": 173,
"correctWordCount1": 170,
"wordSubstitutionCount1": 2,
"wordDeletionCount1": 1,
"wordInsertionCount1": 2,
"tokenCount1": 165,
"correctTokenCount1": 145,
"tokenSubstitutionCount1": 10,
"tokenDeletionCount1": 1,
"tokenInsertionCount1": 9,
"tokenErrors1": {
"punctuation": {
"numberOfEdits": 4,
"percentageOfAllEdits": 20.0
},
"capitalization": {
"numberOfEdits": 2,
"percentageOfAllEdits": 10.0
},
"inverseTextNormalization": {
"numberOfEdits": 1,
"percentageOfAllEdits": 5.0
},
"lexical": {
"numberOfEdits": 12,
"percentageOfAllEdits": 12.0
},
"others": {
"numberOfEdits": 1,
"percentageOfAllEdits": 5.0
}
},
"wordErrorRate2": 0.028900000000000002,
"sentenceErrorRate2": 0.667,
"tokenErrorRate2": 0.12119999999999999,
"sentenceCount2": 3,
"wordCount2": 173,
"correctWordCount2": 170,
"wordSubstitutionCount2": 2,
"wordDeletionCount2": 1,
"wordInsertionCount2": 2,
"tokenCount2": 165,
"correctTokenCount2": 145,
"tokenSubstitutionCount2": 10,
"tokenDeletionCount2": 1,
"tokenInsertionCount2": 9,
"tokenErrors2": {
"punctuation": {
"numberOfEdits": 4,
"percentageOfAllEdits": 20.0
},
"capitalization": {
"numberOfEdits": 2,
"percentageOfAllEdits": 10.0
},
"inverseTextNormalization": {
"numberOfEdits": 1,
"percentageOfAllEdits": 5.0
},
"lexical": {
"numberOfEdits": 12,
"percentageOfAllEdits": 12.0
},
"others": {
"numberOfEdits": 1,
"percentageOfAllEdits": 5.0
}
}
},
"lastActionDateTime": "2024-07-14T21:31:22Z",
"status": "Succeeded",
"createdDateTime": "2024-07-14T21:31:14Z",
"locale": "en-US",
"displayName": "My Evaluation",
"description": "My Evaluation Description",
"customProperties": {
"testingKind": "Evaluation"
}
}
評価に関する 音声 CLI ヘルプを表示するには、次のコマンドを実行します:
spx help csr evaluation
テスト結果を取得するには、まず Speech to text REST API の Evaluations_Get 操作を使用します。
HTTP GET 要求は、次の例に示すように URI を使用して行います。 YourEvaluationId
を評価 ID に置き換え、YourSpeechResoureKey
を Speech リソース キーに置き換えて、YourServiceRegion
を Speech リソース リージョンに置き換えます。
curl -v -X GET "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/YourEvaluationId" -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey"
ワード エラー率とその他の詳細は、応答本文で返されます。
次の形式で応答本文を受け取る必要があります。
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/eeeeffff-4444-aaaa-5555-bbbb6666cccc",
"model1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"model2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
},
"dataset": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/bbbbcccc-1111-dddd-2222-eeee3333ffff"
},
"transcription2": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
},
"transcription1": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/ffffaaaa-5555-bbbb-6666-cccc7777dddd"
},
"project": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/aaaabbbb-0000-cccc-1111-dddd2222eeee"
},
"links": {
"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/evaluations/dda6e880-6ccd-49dc-b277-137565cbaa38/files"
},
"properties": {
"wordErrorRate1": 0.028900000000000002,
"sentenceErrorRate1": 0.667,
"tokenErrorRate1": 0.12119999999999999,
"sentenceCount1": 3,
"wordCount1": 173,
"correctWordCount1": 170,
"wordSubstitutionCount1": 2,
"wordDeletionCount1": 1,
"wordInsertionCount1": 2,
"tokenCount1": 165,
"correctTokenCount1": 145,
"tokenSubstitutionCount1": 10,
"tokenDeletionCount1": 1,
"tokenInsertionCount1": 9,
"tokenErrors1": {
"punctuation": {
"numberOfEdits": 4,
"percentageOfAllEdits": 20.0
},
"capitalization": {
"numberOfEdits": 2,
"percentageOfAllEdits": 10.0
},
"inverseTextNormalization": {
"numberOfEdits": 1,
"percentageOfAllEdits": 5.0
},
"lexical": {
"numberOfEdits": 12,
"percentageOfAllEdits": 12.0
},
"others": {
"numberOfEdits": 1,
"percentageOfAllEdits": 5.0
}
},
"wordErrorRate2": 0.028900000000000002,
"sentenceErrorRate2": 0.667,
"tokenErrorRate2": 0.12119999999999999,
"sentenceCount2": 3,
"wordCount2": 173,
"correctWordCount2": 170,
"wordSubstitutionCount2": 2,
"wordDeletionCount2": 1,
"wordInsertionCount2": 2,
"tokenCount2": 165,
"correctTokenCount2": 145,
"tokenSubstitutionCount2": 10,
"tokenDeletionCount2": 1,
"tokenInsertionCount2": 9,
"tokenErrors2": {
"punctuation": {
"numberOfEdits": 4,
"percentageOfAllEdits": 20.0
},
"capitalization": {
"numberOfEdits": 2,
"percentageOfAllEdits": 10.0
},
"inverseTextNormalization": {
"numberOfEdits": 1,
"percentageOfAllEdits": 5.0
},
"lexical": {
"numberOfEdits": 12,
"percentageOfAllEdits": 12.0
},
"others": {
"numberOfEdits": 1,
"percentageOfAllEdits": 5.0
}
}
},
"lastActionDateTime": "2024-07-14T21:31:22Z",
"status": "Succeeded",
"createdDateTime": "2024-07-14T21:31:14Z",
"locale": "en-US",
"displayName": "My Evaluation",
"description": "My Evaluation Description",
"customProperties": {
"testingKind": "Evaluation"
}
}
単語エラー率 (WER) を評価する
モデルの正確性を測定するための業界標準は、"ワード エラー率" (WER) です。 WER では、認識中に識別された誤った単語の数を数え、その合計を、人間によってラベル付けされた文字起こしで提供された単語の総数 (N) で除算します。
誤りと識別された単語は、次の 3 つのカテゴリに分類されます。
- 挿入 (I): 仮説トランスクリプトに誤って追加された単語
- 削除 (D): 仮説トランスクリプトで検出されなかった単語
- 置き換え (S): 参照と仮音声テキストの間で置き換えられた単語
Azure AI Foundry ポータルと Speech Studio では、商に 100 が乗算され、パーセンテージとして表示されます。 Speech CLI と REST API の結果に 100 が乗算されることはありません。
$$ WER = {{I+D+S}\over N} \times 100 $$
人間によってラベル付けされた文字起こしと比較したときの、誤って識別された単語を示す例を次に示します。
音声認識の結果は次のように誤っています。
- 挿入 (I): "a" という単語が追加されました
- 削除 (D): "are" という単語が削除されました
- 置換 (S): "John" が 単語 "Jones" に置き換えられました
前の例のワード エラー率は 60% です。
WER 測定をローカルでレプリケートする場合、NIST スコアリング ツールキット (SCTK) の sclite ツールを使用できます。
エラーの解決と WER の向上
アプリ、ツール、または製品で使用しているモデルの品質を評価するために、機械認識結果の WER 計算を使用できます。 WER が 5 から 10% であれば、良質であると見なして、使用できます。 WER が 20% であれば許容範囲内ですが、追加のトレーニングを検討することをお勧めします。 WER が 30% 以上であれば、低品質であることを示しており、カスタマイズとトレーニングが必要です。
エラーがどのような分布になっているかが重要です。 多くの削除エラーが発生する場合は、通常、音声信号の強度が弱いことが原因です。 この問題を解決するには、ソースに近い場所で音声データを収集する必要があります。 挿入エラーは、音声が雑音の多い環境で録音され、クロストークが存在するために認識の問題が発生している可能性があることを意味します。 置換エラーは多くの場合、ドメイン固有の用語のサンプルが、人間によってラベル付けされた文字起こしまたは関連テキストとして十分に提供されていない場合に発生します。
個々のファイルを分析することで、どの種類のエラーが存在し、どのエラーが特定のファイルに固有であるかを判断できます。 ファイル レベルで問題を理解すると、改善の対象の特定に役立ちます。
トークン エラー率 (TER) を評価する
単語エラー率に加えて、トークン エラー率 (TER) という発展的な測定を使用して、最終的なエンドツーエンドの表示形式での品質を評価することもできます。 TER は語彙形式 (that will cost nine hundred dollars
ではなく That will cost $900.
) に加え、句読点、大文字小文字の区別、ITN などの表示形式の側面も考慮に入れます。 音声テキスト変換での表示出力フォーマットの詳細を学習します。
TER は、認識中に特定された誤ったトークンの数を数え、その合計を、人間によってラベル付けされた音声テキスト内に存在するトークンの総数 (N) で除算します。
$$ TER = {{I+D+S}\over N} \times 100 $$
TER 計算の数式も WER に似ています。 唯一の違いは、TER は単語レベルではなくトークン レベルに基づいて計算されるということです。
- 挿入 (I): 仮音声テキストに誤って追加されたトークンの数
- 削除 (D): 仮音声テキストで検出されなかったトークンの数
- 置き換え (S): 参照と仮音声テキストの間で置き換えられたトークンの数
実際のケースでは、目的とする改善を行うために WER と TER の両方の結果を分析できます。
Note
TER を測定するには、音声と音声テキストのテスト データに、句読点、大文字小文字の区別、ITN などの表示フォーマットを持つ音声テキストが含まれていることを確認する必要があります。
シナリオの結果の例
音声認識のシナリオは、オーディオの品質と言語 (ボキャブラリと話し方) によって異なります。 次の表は、4 つの一般的なシナリオを示しています。
シナリオ | 音質 | ボキャブラリ | 話し方 |
---|---|---|---|
コール センター | 低、8 kHz は、1 つのオーディオ チャネルに 2 人の人がいる可能性があり、圧縮できます。 | 狭い。ドメインと製品に固有 | 会話形式。ゆるい構成 |
音声アシスタント (Cortana、ドライブスルー ウィンドウなど) | 高 (16 kHz) | エンティティ ヘビー (曲のタイトル、製品、場所) | 明確に述べられる単語と語句 |
音声入力 (インスタント メッセージ、メモ、検索) | 高 (16 kHz) | 多様 | メモ取り |
動画の字幕 | 多様 (さまざまなマイクの使用、音楽の追加など) | 多様 (会議、朗読、音楽の歌詞など) | 読み上げ、事前に準備、またはゆるい構成 |
さまざまなシナリオでさまざまな品質の結果が生成されます。 次の表では、これら 4 つのシナリオのコンテンツが WER でどのように評価されるかを調べます。 この表は、各シナリオで最も一般的なエラーの種類を示しています。 挿入、置換、および削除のエラー率は、モデルを改善するためにどのような種類のデータを追加すればよいかを判断するのに役立ちます。
シナリオ | 音声認識の品質 | 挿入エラー | 削除エラー | 置換エラー |
---|---|---|---|---|
コール センター | ミディアム (< 30% WER) |
低 (バックグラウンドで他の人間が話している場合を除く) | 高くなる可能性あり。 コール センターは雑音を伴う場合があり、話者がオーバーラップしてモデルが混同される可能性がある | 中。 これらのエラーは、製品や人々の名前によって生じる可能性がある |
音声アシスタント | 高 (< 10% WER の可能性あり) |
低 | 低 | 中 (曲のタイトル、製品名、または場所による) |
ディクテーション | 高 (< 10% WER の可能性あり) |
低 | 低 | 高 |
動画の字幕 | 動画の種類によって異なる (< WER 50% の可能性あり) | 低 | 音楽、ノイズ、マイクの品質によって高くなる可能性がある | 専門用語で、これらのエラーが引き起こされる可能性がある |