你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

训练自定义语音模型

本文介绍如何训练自定义模型,以提高 Microsoft 基础模型中的识别准确度。 即使发布了新的基础模型,自定义语音模型的语音识别准确度和质量也会保持一致。

注意

你将为自定义语音识别模型使用量和终结点托管付费。 如果基础模型创建于 2023 年 10 月 1 日及之后,则还需要为自定义语音识别模型训练付费。 如果基础模型是在 2023 年 10 月之前创建的,则无需支付训练费用。 有关详细信息,请参阅 Azure AI 语音定价语音转文本 3.2 迁移指南中的适配收费部分

训练模型通常是一个迭代过程。 首先选择一个基本模型,该模型是新模型的起点。 你需要使用可包含文本和音频的数据集来训练模型,然后进行测试。 如果识别质量或准确度不符合要求,可以使用更多或修改后的训练数据创建新的模型,然后再次进行测试。

在训练自定义模型后,可以在有限时间内使用该模型。 你必须定期从最新的基本模型重新创建和调整自定义模型,以充分利用改进的准确性和质量。 有关详细信息,请参阅模型和终结点生命周期

重要

如果使用音频数据训练自定义模型,请在具有专用硬件的区域中选择服务资源来训练音频数据。 训练模型后,可以根据需要 将其复制到另一个区域中的 AI Foundry 语音资源

在具有专用于自定义语音识别训练的硬件的区域中,语音服务将使用长达 100 小时的音频训练数据,并且每天可以处理大约 10 小时的数据。 有关详细信息,请参阅区域表中的脚注。

创建模型

  1. 登录 Azure AI Foundry 门户

  2. 从左窗格中选择 “微调 ”,然后选择 “AI 服务微调”。

  3. 选择自定义语音识别微调任务(按模型名称),该任务是你按照“如何启动自定义语音识别微调”一文中所述启动的

  4. 选择训练模型>+训练模型

    页面的屏幕截图,其中显示了一个用于开始训练自定义语音识别模型的选项。

  5. 在“训练新模型”向导中,选择要微调的基础模型。 然后选择下一步

    页面的屏幕截图,其中显示了一个用于选择你要微调的基础模型的选项。

  6. 选择用于训练的数据。 然后选择下一步

  7. 输入模型的名称和说明。 然后选择下一步

  8. 查看设置,然后选择“训练新模型”。 随后你将返回到“训练模型”页面。 数据状态为“正在处理”

    显示训练状态为“正在处理”的页面的屏幕截图。

上传训练数据集后,请按以下说明开始训练模型:

  1. 登录 Speech Studio

  2. 选择“自定义语音识别”> 你的项目名称 >“训练自定义模型”。

  3. 选择“训练新模型”。

  4. 在“选择基线模型”页上,选择一个基本模型,然后选择“下一步”。 如果不确定,请从列表顶部选择最新的模型。 基础模型的名称对应于 YYYYMMDD 格式的发布日期。 在 Speech Studio 中,基础模型的自定义功能列在括号中,位于模型名称后面。

    重要

    记下“适应到期”日期。 这是可以使用基本模型进行训练的最后日期。 有关详细信息,请参阅模型和终结点生命周期

  5. 在“选择数据”页上,选择一个或多个要用于训练的数据集。 如果没有任何可用的数据集,请取消设置,然后转到“语音数据集”菜单来上传数据集

  6. 输入自定义模型的名称和说明,然后选择“下一步”。

  7. 或者,选中“在下一步中添加测试”框。 如果跳过此步骤,可以稍后运行相同的测试。 有关详细信息,请参阅测试识别质量定量测试模型

  8. 选择“保存并关闭”以启动自定义模型的生成。

  9. 返回到“训练自定义模型”页。

    重要

    记下“到期”日期。 这是可以使用自定义模型进行语音识别的最后日期。 有关详细信息,请参阅模型和终结点生命周期

若要使用数据集创建模型进行训练,请使用 spx csr model create 命令。 根据以下说明构造请求参数:

  • project 属性设置为现有项目的 ID。 建议使用此属性,以便还可以在 Azure AI Foundry 门户中查看和管理模型。 可以运行 spx csr project list 命令来获取可用项目。
  • 将所需 dataset 属性设置为要用于训练的数据集的 ID。 若要指定多个数据集,请设置 datasets(复数)参数,并使用分号分隔 ID。
  • 设置所需的 language 属性。 数据集区域设置必须与项目的区域设置一致。 以后无法更改此区域设置。 语音 CLI language 属性对应于 JSON 请求和响应中的 locale 属性。
  • 设置所需的 name 属性。 此参数是在 Azure AI Foundry 门户中显示的名称。 语音 CLI name 属性对应于 JSON 请求和响应中的 displayName 属性。
  • (可选)可设置 base 属性。 例如:--base 5988d691-0893-472c-851e-8e36a0fe7aaf。 如果没有指定 base,则使用区域设置的默认基础模型。 语音 CLI base 属性对应于 JSON 请求和响应中的 baseModel 属性。

下面是一个示例语音 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 来更新或删除模型。

要获取模型的语音 CLI 帮助,请运行以下命令:

spx help csr model

若要使用数据集创建模型进行训练,请使用语音转文本 REST APIModels_Create 操作。 根据以下说明构造请求正文:

  • project 属性设置为现有项目的 URI。 建议使用此属性,以便还可以在 Azure AI Foundry 门户中查看和管理模型。 可以发出 Projects_List 请求来获取可用项目。
  • 将所需的 datasets 属性设置为要用于训练的数据集的 URI。
  • 设置所需的 locale 属性。 模型区域设置必须与项目和基础模型的区域设置一致。 以后无法更改此区域设置。
  • 设置所需的 displayName 属性。 此属性是在 Azure AI Foundry 门户中显示的名称。
  • (可选)可设置 baseModel 属性。 例如:"baseModel": {"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/5988d691-0893-472c-851e-8e36a0fe7aaf"}。 如果没有指定 baseModel,则使用区域设置的默认基础模型。

使用 URI 发出 HTTP POST 请求,如以下示例所示。 将 YourSpeechResoureKey 替换为语音资源密钥,将 YourServiceRegion 替换为语音资源区域,并按前文所述设置请求正文属性。

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -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 更新删除模型。

复制模型

可以将模型复制到使用相同区域设置的另一个项目。 例如,使用专用训练硬件在区域中使用音频数据训练模型后,可以根据需要将其复制到另一个区域中适用于语音的 AI Foundry 资源。

按照以下说明将模型复制到另一个区域的项目中:

  1. 登录 Speech Studio
  2. 选择“自定义语音识别”> 你的项目名称 >“训练自定义模型”。
  3. 选择“复制到”。
  4. 在“复制语音模型”页上,选择要复制模型的目标区域。 Speech Studio 中应用的短语列表的屏幕截图。
  5. 在目标区域中为语音选择 AI Foundry 资源,或创建新的语音资源。
  6. 选择要在其中复制模型的项目,或创建一个新项目。
  7. 选择“复制”。

成功复制模型后,你将收到通知,并可在目标项目中查看它。

语音 CLI 不支持将模型直接复制到另一个区域中的项目。 可以使用 Azure AI Foundry 门户语音工作室语音转文本 REST API 将模型复制到另一区域中的项目。

若要将模型复制到另一个语音资源,请使用语音转文本 REST APIModels_Copy 操作。 根据以下说明构造请求正文:

  • 将所需的 targetSubscriptionKey 属性设置为目标语音资源的密钥。

使用 URI 发出 HTTP POST 请求,如以下示例所示。 使用要从中进行复制的模型的区域和 URI。 将 YourModelId 替换为模型 ID,将 YourSpeechResoureKey 替换为语音资源密钥,将 YourServiceRegion 替换为语音资源区域,并按前文所述设置请求正文属性。

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

注意

只有请求正文中的 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"
  }
}

连接模型

模型可能是使用语音 CLI 或 REST API 从一个项目中复制的,而没有连接到另一个项目。 连接模型就是使用对项目的引用来更新模型。

如果在 Speech Studio 中出现提示,可以通过选择“连接”按钮来连接它们。

连接训练页的屏幕截图,其中显示了可以连接到当前项目的模型。

若要将模型连接到项目,请使用 spx csr model update 命令。 根据以下说明构造请求参数:

  • project 属性设置为现有项目的 URI。 建议使用此属性,以便还可以在 Azure AI Foundry 门户中查看和管理模型。 可以运行 spx csr project list 命令来获取可用项目。
  • 将所需 modelId 属性设置为要连接到项目的模型的 ID。

下面是将模型连接到项目的示例语音 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"
  },
}

要获取模型的语音 CLI 帮助,请运行以下命令:

spx help csr model

若要将新模型连接到复制了模型的语音资源项目,请使用语音转文本 REST APIModels_Update 操作。 根据以下说明构造请求正文:

  • 将所需的 project 属性设置为现有项目的 URI。 建议使用此属性,以便还可以在 Azure AI Foundry 门户中查看和管理模型。 可以发出 Projects_List 请求来获取可用项目。

使用 URI 发出 HTTP PATCH 请求,如以下示例所示。 使用新模型的 URI。 可以从 self 响应正文的 属性获取新模型 ID。 将 YourSpeechResoureKey 替换为语音资源密钥,将 YourServiceRegion 替换为语音资源区域,并按前文所述设置请求正文属性。

curl -v -X PATCH -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -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"
  },
}

后续步骤