Amazon Polly
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

创建长音频文件 (CLI)

Amazon Polly 异步合成 功能使用三个 SpeechSynthesisTask API 来处理大量文本:

  • 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 示例针对 Linux、Unix 和 macOS 编排了格式。对于 Windows,请将每行末尾处的反斜杠 (\) 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,稍后更改为 completedfailed。如果任务失败,则在调用 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/"