建立自訂語言模型 - Amazon Transcribe

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立自訂語言模型

在建立自訂語言模型之前,您必須:

  • 準備資料。數據必須以純文本格式保存,並且不能包含任何特殊字符。

  • 將您的資料上傳至Amazon S3值區。建議為訓練和調整資料建立個別的資料夾。

  • 確保Amazon Transcribe可以訪問您的存Amazon S3儲桶。您必須指定具有存取權限的IAM角色才能使用您的資料。

準備資料

您可以將所有數據編譯在一個文件中,也可以將其另存為多個文件。請注意,如果您選擇包括調整資料,則必須將其儲存在與訓練資料不同的檔案中。

無論您使用多少文本文件進行培訓或調整數據都沒關係。上傳一個包含 100,000 個字詞的文件,結果與上傳 10 個文件(含 10,000 個字)相同的結果。以最方便的方式準備文字資料。

請確定您的所有資料檔符合以下條件:

  • 它們都使用與您要創建的模型相同的語言。例如,如果您想要建立以美式英文 (en-US) 轉錄音訊的自訂語言模型,則所有文字資料都必須使用美式英文。

  • 它們採用 UTF-8 編碼的純文本格式。

  • 它們不包含任何特殊字符或格式,例如 HTML 標記。

  • 訓練資料的合併大小上限為 2 GB,而調整資料的最大大小為 200 MB。

若未符合這些條件,您的模型將失敗。

上傳您的資料

上傳資料之前,請先為訓練資料建立新資料夾。如果使用調整資料,請建立另一個獨立的資料夾

您的存儲桶的 URI 可能如下所示:

  • s3://DOC-EXAMPLE-BUCKET/my-model-training-data/

  • s3://DOC-EXAMPLE-BUCKET/my-model-tuning-data/

將您的訓練和調整資料上傳至適當的值區。

您可以稍後將更多資料新增至這些值區。但是,如果這樣做,則需要使用新資料重新建立模型。現有模型無法使用新數據進行更新。

允許存取您的資料

若要建立自訂語言模型,您必須指定具有存取Amazon S3值區之權限的IAM角色。如果您尚未擁有可存取放置訓練資料之Amazon S3值區的角色,則必須建立一個角色。建立角色之後,您可以附加原則以授與該角色權限。請勿將政策連接至使用者。

如需取得範例政策,請參閱 Amazon Transcribe 身分型政策範例

若要瞭解如何建立新IAM身分,請參閱IAM身分識別 (使用者、使用者群組和角色)

若要進一步了解政策,請參閱:

建立您的自訂語言模型

建立自訂語言模型時,您必須選擇基礎模型。有兩種基本模型選項:

  • NarrowBand:針對取樣率小於 16,000 Hz 的音訊使用此選項。此模型類型通常用於以 8,000 赫茲記錄的電話對話。

  • WideBand:針對取樣率大於或等於 16,000 Hz 的音訊使用此選項。

您可以使用AWS Management Console、AWS CLI或 AWS SDK 建立自訂語言模型。請參閱下列範例:

  1. 登入 AWS Management Console

  2. 在導覽窗格中,選擇自訂語言模型。這會開啟 [自訂語言模型] 頁面,您可以在其中檢視現有的自訂語言模型或訓練新的自訂語言模型。

  3. 若要訓練新模型,請選取訓練模型

    Amazon Transcribe控制台屏幕截圖:「自定義語言模型」頁面。

    這將帶您進入「火車模型」頁面。新增名稱、指定語言,然後選擇您要用於模型的基礎模型。然後,將路徑新增至訓練,並加入您的調整資料 (選擇性)。您必須包含具有存取資料之權限的IAM角色。

    Amazon Transcribe控制台屏幕截圖:「火車模型」頁面。
  4. 完成所有欄位後,請選取頁面底部的 [訓練模型]。

此範例使用create-language-model指令。如需詳細資訊,請參閱 CreateLanguageModelLanguageModel

aws transcribe create-language-model \ --base-model-name NarrowBand \ --model-name my-first-language-model \ --input-data-config S3Uri=s3://DOC-EXAMPLE-BUCKET/my-clm-training-data/,TuningDataS3Uri=s3://DOC-EXAMPLE-BUCKET/my-clm-tuning-data/,DataAccessRoleArn=arn:aws:iam::111122223333:role/ExampleRole \ --language-code en-US

下面是另一個使用create-language-model命令的示例,以及創建自定義語言模型的請求主體。

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://DOC-EXAMPLE-BUCKET/my-clm-training-data/", "TuningDataS3Uri"="s3://DOC-EXAMPLE-BUCKET/my-clm-tuning-data/", "DataAccessRoleArn": "arn:aws:iam::111122223333:role/ExampleRole" }, "LanguageCode": "en-US" }

這個範例會使用建AWS SDK for Python (Boto3)立 CLM,使用建語言模型方法。如需詳細資訊,請參閱 CreateLanguageModelLanguageModel

如需使用 AWS SDK 的其他範例,包括特定功能、案例和跨服務範例,請參閱本章。使用 Amazon Transcribe 的程式碼範例 AWS SDKs

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://DOC-EXAMPLE-BUCKET/my-clm-training-data/', 'TuningDataS3Uri':'s3://DOC-EXAMPLE-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)

更新您的自訂語言模型

Amazon Transcribe不斷更新可用於自訂語言模型的基礎模型。為了從這些更新中受益,我們建議每 6 到 12 個月訓練一次新的自訂語言模型。

若要查看您的自訂語言模型是否使用最新的基礎模型,DescribeLanguageModel請使用AWS CLI或 AWS SDK 執行要求,然後在回應中尋找UpgradeAvailability欄位。

如果UpgradeAvailabilitytrue,則表示您的模型未執行最新版本的基礎模型。若要在自訂語言模型中使用最新的基礎模型,您必須建立新的自訂語言模型。自訂語言模型無法升級。