

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

# 建立影片字幕
<a name="subtitles"></a>

Amazon Transcribe 支援 WebVTT (\$1.vtt) 和 SubRip (\$1.srt) 輸出，以用作影片字幕。您可以在設定批次影片轉錄作業時，選擇一或兩種檔案類型。使用字幕功能時，系統會產生您選擇的字幕檔案和一般的文字記錄檔案 (包含其他資訊)。字幕和轉錄檔案輸出到相同的目的地。

會在朗讀文字的同時顯示字幕，並維持可見，直到自然暫停或發言者完成通話為止。請注意，如果您在轉錄請求中啟用字幕，且您的音訊不包含語音，則不會建立字幕檔案。

**重要**  
Amazon Transcribe 使用 的預設開始索引`0`作為字幕輸出，這與更廣泛使用的 值不同`1`。如果您需要 的開始索引`1`，您可以使用 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Subtitles.html#transcribe-Type-Subtitles-OutputStartIndex](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Subtitles.html#transcribe-Type-Subtitles-OutputStartIndex) 參數在 AWS 管理主控台 或 API 請求中指定此索引。

使用不正確的開始索引可能會導致與其他服務的相容性錯誤，因此在建立字幕前，請務必確認您需要的開始索引。如果您不確定要使用的值，我們建議您選擇 `1`。請參閱 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Subtitles.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Subtitles.html)，了解詳細資訊。

支援字幕的功能：
+ **內容修訂** — 任何修訂後的內容會在字幕和一般文字記錄輸出檔案中顯示為「`PII`」。音訊不會改變。
+ **詞彙篩選器** — 字幕檔案是從轉錄檔案產生，因此您在標準轉錄輸出中篩選的任何單字也會在字幕篩選。篩選後的內容會在您的文字記錄和字幕檔案中顯示為空格或 `***`。音訊不會改變。
+ **發言者分段標記** — 如果指定的字幕區段有多個發言者，則使用破折號以區分每個發言者。這同時適用於 WebVTT 和 SubRip 格式；例如：
  + --發言者 1 說出的文字
  + --發言者 2 說出的文字

字幕檔案會存放在與轉錄輸出相同的 Amazon S3 位置。

如需建立字幕的影片逐步說明，請參閱：

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/PZdfXGggcH4/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/PZdfXGggcH4)


## 產生字幕檔案
<a name="subtitles-how-to"></a>

您可以使用 **AWS 管理主控台**、**AWS CLI** 或 **AWS SDK** 建立字幕檔案；請參閱下列範例：

### AWS 管理主控台
<a name="subtitles-console"></a>

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

1. 在導覽窗格中，選擇**轉錄作業**，然後選擇**建立作業**(右上角)。這會開啟**指定作業詳細資訊‭**頁面。字幕選項位於**輸出資料**面板。

1. 選擇字幕檔案所需的格式，然後為開始索引選擇值。請注意， Amazon Transcribe 預設值為 `0`，但使用範圍`1`更為廣泛。如果您不確定要使用的值，我們建議您選擇 `1`，因為這樣可能會改善與其他服務的相容性。  
![\[Amazon Transcribe 主控台螢幕擷取畫面：「指定任務詳細資訊」頁面上的「輸出資料」窗格。\]](http://docs.aws.amazon.com/zh_tw/transcribe/latest/dg/images/subtitles-startindex.png)

1. 填入您要包含在**指定作業詳細資訊‭**頁面上的任何其他欄位，然後選擇**下一步**。這會引導您前往**設定工作 - *選擇性*頁面**。

1. 選擇**建立作業**以執行轉錄作業。

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

此範例使用 [start-transcription-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/start-transcription-job.html) 指令和 `Subtitles` 參數。如需詳細資訊，請參閱 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Subtitles.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Subtitles.html)。

```
aws transcribe start-transcription-job \
--region us-west-2 \
--transcription-job-name my-first-transcription-job \
--media MediaFileUri=s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac \
--output-bucket-name amzn-s3-demo-bucket \
--output-key my-output-files/ \
--language-code en-US \
--subtitles Formats=vtt,srt,OutputStartIndex=1
```

這是使用 [start-transcription-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/start-transcription-job.html) 指令的另一個範例，以及新增字幕到工作的請求內文。

```
aws transcribe start-transcription-job \
--region us-west-2 \
--cli-input-json file://my-first-subtitle-job.json
```

檔案 *my-first-subtitle-job.json* 包含以下請求內文。

```
{
  "TranscriptionJobName": "my-first-transcription-job",
  "Media": {
        "MediaFileUri": "s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac"
  },
  "OutputBucketName": "amzn-s3-demo-bucket",
  "OutputKey": "my-output-files/", 
  "LanguageCode": "en-US",
  "Subtitles": {
        "Formats": [
            "vtt","srt"
        ],             
        "OutputStartIndex": 1
   }
}
```

### 適用於 Python (Boto3) 的 AWS SDK
<a name="subtitles-python-batch"></a>

此範例使用 適用於 Python (Boto3) 的 AWS SDK ，使用 [start\$1transcription\$1job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/transcribe.html#TranscribeService.Client.start_transcription_job) 方法的`Subtitles`引數來新增字幕。如需詳細資訊，請參閱 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Subtitles.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_Subtitles.html)。

如需使用 AWS SDKs 的其他範例，包括功能特定、案例和跨服務範例，請參閱 [Amazon Transcribe AWS SDKs的程式碼範例](service_code_examples.md)章節。

```
from __future__ import print_function
import time
import boto3
transcribe = boto3.client('transcribe', 'us-west-2')
job_name = "my-first-transcription-job"
job_uri = "s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac"
transcribe.start_transcription_job(
    TranscriptionJobName = job_name,
    Media = {
        'MediaFileUri': job_uri
    },
    OutputBucketName = 'amzn-s3-demo-bucket',
    OutputKey = 'my-output-files/', 
    LanguageCode = 'en-US', 
    Subtitles = {
        'Formats': [
            'vtt','srt'
        ],
        'OutputStartIndex': 1 
   }
)

while True:
    status = transcribe.get_transcription_job(TranscriptionJobName = job_name)
    if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']:
        break
    print("Not ready yet...")
    time.sleep(5)
print(status)
```