

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

# 建立長時間音訊檔案
<a name="longer-console"></a>

您可以使用 Amazon Polly 主控台，透過與 搭配使用的相同功能，使用非同步合成來建立長語音 AWS CLI。如同其他所有的合成作業，這項作業也是在 **Text-to-Speech (文字轉語音)** 標籤完成。

------
#### [ Console ]

其他的非同步合成功能，也可透過主控台使用。**S3 synthesis tasks (S3 合成作業)** 標籤反映 `ListSpeechSynthesisTasks` 功能，會顯示儲存到 S3 儲存貯體的所有作業，並可讓您根據需要進行篩選。按一下特定的單一作業來顯示其詳細資訊 (代表 `GetSpeechSynthesisTask` 功能)。

**使用 Amazon Polly 主控台合成大型文字**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/polly/](https://console.aws.amazon.com/polly/) 的 Amazon Polly 主控台。

1. 選擇 **Text-to-Speech** (文字轉換語音) 索引標籤。如果適當，請選取**長表單**做為引擎。

1. 在開啟或關閉 **SSML** 的情況下，將文字輸入或貼到輸入方塊中。

1. 為您的文字選擇語言、區域和語音。

1. 選擇**儲存至 S3**。
**注意**  
如果文字長度超過即時`SynthesizeSpeech`操作的 3，000 個字元限制，**則下載**和**接聽**選項都會呈現灰色。

1. 主控台會開啟表單，讓您可以選擇要存放輸出檔案的位置。

   1. 填寫目的地 Amazon S3 儲存貯體的名稱。

   1. 或者，您可以填寫輸出的前綴金鑰。
**注意**  
輸出 S3 儲存貯體必須可以寫入。

   1. 如果您想要在合成任務完成時收到通知，請提供選用的 SNS 主題識別符。
**注意**  
SNS 必須開放給目前的主控台使用者，來發佈訊息，才能使用此選項。如需詳細資訊，請參閱 [Amazon Simple Notification Service (SNS)](https://aws.amazon.com/sns/)

   1. 選擇**儲存至 S3**。

**擷取語音合成作業的相關資訊**

1. 在主控台中，選擇 **S3 Synthesis Tasks (S3 合成作業)** 標籤。

1. 作業會依日期順序顯示。若要依狀態篩選任務，請選擇**所有狀態**，然後選擇要使用的狀態。

1. 若要查看特定作業的詳細資訊，請選擇連結的 **Task ID (作業 ID)**。

------
#### [ AWS CLI ]

Amazon Polly *非同步合成*功能使用三個 `SpeechSynthesisTask` APIs來處理大量文字：
+ `StartSpeechSynthesisTask`：開始執行新的合成作業。
+ `GetSpeechSynthesisTask`：針對先前提交的合成作業傳回詳細資訊。
+ `ListSpeechSynthesisTasks`：列出所有已提交的合成作業。

**合成大量的文字 (`StartSpeechSynthesisTask`)**

如果您想要建立一個音訊檔案，其大小超過您可以使用即時 `SynthesizeSpeech` 所建立的檔案時，請使用 `StartSpeechSynthesisTask` 作業。除了`SynthesizeSpeech`操作所需的引數之外， `StartSpeechSynthesisTask`還需要 Amazon S3 儲存貯體的名稱。您也可使用其他兩種選用的引數：輸出檔案的金鑰前綴，和 SNS 主題的 ARN (如果想要收到關於作業狀態的通知)。
+ `OutputS3BucketName`：應上傳合成的 Amazon S3 儲存貯體名稱。此儲存貯體應與 Amazon Polly 服務位於相同的區域。此外，用於進行呼叫的 IAM 使用者應有權存取儲存貯體。[必要] 
+ `OutputS3KeyPrefix`：輸出檔案的金鑰前綴。如果您想要將輸出語音檔案儲存在儲存貯體中的自訂目錄式索引鍵中，請使用此參數。[選用] 
+ `SnsTopicArn`：如果您想要接收任務狀態的通知，要使用的 SNS 主題 ARN。此 SNS 主題應與 Amazon Polly 服務位於相同的區域。此外，用於進行呼叫的 IAM 使用者應有權存取 主題。[選用] 

例如，下列範例可用來在美國東部 （俄亥俄） 區域執行 `start-speech-synthesis-task` AWS CLI 命令：

下列 AWS CLI 範例已針對 Unix、Linux 和 macOS 格式化。對於 Windows，將每一行結尾的反斜線 (\$1) Unix 接續字元取代為插入符號 (^)，並在輸入文字周圍使用完整引號 (") 取代內部標籤的單引號 (')。

```
aws polly start-speech-synthesis-task \
  --region us-east-2 \
  --endpoint-url "https://polly.us-east-2.amazonaws.com/" \
  --output-format mp3 \
  --output-s3-bucket-name your-bucket-name \
  --output-s3-key-prefix optional/prefix/path/file \
  --voice-id Joanna \
  --text file://text_file.txt
```

這將會產生類似於下列的回應：

```
"SynthesisTask": 
{
     "OutputFormat": "mp3",
     "OutputUri": "https://s3.us-east-2.amazonaws.com/your-bucket-name/optional/prefix/path/file.<task_id>.mp3",
     "TextType": "text",
     "CreationTime": [..],
     "RequestCharacters": [..],
     "TaskStatus": "scheduled",
     "TaskId": [task_id],
     "VoiceId": "Joanna"
 }
```

`start-speech-synthesis-task` 作業會傳回幾個新的欄位：
+ `OutputUri`：輸出語音檔案的所在位置。
+ `TaskId`：Amazon Polly 產生的語音合成任務的唯一識別符。
+ `CreationTime`：作業最初提交時的時間戳記。
+ `RequestCharacters`：作業中的應計費字元數目。
+ `TaskStatus`：針對已提交作業的狀態，提供相關的資訊。

  當作業提交時，初始狀態會顯示為 `scheduled`。當 Amazon Polly 開始處理任務時，狀態會變更為 `inProgress` ，稍後會變更為 `completed`或 `failed`。在呼叫 GetSpeechSynthesisTask 或 ListSpeechSynthesisTasks 操作時，如果作業失敗，會傳回錯誤訊息。

任務完成後，語音檔案將會出現於 `OutputUri` 中所指定的位置，以提供使用。

**擷取語音合成作業的相關資訊**

您可以利用 `GetSpeechSynthesisTask` 作業，來取得作業的相關資訊，例如錯誤和狀態等。若要這麼做，您會需要由 `task-id` 所傳回的 `StartSpeechSynthesisTask`。

例如，下列範例可用來執行 `get-speech-synthesis-task` AWS CLI 命令：

```
aws polly get-speech-synthesis-task \
--region us-east-2 \
--endpoint-url "https:// polly.us-east-2.amazonaws.com/" \
--task-id task identifier
```

您也可以利用 `ListSpeechSynthesisTasks` 操作，來列出在目前區域中已執行所有語音合成作業的清單。

例如，下列範例可用來執行 `list-speech-synthesis-tasks` AWS CLI 命令：

```
aws polly list-speech-synthesis-tasks \
--region us-east-2 \
--endpoint-url "https:// polly.us-east-2.amazonaws.com/"
```

------