StartSpeechSynthesisTask - Amazon Polly

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

StartSpeechSynthesisTask

Contoh kode Java berikut menunjukkan cara menggunakan aplikasi berbasis Java untuk mensintesis pidato panjang (hingga 100.000 karakter yang ditagih) dan menyimpannya langsung di bucket Amazon S3.

Untuk informasi selengkapnya, lihat referensi untuk StartSpeechSynthesisTaskAPI.

/* 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(); } }