StartSpeechSynthesisTask - Amazon Polly
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

StartSpeechSynthesisTask

The following Java code sample show how to use Java-based applications to synthesize a long speech (up to 100,000 billed characters) and store it directly in an Amazon S3 bucket.

For more information, see the reference for StartSpeechSynthesisTask API.

/* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ package com.example.polly; import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.polly.PollyClient; import software.amazon.awssdk.services.polly.model.*; import java.time.Duration; import org.awaitility.Durations; import org.awaitility.Awaitility; /** * Before running this Java V2 code example, set up your development environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class StartSpeechSynthesisTaskSample { public static void main(String args[]) { PollyClient polly = PollyClient.builder() .region(Region.US_WEST_2) .credentialsProvider(ProfileCredentialsProvider.create()) .build(); startSpeechSynthesisTask(polly) ; polly.close(); } private static final String PLAIN_TEXT = "This is a sample text to be synthesized."; private static final String OUTPUT_FORMAT_MP3 = OutputFormat.MP3.toString(); private static final String OUTPUT_BUCKET = "synth-books-buckets"; private static final String SNS_TOPIC_ARN = "arn:aws:sns:eu-west-2:123456789012:synthesize-finish-topic"; private static final Duration SYNTHESIS_TASK_POLL_INTERVAL = Durations.FIVE_SECONDS; private static final Duration SYNTHESIS_TASK_POLL_DELAY = Durations.TEN_SECONDS; private static final Duration SYNTHESIS_TASK_TIMEOUT = Durations.FIVE_MINUTES; public static void startSpeechSynthesisTask(PollyClient client) { try { StartSpeechSynthesisTaskRequest startSpeechSynthesisTaskRequest = StartSpeechSynthesisTaskRequest.builder() .outputFormat(OUTPUT_FORMAT_MP3).text(PLAIN_TEXT).textType(TextType.TEXT) .voiceId(VoiceId.AMY).outputS3BucketName(OUTPUT_BUCKET).snsTopicArn(SNS_TOPIC_ARN) .engine("neural").build(); StartSpeechSynthesisTaskResponse startSpeechSynthesisTaskResponse = client.startSpeechSynthesisTask(startSpeechSynthesisTaskRequest); String taskId = startSpeechSynthesisTaskResponse.synthesisTask().taskId(); Awaitility.await().with() .pollInterval(SYNTHESIS_TASK_POLL_INTERVAL) .pollDelay(SYNTHESIS_TASK_POLL_DELAY) .atMost(SYNTHESIS_TASK_TIMEOUT) .until( () -> getSynthesisTaskStatus(client, taskId).equals(TaskStatus.COMPLETED.toString()) ); } catch (PollyException e) { System.err.println("Exception caught: " + e); System.exit(1); } } private static String getSynthesisTaskStatus(PollyClient client, String taskId) { GetSpeechSynthesisTaskRequest getSpeechSynthesisTaskRequest = GetSpeechSynthesisTaskRequest.builder() .taskId(taskId).build(); GetSpeechSynthesisTaskResponse result = client.getSpeechSynthesisTask(getSpeechSynthesisTaskRequest); return result.synthesisTask().taskStatusAsString(); } }
package com.amazonaws.parrot.service.tests.speech.task; import com.amazonaws.parrot.service.tests.AbstractParrotServiceTest; import com.amazonaws.services.polly.AmazonPolly; import com.amazonaws.services.polly.model.*; import org.awaitility.Duration; import java.util.concurrent.TimeUnit; import static org.awaitility.Awaitility.await; public class StartSpeechSynthesisTaskSample { private static final int SYNTHESIS_TASK_TIMEOUT_SECONDS = 300; private static final AmazonPolly AMAZON_POLLY_CLIENT = AmazonPollyClientBuilder.defaultClient(); private static final String PLAIN_TEXT = "This is a sample text to be synthesized."; private static final String OUTPUT_FORMAT_MP3 = OutputFormat.Mp3.toString(); private static final String OUTPUT_BUCKET = "synth-books-buckets"; private static final String SNS_TOPIC_ARN = "arn:aws:sns:eu-west-2:123456789012:synthesize-finish-topic"; private static final Duration SYNTHESIS_TASK_POLL_INTERVAL = Duration.FIVE_SECONDS; private static final Duration SYNTHESIS_TASK_POLL_DELAY = Duration.TEN_SECONDS; public static void main(String... args) { StartSpeechSynthesisTaskRequest request = new StartSpeechSynthesisTaskRequest() .withOutputFormat(OUTPUT_FORMAT_MP3) .withText(PLAIN_TEXT) .withTextType(TextType.Text) .withVoiceId(VoiceId.Amy) .withOutputS3BucketName(OUTPUT_BUCKET) .withSnsTopicArn(SNS_TOPIC_ARN) .withEngine("neural"); StartSpeechSynthesisTaskResult result = AMAZON_POLLY_CLIENT.startSpeechSynthesisTask(request); String taskId = result.getSynthesisTask().getTaskId(); await().with() .pollInterval(SYNTHESIS_TASK_POLL_INTERVAL) .pollDelay(SYNTHESIS_TASK_POLL_DELAY) .atMost(SYNTHESIS_TASK_TIMEOUT_SECONDS, TimeUnit.SECONDS) .until( () -> getSynthesisTaskStatus(taskId).equals(TaskStatus.Completed.toString()) ); } private static SynthesisTask getSynthesisTask(String taskId) { GetSpeechSynthesisTaskRequest getSpeechSynthesisTaskRequest = new GetSpeechSynthesisTaskRequest() .withTaskId(taskId); GetSpeechSynthesisTaskResult result =AMAZON_POLLY_CLIENT.getSpeechSynthesisTask(getSpeechSynthesisTaskRequest); return result.getSynthesisTask(); } private static String getSynthesisTaskStatus(String taskId) { GetSpeechSynthesisTaskRequest getSpeechSynthesisTaskRequest = new GetSpeechSynthesisTaskRequest() .withTaskId(taskId); GetSpeechSynthesisTaskResult result =AMAZON_POLLY_CLIENT.getSpeechSynthesisTask(getSpeechSynthesisTaskRequest); return result.getSynthesisTask().getTaskStatus(); } }