要使用Amazon Polly安排任务而不是完成任务,您可以使用以下代码示例:
import boto3
import time
def create_polly_task(input_text, output_format, output_bucket, output_key):
# 创建Polly客户端
polly_client = boto3.client('polly')
# 创建任务
response = polly_client.start_speech_synthesis_task(
OutputFormat=output_format,
OutputS3BucketName=output_bucket,
OutputS3KeyPrefix=output_key,
Text=input_text,
VoiceId='Joanna' # 使用Joanna声音进行合成
)
# 获取任务ID
task_id = response['SynthesisTask']['TaskId']
return task_id
def check_polly_task_status(task_id):
# 创建Polly客户端
polly_client = boto3.client('polly')
# 获取任务状态
response = polly_client.get_speech_synthesis_task(TaskId=task_id)
# 获取任务状态值
task_status = response['SynthesisTask']['TaskStatus']
return task_status
# 示例用法
input_text = "Hello, this is a test."
output_format = "mp3"
output_bucket = "your-output-bucket"
output_key = "test/output"
# 创建Polly任务
task_id = create_polly_task(input_text, output_format, output_bucket, output_key)
print("任务已创建,任务ID:", task_id)
# 检查任务状态
task_status = check_polly_task_status(task_id)
print("任务状态:", task_status)
# 等待任务完成
while task_status not in ['completed', 'failed', 'cancelled']:
print("等待任务完成...")
time.sleep(10) # 等待10秒
task_status = check_polly_task_status(task_id)
# 检查最终任务状态
task_status = check_polly_task_status(task_id)
print("最终任务状态:", task_status)
在上述代码中,create_polly_task函数用于创建Polly任务,并返回任务ID。check_polly_task_status函数用于检查任务状态。示例用法中,我们创建了一个Polly任务并获取任务的初始状态,然后使用循环和延迟来等待任务的完成。最后,我们再次检查任务状态来获取最终结果。
请注意,您需要替换示例代码中的output_bucket为您自己的输出存储桶名称。另外,还可以根据需要调整其他参数,例如input_text、output_format和output_key。