Custom Speech モデルをトレーニングする

この記事では、カスタム モデルをトレーニングして、Microsoft ベース モデルからの認識の正確性を向上させる方法について学習します。 新しい基本モデルがリリースされても、Custom Speech モデルの音声認識の正確性と品質は一貫したままです。

Note

Custom Speech モデルの使用とエンドポイント ホスティングには料金が発生します。 基本モデルが 2023 年 10 月 1 日以降に作成された場合、Custom Speech モデルのトレーニングに対しても課金が行われます。 基本モデルが 2023 年 10 月より前に作成された場合、トレーニングに対して課金は行われません。 詳細については、「Azure AI 音声の価格」と音声テキスト変換 3.2 への移行ガイドの「適応の料金」セクションを参照してください。

モデルのトレーニングは、通常、反復的なプロセスです。 最初に、新しいモデルの開始点となる基本モデルを選択します。 テキストと音声を含めることができるデータセットを使ってモデルをトレーニングしてから、テストします。 認識の品質または正確性が要件を満たさない場合は、トレーニング データを追加または変更して新しいモデルを作成し、再度テストすることができます。

カスタム モデルは、トレーニングの後、限られた期間だけ使用できます。 向上した精度と品質を利用するには、最新の基本モデルからカスタム モデルを定期的に再作成して適合させる必要があります。 詳細については、「モデルとエンドポイントのライフサイクル」を参照してください。

重要

オーディオ データを使用してカスタム モデルをトレーニングする場合は、オーディオ データのトレーニングに使用する専用ハードウェアがある Speech リソース リージョンを選択します。 モデルのトレーニングが完了したら、必要に応じて別のリージョンの Speech リソースにコピーできます。

Custom Speech トレーニング用の専用ハードウェアがあるリージョンでは、Speech サービスで最大 100 時間のオーディオ トレーニング データが使用され、1 日に約 10 時間のデータを処理できます。 詳細については、リージョン テーブルの脚注を参照してください。

モデルを作成する

トレーニング データセットをアップロードした後、これらの手順に従ってモデルのトレーニングを開始します。

  1. Speech Studio にサインインします。

  2. [Custom Speech]> プロジェクト名 >[カスタム モデルのトレーニング] を選択します。

  3. [新しいモデルをトレーニングする] を選択します。

  4. [ベースライン モデルの選択] ページで、ベース モデルを選択し、[次へ] を選択します。 不明な場合は、一覧の一番上から最新のモデルを選択します。 基本モデルの名前は、YYYYMMDD 形式のリリースされた日付に相当します。 基本モデルのカスタマイズ機能は、Speech Studio でモデル名の後にかっこに入れて示されます。

    重要

    [Expiration for adaptation](適応の有効期限) の日付をメモしておきます。 これは、トレーニングにベース モデルを使用できる最後の日付です。 詳細については、「モデルとエンドポイントのライフサイクル」を参照してください。

  5. [データの選択] ページで、トレーニングに使用する 1 つ以上のデータセットを選択します。 使用可能なデータセットがない場合は、セットアップをキャンセルし、[Speech datasets](音声データセット) メニューに移動して、データセットをアップロードします。

  6. カスタム モデルの名前と説明を入力し、[次へ] を選択します。

  7. 必要に応じて、[次の手順でテストを追加してください] チェック ボックスをオンにします。 この手順をスキップした場合は、後で同じテストを実行できます。 詳細については、「認識品質をテストする」および「モデルを定量的にテストする」を参照してください。

  8. [保存して閉じる] を選択して、カスタム モデルの構築を開始します。

  9. [Train custom models](カスタム モデルのトレーニング) ページに戻ります。

    重要

    [有効期限] の日付をメモします。 これは、音声認識にカスタム モデルを使用できる最後の日付です。 詳細については、「モデルとエンドポイントのライフサイクル」を参照してください。

トレーニング用のデータセットを使ってモデルを作成するには、spx csr model create コマンドを使います。 次の手順に従って要求パラメーターを作成します。

  • project パラメーターを既存のプロジェクトの ID に設定します。 このパラメーターは、Speech Studio でモデルを表示および管理できるようにするためにも推奨されます。 spx csr project list コマンドを実行すると、使用できるプロジェクトを取得できます。
  • 必須の dataset パラメーターを、トレーニングに使うデータセットの ID に設定します。 複数のデータセットを指定するには、datasets (複数) パラメーターを設定し、ID をセミコロンで区切ります。
  • 必須の language パラメーターを設定します。 データセットのロケールは、プロジェクトのロケールと一致する必要があります。 ロケールを後から変更することはできません。 Speech CLI language パラメーターは、JSON 要求と応答の locale プロパティに対応します。
  • 必須の name パラメーターを設定します。 このパラメーターは、Speech Studio に表示される名前です。 Speech CLI name パラメーターは、JSON 要求と応答の displayName プロパティに対応します。
  • 必要に応じて、base プロパティを設定できます。 (例: --base 5988d691-0893-472c-851e-8e36a0fe7aaf)。 base を指定しない場合、ロケールの既定のベース モデルが使われます。 Speech CLI base パラメーターは、JSON 要求と応答の baseModel プロパティに対応します。

トレーニング用のデータセットを使ってモデルを作成する Speech CLI コマンドの例を次に示します。

spx csr model create --api-version v3.2 --project YourProjectId --name "My Model" --description "My Model Description" --dataset YourDatasetId --language "en-US"

注意

この例では、base が設定されていないため、ロケールの既定のベース モデルが使われます。 応答でベース モデルの URI が返されます。

次の形式で応答本文を受け取る必要があります。

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd",
  "baseModel": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/5988d691-0893-472c-851e-8e36a0fe7aaf"
  },
  "datasets": [
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23"
    }
  ],
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd/manifest",
    "copy": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd:copy",
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd/files"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "properties": {
    "deprecationDates": {
      "transcriptionDateTime": "2026-07-15T00:00:00Z"
    },
    "customModelWeightPercent": 30,
    "features": {
      "supportsTranscriptions": true,
      "supportsEndpoints": true,
      "supportsTranscriptionsOnSpeechContainers": false,
      "supportedOutputFormats": [
        "Display",
        "Lexical"
      ]
    }
  },
  "lastActionDateTime": "2024-07-14T21:38:40Z",
  "status": "Running",
  "createdDateTime": "2024-07-14T21:38:40Z",
  "locale": "en-US",
  "displayName": "My Model",
  "description": "My Model Description"
}

重要

adaptationDateTime プロパティの日付をメモします。 これは、トレーニングにベース モデルを使用できる最後の日付です。 詳細については、「モデルとエンドポイントのライフサイクル」を参照してください。

transcriptionDateTime プロパティの日付をメモします。 これは、音声認識にカスタム モデルを使用できる最後の日付です。 詳細については、「モデルとエンドポイントのライフサイクル」を参照してください。

応答本文の最上位の self プロパティはモデルの URI です。 この URI を使って、モデルのプロジェクト、マニフェスト、非推奨の日付に関する詳細を取得します。 また、モデルの更新または削除にもこの URI を使います。

モデルに関する Speech CLI ヘルプを表示するには、次のコマンドを実行します。

spx help csr model

トレーニング用のデータセットを使ってモデルを作成するには、Speech to text REST APIModels_Create 操作を使います。 次の手順に従って要求本文を作成します。

  • project プロパティを既存のプロジェクトの URI に設定します。 このプロパティは、Speech Studio でモデルを表示および管理できるようにするためにも推奨されます。 Projects_List 要求を行うと、使用できるプロジェクトを取得できます。
  • 必須の datasets プロパティを、トレーニングに使うデータセットの URI に設定します。
  • 必須の locale プロパティを設定します。 モデルのロケールは、プロジェクトとベース モデルのロケールと一致する必要があります。 ロケールを後から変更することはできません。
  • 必須の displayName プロパティを設定します。 このプロパティは、Speech Studio に表示される名前です。
  • 必要に応じて、baseModel プロパティを設定できます。 (例: "baseModel": {"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/5988d691-0893-472c-851e-8e36a0fe7aaf"})。 baseModel を指定しない場合、ロケールの既定のベース モデルが使われます。

HTTP POST 要求は、次の例に示すように URI を使用して行います。 YourSubscriptionKey は実際の Speech リソース キーに、YourServiceRegion は実際の Speech リソース リージョンに置き換えたうえで、前述のように要求本文のプロパティを設定してください。

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "displayName": "My Model",
  "description": "My Model Description",
  "baseModel": null,
  "datasets": [
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23"
    }
  ],
  "locale": "en-US"
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/models"

注意

この例では、baseModel が設定されていないため、ロケールの既定のベース モデルが使われます。 応答でベース モデルの URI が返されます。

次の形式で応答本文を受け取る必要があります。

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd",
  "baseModel": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/5988d691-0893-472c-851e-8e36a0fe7aaf"
  },
  "datasets": [
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23"
    }
  ],
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd/manifest",
    "copy": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd:copy",
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd/files"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "properties": {
    "deprecationDates": {
      "transcriptionDateTime": "2026-07-15T00:00:00Z"
    },
    "customModelWeightPercent": 30,
    "features": {
      "supportsTranscriptions": true,
      "supportsEndpoints": true,
      "supportsTranscriptionsOnSpeechContainers": false,
      "supportedOutputFormats": [
        "Display",
        "Lexical"
      ]
    }
  },
  "lastActionDateTime": "2024-07-14T21:38:40Z",
  "status": "Running",
  "createdDateTime": "2024-07-14T21:38:40Z",
  "locale": "en-US",
  "displayName": "My Model",
  "description": "My Model Description"
}

重要

adaptationDateTime プロパティの日付をメモします。 これは、トレーニングにベース モデルを使用できる最後の日付です。 詳細については、「モデルとエンドポイントのライフサイクル」を参照してください。

transcriptionDateTime プロパティの日付をメモします。 これは、音声認識にカスタム モデルを使用できる最後の日付です。 詳細については、「モデルとエンドポイントのライフサイクル」を参照してください。

応答本文の最上位の self プロパティはモデルの URI です。 この URI を使って、モデルのプロジェクト、マニフェスト、非推奨の日付に関する詳細を取得します。 また、モデルの更新削除にもこの URI を使用します。

モデルをコピーする

モデルは、同じロケールを使う別のプロジェクトにコピーできます。 たとえば、トレーニング専用のハードウェアがあるリージョンで音声データを使ってモデルをトレーニングした後、必要に応じて別のリージョンの Speech リソースにコピーすることができます。

次の手順に従って、モデルを別のリージョンのプロジェクトにコピーします。

  1. Speech Studio にサインインします。
  2. [Custom Speech]> プロジェクト名 >[カスタム モデルのトレーニング] を選択します。
  3. [コピー先] を選びます。
  4. [Copy speech model](音声モデルのコピー) ページで、モデルをコピーする対象リージョンを選びます。 Speech Studio で適用されるフレーズ リストのスクリーンショット。
  5. 対象リージョンの Speech リソースを選ぶか、新しい Speech リソースを作成します。
  6. モデルをコピーするプロジェクトを選ぶか、新しいプロジェクトを作成します。
  7. [コピー] を選択します。

モデルが正常にコピーされると、対象プロジェクトに表示されるようになります。

別リージョン内のプロジェクトにモデルを直接コピーすることは、Speech CLI ではサポートされていません。 別リージョン内のプロジェクトにモデルをコピーするには、Speech Studio または Speech to text REST API を使います。

モデルを別の音声リソースにコピーするには、Speech to text REST APIModels_Copy 操作を使います。 次の手順に従って要求本文を作成します。

  • 必須の targetSubscriptionKey プロパティを、宛先 Speech リソースのキーに設定します。

HTTP POST 要求は、次の例に示すように URI を使用して行います。 コピー元であるモデルのリージョンと URI を使います。 YourModelId はモデル ID に、YourSubscriptionKey は実際の Speech リソース キーに、YourServiceRegion は実際の Speech リソース リージョンに置き換え、前述のように要求本文のプロパティを設定してください。

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "targetSubscriptionKey": "ModelDestinationSpeechResourceKey"
} '  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/models/YourModelId:copy"

注意

宛先 Speech リソースに関する情報が含まれているのは、要求本文の targetSubscriptionKey プロパティのみです。

次の形式で応答本文を受け取る必要があります。

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9df35ddb-edf9-4e91-8d1a-576d09aabdae",
  "baseModel": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/eb5450a7-3ca2-461a-b2d7-ddbb3ad96540"
  },
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9df35ddb-edf9-4e91-8d1a-576d09aabdae/manifest",
    "copy": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9df35ddb-edf9-4e91-8d1a-576d09aabdae:copy"
  },
  "properties": {
    "deprecationDates": {
      "adaptationDateTime": "2023-01-15T00:00:00Z",
      "transcriptionDateTime": "2024-07-15T00:00:00Z"
    }
  },
  "lastActionDateTime": "2022-05-22T23:15:27Z",
  "status": "NotStarted",
  "createdDateTime": "2022-05-22T23:15:27Z",
  "locale": "en-US",
  "displayName": "My Model",
  "description": "My Model Description",
  "customProperties": {
    "PortalAPIVersion": "3",
    "Purpose": "",
    "VadKind": "None",
    "ModelClass": "None",
    "UsesHalide": "False",
    "IsDynamicGrammarSupported": "False"
  }
}

モデルを接続する

モデルは、別のプロジェクトに接続されることなく、Speech CLI または REST API を使って、あるプロジェクトからコピーされることがあります。 モデルを接続するには、プロジェクトを参照してモデルを更新する必要があります。

Speech Studio でプロンプトが表示されたら、[接続] ボタンを選んで接続できます。

現在のプロジェクトに接続できるモデルが表示された [トレーニングの接続] ページのスクリーンショット。

モデルをプロジェクトに接続するには、spx csr model update コマンドを使います。 次の手順に従って要求パラメーターを作成します。

  • project パラメーターを既存のプロジェクトの URI に設定します。 このパラメーターは、Speech Studio でモデルを表示および管理できるようにするためにも推奨されます。 spx csr project list コマンドを実行すると、使用できるプロジェクトを取得できます。
  • 必須の modelId パラメーターをプロジェクトに接続するモデルの ID に設定します。

モデルをプロジェクトに接続する Speech CLI コマンドの例を次に示します。

spx csr model update --api-version v3.2 --model YourModelId --project YourProjectId

次の形式で応答本文を受け取る必要があります。

{
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
}

モデルに関する Speech CLI ヘルプを表示するには、次のコマンドを実行します。

spx help csr model

モデルをコピーした Speech リソースのプロジェクトに新しいモデルを接続するには、Speech to text REST APIModels_Update 操作を使います。 次の手順に従って要求本文を作成します。

  • 必須の project プロパティを既存のプロジェクトの URI に設定します。 このプロパティは、Speech Studio でモデルを表示および管理できるようにするためにも推奨されます。 Projects_List 要求を行うと、使用できるプロジェクトを取得できます。

HTTP PATCH 要求は、次の例に示すように URI を使って行います。 新しいモデルの URI を使います。 Models_Copy 応答本文の self プロパティから、新しいモデル ID を取得できます。 YourSubscriptionKey は実際の Speech リソース キーに、YourServiceRegion は実際の Speech リソース リージョンに置き換えたうえで、前述のように要求本文のプロパティを設定してください。

curl -v -X PATCH -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.2/models"

次の形式で応答本文を受け取る必要があります。

{
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
}

次のステップ