上传用于自定义语音识别的训练和测试数据集

你需要音频或文本数据来测试语音识别的准确性或训练你的自定义模型。 若要了解测试或训练模型所支持的数据类型,请参阅训练和测试数据集

上传数据集

若要在 Speech Studio 中上传自己的数据集,请执行以下步骤:

  1. 登录 Speech Studio

  2. 选择“自定义语音识别”> 你的项目名称 >“语音数据集”>“上传数据”。

  3. 选择“训练数据”或“测试数据”选项卡。

  4. 选择数据集类型,然后选择“下一步”。

  5. 指定数据集位置,然后选择“下一步”。 可以选择本地文件,也可以输入远程位置,例如 Azure Blob URL。 如果选择远程位置,并且未使用受信任的 Azure 服务安全机制,那么远程位置应是可使用简单的匿名 GET 请求检索的 URL。 例如,SAS URL 或可公开访问的 URL。 不支持需要额外授权或需要用户交互的 URL。

    注意

    如果使用 Azure Blob URL,则可以使用受信任的 Azure 服务安全机制来确保数据集文件的最大安全性。 对于数据集文件,你将使用与针对批量听录和纯文本存储帐户 URL 相同的技术。 请参阅此处的详细信息。

  6. 输入数据集名称和描述,然后选择“下一步”。

  7. 检查你的设置,然后选择“保存并关闭”。

上传数据集后,转到“训练自定义模型”页来训练自定义模型

与 Speech Studio 不同的是,使用语音 CLI语音转文本 REST API 时,无需在上传时选择数据集是用于测试还是用于训练。 你需要指定训练模型运行测试时数据集的使用方式。

虽然你没有说明数据集是用于测试还是用于训练,但必须指定数据集类型。 数据集类型用于确定创建的数据集类型。 在某些情况下,数据集类型仅用于测试或训练,但不应依赖这一点。 语音 CLI 和 REST API kind 值对应于 Speech Studio 中的选项,如下表所示:

CLI 和 API 类型 Speech Studio 选项
声学 训练数据:音频 + 人工标记的脚本
测试数据:脚本(自动音频合成)
测试数据:音频 + 人工标记的脚本
AudioFiles 测试数据:音频
语言 训练数据:纯文本
LanguageMarkdown 训练数据:markdown 格式的结构化文本
发音 训练数据:发音
OutputFormatting 训练数据:输出格式

重要

不使用语音 CLI 或 REST API 直接上传数据文件。 首先,将训练或测试数据集文件存储在语音 CLI 或 REST API 可以访问的 URL 上。 上传数据文件后,可以使用语音 CLI 或 REST API 创建用于自定义语音测试或训练的数据集。

若要创建数据集并将其连接到现有项目,请使用 spx csr dataset create 命令。 根据以下说明构造请求参数:

  • project 参数设置为现有项目的 ID。 建议使用此参数,这样你还可以在 Speech Studio 中查看和管理数据集。 可以运行 spx csr project list 命令来获取可用项目。

  • 设置所需的 kind 参数。 训练数据集类型的可能值集包括:Acoustic、AudioFiles、Language、LanguageMarkdown 和发音。

  • 设置所需的 contentUrl 参数。 此参数是数据集的位置。 如果未使用受信任的 Azure 服务安全机制(参见下一篇说明),则 contentUrl 参数应是可使用简单的匿名 GET 请求检索的 URL。 例如,SAS URL 或可公开访问的 URL。 不支持需要额外授权或需要用户交互的 URL。

    注意

    如果使用 Azure Blob URL,则可以使用受信任的 Azure 服务安全机制来确保数据集文件的最大安全性。 对于数据集文件,你将使用与针对批量听录和纯文本存储帐户 URL 相同的技术。 请参阅此处的详细信息。

  • 设置所需的 language 参数。 数据集区域设置必须与项目的区域设置一致。 以后无法更改此区域设置。 语音 CLI language 参数对应于 JSON 请求和响应中的 locale 属性。

  • 设置所需的 name 参数。 此参数是在 Speech Studio 中显示的名称。 语音 CLI name 参数对应于 JSON 请求和响应中的 displayName 属性。

下面是一个示例语音 CLI 命令,用于创建数据集并将其连接到现有项目:

spx csr dataset create --api-version v3.2 --kind "Acoustic" --name "My Acoustic Dataset" --description "My Acoustic Dataset Description" --project YourProjectId --content YourContentUrl --language "en-US"

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

{
  "self": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23",
  "kind": "Acoustic",
  "links": {
    "files": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23/files"
  },
  "project": {
    "self": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "properties": {
    "textNormalizationKind": "Default",
    "acceptedLineCount": 2,
    "rejectedLineCount": 0,
    "duration": "PT59S"
  },
  "lastActionDateTime": "2024-07-14T17:36:30Z",
  "status": "Succeeded",
  "createdDateTime": "2024-07-14T17:36:14Z",
  "locale": "en-US",
  "displayName": "My Acoustic Dataset",
  "description": "My Acoustic Dataset Description",
  "customProperties": {
    "PortalAPIVersion": "3"
  }
}

响应正文中的顶级 self 属性是数据集的 URI。 使用此 URI 可获取有关数据集的项目和文件的详细信息。 你还可以使用此 URI 更新或删除数据集。

要获取数据集的语音 CLI 帮助,请运行以下命令:

spx help csr dataset

与 Speech Studio 不同的是,使用语音 CLI语音转文本 REST API 时,无需在上传时选择数据集是用于测试还是用于训练。 你需要指定训练模型运行测试时数据集的使用方式。

虽然你没有说明数据集是用于测试还是用于训练,但必须指定数据集类型。 数据集类型用于确定创建的数据集类型。 在某些情况下,数据集类型仅用于测试或训练,但不应依赖这一点。 语音 CLI 和 REST API kind 值对应于 Speech Studio 中的选项,如下表所示:

CLI 和 API 类型 Speech Studio 选项
声学 训练数据:音频 + 人工标记的脚本
测试数据:脚本(自动音频合成)
测试数据:音频 + 人工标记的脚本
AudioFiles 测试数据:音频
语言 训练数据:纯文本
LanguageMarkdown 训练数据:markdown 格式的结构化文本
发音 训练数据:发音
OutputFormatting 训练数据:输出格式

重要

不使用语音 CLI 或 REST API 直接上传数据文件。 首先,将训练或测试数据集文件存储在语音 CLI 或 REST API 可以访问的 URL 上。 上传数据文件后,可以使用语音 CLI 或 REST API 创建用于自定义语音测试或训练的数据集。

若要创建数据集并将其连接到现有项目,请使用语音转文本 REST APIDatasets_Create 操作。 根据以下说明构造请求正文:

  • project 属性设置为现有项目的 URI。 建议使用此属性,这样你还可以在 Speech Studio 中查看和管理数据集。 可以发出 Projects_List 请求来获取可用项目。

  • 设置所需的 kind 属性。 训练数据集类型的可能值集包括:Acoustic、AudioFiles、Language、LanguageMarkdown 和发音。

  • 设置所需的 contentUrl 属性。 此属性是数据集的位置。 如果未使用受信任的 Azure 服务安全机制(参见下一篇说明),则 contentUrl 参数应是可使用简单的匿名 GET 请求检索的 URL。 例如,SAS URL 或可公开访问的 URL。 不支持需要额外授权或需要用户交互的 URL。

    注意

    如果使用 Azure Blob URL,则可以使用受信任的 Azure 服务安全机制来确保数据集文件的最大安全性。 对于数据集文件,你将使用与针对批量听录和纯文本存储帐户 URL 相同的技术。 请参阅此处的详细信息。

  • 设置所需的 locale 属性。 数据集区域设置必须与项目的区域设置一致。 以后无法更改此区域设置。

  • 设置所需的 displayName 属性。 此属性是在 Speech Studio 中显示的名称。

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

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "kind": "Acoustic",
  "displayName": "My Acoustic Dataset",
  "description": "My Acoustic Dataset Description",
  "project": {
    "self": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "contentUrl": "https://contoso.com/mydatasetlocation",
  "locale": "en-US",
}'  "https://YourServiceRegion.api.cognitive.azure.cn/speechtotext/v3.2/datasets"

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

{
  "self": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23",
  "kind": "Acoustic",
  "links": {
    "files": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/datasets/23b6554d-21f9-4df1-89cb-f84510ac8d23/files"
  },
  "project": {
    "self": "https://chinanorth2.api.cognitive.azure.cn/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
  },
  "properties": {
    "textNormalizationKind": "Default",
    "acceptedLineCount": 2,
    "rejectedLineCount": 0,
    "duration": "PT59S"
  },
  "lastActionDateTime": "2024-07-14T17:36:30Z",
  "status": "Succeeded",
  "createdDateTime": "2024-07-14T17:36:14Z",
  "locale": "en-US",
  "displayName": "My Acoustic Dataset",
  "description": "My Acoustic Dataset Description",
  "customProperties": {
    "PortalAPIVersion": "3"
  }
}

响应正文中的顶级 self 属性是数据集的 URI。 使用此 URI 可获取有关数据集的项目和文件的详细信息。 还可以使用此 URI 更新删除数据集。

重要

使用 REST API 或语音 CLI 训练和测试自定义模型时,不需要将数据集连接到自定义语音项目。 但是,如果数据集未连接到任何项目,则无法在 Speech Studio 中选择它进行训练或测试。

后续步骤