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

训练自定义语音模型

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

注意

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

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

在训练自定义模型后,可以在有限时间内使用该模型。 你必须定期重新创建基于最新基础模型的自定义模型并使之适应,充分利用提高的准确度和质量。 有关详细信息,请参阅模型和终结点生命周期

重要说明

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

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

创建模型

小窍门

将自定义语音模型从 Speech Studio 引入 Microsoft Foundry 门户。 在 Microsoft Foundry 门户网站中,您可以通过连接到现有的语音资源,继续之前的工作。 有关连接到现有语音资源的详细信息,请参阅连接到现有语音资源

在新的 Microsoft Foundry 门户中,你可以通过在开始自定义语音微调时打开的 微调模型 向导提交微调作业。

  1. 在“ 审阅 ”窗格中,查看设置并确认费用。
  2. 选择 “提交 ”以启动微调作业。
  3. 等待训练完成。 训练完成后,选择自定义模型以打开其详细信息页。

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

  1. 登录 Speech Studio

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

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

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

    重要说明

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

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

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

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

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

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

    重要说明

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

在继续作之前,请确保已安装并配置 语音 CLI

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

  • project 属性设置为现有项目的 ID。 建议使用project属性,以便还可以在Microsoft Foundry 门户中管理自定义语音的微调。 若要获取项目 ID,请参阅 获取 REST API 文档的项目 ID
  • 将所需 dataset 属性设置为要用于训练的数据集的 ID。 若要指定多个数据集,请设置 datasets(复数)参数,并使用分号分隔 ID。
  • 设置所需的 language 属性。 数据集区域设置必须与项目的区域设置一致。 以后无法更改此区域设置。 语音 CLI language 属性对应于 JSON 请求和响应中的 locale 属性。
  • 设置所需的 name 属性。 此参数是在 Microsoft Foundry 门户中显示的名称。 语音 CLI name 属性对应于 JSON 请求和响应中的 displayName 属性。
  • (可选)可设置 base 属性。 例如: --base bbbbcccc-1111-dddd-2222-eeee3333ffff。 如果没有指定 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"

重要说明

必须设置 --api-version v3.2。 语音 CLI 使用 REST API,但尚不支持晚于 v3.2版本。

应接收以下格式的响应正文:

{
  "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/aaaabbbb-0000-cccc-1111-dddd2222eeee",
  "baseModel": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/bbbbcccc-1111-dddd-2222-eeee3333ffff"
  },
  "datasets": [
    {
      "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/datasets/ccccdddd-2222-eeee-3333-ffff4444aaaa"
    }
  ],
  "links": {
    "manifest": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd/manifest",
    "copy": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd:copy",
    "files": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd/files"
  },
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "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。 建议使用此属性,以便在 Microsoft Foundry 门户中查看和管理模型。 若要获取项目 ID,请参阅 获取 REST API 文档的项目 ID
  • 将所需的 datasets 属性设置为要用于训练的数据集的 URI。
  • 设置所需的 locale 属性。 模型区域设置必须与项目和基础模型的区域设置一致。 以后无法更改此区域设置。
  • 设置所需的 displayName 属性。 此属性是在 Microsoft Foundry 门户中显示的名称。
  • (可选)可设置 baseModel 属性。 例如: "baseModel": {"self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/bbbbcccc-1111-dddd-2222-eeee3333ffff"}。 如果没有指定 baseModel,则使用区域设置的默认基础模型。

使用 URI 发出 HTTP POST 请求,如以下示例所示。 将 YourSpeechResoureKey 替换为你的 Speech 资源密钥,将 YourResourceName 替换为你的 Speech 资源名称,并如前所述设置请求正文属性。

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -H "Content-Type: application/json" -d '{
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "displayName": "My Model",
  "description": "My Model Description",
  "baseModel": null,
  "datasets": [
    {
      "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/datasets/ccccdddd-2222-eeee-3333-ffff4444aaaa"
    }
  ],
  "locale": "en-US"
}'  "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models"

注意

在本示例中,baseModel 未设置,因此使用区域设置的默认基础模型。 基础模型 URI 是在响应中返回的。

应接收以下格式的响应正文:

{
  "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/aaaabbbb-0000-cccc-1111-dddd2222eeee",
  "baseModel": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/base/bbbbcccc-1111-dddd-2222-eeee3333ffff"
  },
  "datasets": [
    {
      "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/datasets/ccccdddd-2222-eeee-3333-ffff4444aaaa"
    }
  ],
  "links": {
    "manifest": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd/manifest",
    "copy": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd:copy",
    "files": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd/files"
  },
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
  "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 更新删除模型。

复制模型

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

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

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

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

在继续作之前,请确保已安装并配置 语音 CLI

语音命令行界面支持 spx csr model copy 复制模型的命令。 但是,CLI 尚不包括授权复制命令。 若要执行完整的复制流程,请使用 语音转文本 REST APIMicrosoft Foundry 门户

有关模型复制的语音 CLI 帮助,请运行以下命令:

spx help csr model copy

使用 语音转文本 REST API v3.2 将模型复制到另一个语音资源需要执行两个步骤:

  1. 目标语音资源上授权复制
  2. 语音资源复制模型

步骤 1:授权复制

目标语音资源调用Models_AuthorizeCopy操作。 在请求正文中,将 sourceResourceId 属性设置为模型当前所在的 source 的 Azure 资源 ID。

YourTargetSpeechResourceKey 替换为目标资源键,并将 YourTargetResourceName 替换为目标资源名称。

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourTargetSpeechResourceKey" -H "Content-Type: application/json" -d '{
  "sourceResourceId": "/subscriptions/YourSourceSubscriptionId/resourceGroups/YourSourceResourceGroup/providers/Microsoft.CognitiveServices/accounts/YourSourceSpeechResourceName"
}'  "https://YourTargetResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models:authorizecopy"

你会收到 ModelCopyAuthorization 以下格式的响应:

{
  "targetResourceRegion": "westus2",
  "targetResourceId": "/subscriptions/targetSubscriptionId/resourceGroups/targetResourceGroupName/providers/Microsoft.CognitiveServices/accounts/targetSpeechResourceName",
  "targetResourceEndpoint": "https://YourTargetResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models",
  "sourceResourceId": "/subscriptions/sourceSubscriptionId/resourceGroups/sourceResourceGroupName/providers/Microsoft.CognitiveServices/accounts/sourceSpeechResourceName",
  "expirationDateTime": "2025-01-07T11:34:12Z",
  "id": "d61573c6-788b-4eff-b3f5-38a1c7a9585b"
}

保存整个响应正文。 在下一步中,将其作为请求的正文传递。

步骤 2:复制模型

语音资源调用Models_Copy操作。 将步骤 1 的完整 ModelCopyAuthorization 响应作为请求正文传递。

替换为 YourModelId 模型 ID、 YourSourceSpeechResourceKey 源资源密钥和 YourSourceResourceName 源资源名称。

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSourceSpeechResourceKey" -H "Content-Type: application/json" -d '{
  "targetResourceRegion": "westus2",
  "targetResourceId": "/subscriptions/targetSubscriptionId/resourceGroups/targetResourceGroupName/providers/Microsoft.CognitiveServices/accounts/targetSpeechResourceName",
  "targetResourceEndpoint": "https://YourTargetResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models",
  "sourceResourceId": "/subscriptions/sourceSubscriptionId/resourceGroups/sourceResourceGroupName/providers/Microsoft.CognitiveServices/accounts/sourceSpeechResourceName",
  "expirationDateTime": "2025-01-07T11:34:12Z",
  "id": "d61573c6-788b-4eff-b3f5-38a1c7a9585b"
}'  "https://YourSourceResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models/YourModelId:copy"

您将收到一个202 Accepted响应,其中包含一个Operation-Location标头,可用于跟踪复制状态。 响应正文包含操作详细信息:

{
  "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/operations/models/copy/e30f6a27-82be-4cca-9258-0399c70489ff",
  "createdDateTime": "2025-01-07T11:34:12Z",
  "lastActionDateTime": "2025-01-07T11:34:12Z",
  "status": "NotStarted",
  "id": "e30f6a27-82be-4cca-9258-0399c70489ff"
}

注意

复制授权仅在步骤 1 返回expirationDateTime 之前有效。 在授权过期之前启动复制。

连接模型

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

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

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

在继续作之前,请确保已安装并配置 语音 CLI

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

  • project 属性设置为现有项目的 ID。 建议使用project属性,以便还可以在Microsoft Foundry 门户中管理自定义语音的微调。 若要获取项目 ID,请参阅 获取 REST API 文档的项目 ID
  • 将所需 modelId 属性设置为要连接到项目的模型的 ID。

下面是将模型连接到项目的示例语音 CLI 命令:

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

重要说明

必须设置 --api-version v3.2。 语音 CLI 使用 REST API,但尚不支持晚于 v3.2版本。

应接收以下格式的响应正文:

{
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
}

对于模型的语音 CLI 帮助,请运行以下命令:

spx help csr model

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

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

curl -v -X PATCH -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -H "Content-Type: application/json" -d '{
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
}'  "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/models"

应接收以下格式的响应正文:

{
  "project": {
    "self": "https://YourResourceName.cognitiveservices.azure.com/speechtotext/v3.2/projects/ddddeeee-3333-ffff-4444-aaaa5555bbbb"
  },
}

后续步骤