

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建自定义语言模型
<a name="custom-language-models-create"></a>

在创建自定义语言模型之前，您必须：
+ 准备您的数据。数据必须以纯文本格式保存，且不能包含任何特殊字符。
+ 将数据上传到您的 Amazon S3 存储桶。建议为训练和调整数据创建单独的文件夹。
+ 确保 Amazon Transcribe 可以访问您的 Amazon S3 存储桶。您必须指定具有访问权限的 IAM 角色才能使用您的数据。

## 准备数据
<a name="prepare-data"></a>

您可以将所有数据编译到一个文件中，也可以将其另存为多个文件。请注意，如果您选择包含调整数据，则必须将其与训练数据保存在不同的文件中。

无论您为训练或调整数据使用多少文本文件，都无关紧要。上传一个包含 10 万个字的文件等同于上传 10 个包含 1 万字的文件。以最方便的方式准备文本数据。

确保您的所有数据文件符合以下条件：
+ 它们都与您要创建的模型使用相同的语言。例如，如果要创建用美国英语 (`en-US`) 转录音频的自定义语言模型，则所有文本数据都必须使用美国英语。
+ 它们均为纯文本格式，采用 UTF-8 编码。
+ 它们不包含任何特殊字符或格式，例如 HTML 标签。
+ 它们用于训练数据的最大总大小为 2 GB，用于调整数据的最大总大小为 200 MB。

如果未满足其中任何条件，您的模型都会失败。

## 上传数据
<a name="upload-data"></a>

在上传数据之前，请为训练数据创建一个新文件夹。如果使用调整数据，请创建另一个单独的文件夹。

您的存储桶的 URI 可能如下所示：
+ `s3://amzn-s3-demo-bucket/my-model-training-data/`
+ `s3://amzn-s3-demo-bucket/my-model-tuning-data/`

将您的训练和调整数据上传到相应的存储桶中。

您可以稍后向这些存储桶添加更多数据。但是，如果这样做，则需要使用新数据重新创建模型。现有模型无法使用新数据进行更新。

## 允许访问您的数据
<a name="data-permissions"></a>

要创建自定义语言模型，您必须指定有权访问您 Amazon S3 存储桶的 IAM 角色。如果您还没有可以访问存放训练数据的 Amazon S3 存储桶的角色，则必须创建一个角色。创建角色后，您可以附加策略以授予该角色权限。请勿将策略附加到用户。

有关示例策略，请参阅 [Amazon Transcribe 基于身份的策略示例](security_iam_id-based-policy-examples.md)。

要了解如何创建新 IAM 身份，请参阅 [IAM 身份（用户、用户组和角色）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)。

要了解有关策略的更多信息，请参阅：
+ [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)
+ [创建 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-start)
+ [适用于 AWS 资源的 Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/access)

## 创建您的自定义语言模型
<a name="create-custom-language-model"></a>

创建自定义语言模型时，必须选择基础模型。有两个基础模型选项：
+ `NarrowBand`：对于采样率低于 16000 Hz 的音频，请使用此选项。这种模型类型通常用于以 8000 Hz 频率录制的电话聊天。
+ `WideBand`：对于采样率大于或等于 16000 Hz 的音频，请使用此选项。

您可以使用 AWS 管理控制台、AWS CLI 或 AWS SDK 创建自定义语言模型；请参阅以下示例：

### AWS 管理控制台
<a name="model-create-console"></a>

1. 登录到 [AWS 管理控制台](https://console.aws.amazon.com/transcribe/)。

1. 在导航窗格中，选择**自定义语言模型**。这将打开**自定义语言模型**页面，您可以在其中查看现有的自定义语言模型或训练新的自定义语言模型。

1. 要训练新模型，请选择**训练模型**。  
![Amazon Transcribe 控制台屏幕截图：“自定义语言模型”页面。](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/clm-create-console.png)

   这会将您转至**训练模型**页面。添加名称、指定语言，然后为模型选择所需的基础模型。然后，添加训练路径并（可选）调整数据。您必须包括一个有权访问您数据的 IAM 角色。  
![Amazon Transcribe 控制台屏幕截图：“训练模型”页面。](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/clm-train-console.png)

1. 填写完所有字段后，选择页面底部的**训练模型**。

### AWS CLI
<a name="model-create-cli"></a>

此示例使用 [create-language-model](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/create-language-model.html) 命令。有关更多信息，请参阅 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateLanguageModel.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateLanguageModel.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_LanguageModel.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_LanguageModel.html)。

```
aws transcribe create-language-model \ 
--base-model-name {{NarrowBand}} \ 
--model-name {{my-first-language-model}} \ 
--input-data-config S3Uri=s3://{{amzn-s3-demo-bucket}}/{{my-clm-training-data}}/,TuningDataS3Uri=s3://{{amzn-s3-demo-bucket}}/{{my-clm-tuning-data}}/,DataAccessRoleArn=arn:aws:iam::{{111122223333}}:role/{{ExampleRole}} \
--language-code {{en-US}}
```

以下是另一个使用 [create-language-model](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/start-transcription-job.html) 命令的示例，以及用于创建自定义语言模型的请求正文。

```
aws transcribe create-language-model \
--cli-input-json file://{{filepath}}/{{my-first-language-model}}.json
```

*my-first-language-model.json* 文件包含以下请求正文。

```
{
  "BaseModelName": "{{NarrowBand}}",
  "ModelName": "{{my-first-language-model}}",
  "InputDataConfig": {
         "S3Uri": "s3://{{amzn-s3-demo-bucket}}/{{my-clm-training-data}}/",
         "TuningDataS3Uri"="s3://{{amzn-s3-demo-bucket}}/{{my-clm-tuning-data}}/",
         "DataAccessRoleArn": "arn:aws:iam::{{111122223333}}:role/{{ExampleRole}}"
    },
  "LanguageCode": "{{en-US}}"  
}
```

### 适用于 Python (Boto3) 的 AWS SDK
<a name="model-create-python-batch"></a>

此示例使用 适用于 Python (Boto3) 的 AWS SDK 通过 [create\_language\_model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/transcribe.html#TranscribeService.Client.create_language_model) 方法创建 CLM。有关更多信息，请参阅 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateLanguageModel.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_CreateLanguageModel.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_LanguageModel.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_LanguageModel.html)。

有关使用 AWS SDK 的其它示例，包括特定特征、场景和跨服务示例，请参阅[使用 Amazon Transcribe 的代码示例 AWS SDKs](service_code_examples.md)一章。

```
from __future__ import print_function
import time
import boto3
transcribe = boto3.client('transcribe', '{{us-west-2}}')
model_name = '{{my-first-language-model}}',
transcribe.create_language_model(
    LanguageCode = '{{en-US}}', 
    BaseModelName = '{{NarrowBand}}',
    ModelName = model_name,
    InputDataConfig = {
        'S3Uri':'s3://{{amzn-s3-demo-bucket}}/{{my-clm-training-data}}/',
        'TuningDataS3Uri':'s3://{{amzn-s3-demo-bucket}}/{{my-clm-tuning-data}}/',
        'DataAccessRoleArn':'arn:aws:iam::{{111122223333}}:role/{{ExampleRole}}'
    }
)

while True:
    status = transcribe.get_language_model(ModelName = model_name)
    if status['LanguageModel']['ModelStatus'] in ['COMPLETED', 'FAILED']:
        break
    print("Not ready yet...")
    time.sleep(5)
print(status)
```

## 更新您的自定义语言模型
<a name="update-custom-language-model"></a>

Amazon Transcribe 不断更新可用于自定义语言模型的基础模型。为了从这些更新中受益，我们建议每 6 到 12 个月训练一次新的自定义语言模型。

要查看您的自定义语言模型是否使用最新的基础模型，请使用 AWS CLI 或 AWS SDK 运行 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_DescribeLanguageModel.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_DescribeLanguageModel.html) 请求，然后在响应中找到 `UpgradeAvailability` 字段。

如果 `UpgradeAvailability` 是 `true`，则说明您的模型未运行最新版本的基础模型。要在自定义语言模型中使用最新的基础模型，必须创建新的自定义语言模型。自定义语言模型无法升级。