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

Android 示例

以下示例使用适用于 Amazon Polly 的 Android 开发工具包,借助从列表中选择的语音读取指定文本。

此处显示的代码涵盖主要任务,但不处理错误。有关完整代码,请参阅适用于 Android 的 AWS 开发工具包的 Amazon Polly 演示

初始化

// Cognito pool ID. Pool needs to be unauthenticated pool with // Amazon Polly permissions. String COGNITO_POOL_ID = "YourCognitoIdentityPoolId"; // Region of Amazon Polly. Regions MY_REGION = Regions.US_EAST_1;   // Initialize the Amazon Cognito credentials provider. CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(         getApplicationContext(),         COGNITO_POOL_ID,         MY_REGION ); // Create a client that supports generation of presigned URLs. AmazonPollyPresigningClient client = new AmazonPollyPresigningClient(credentialsProvider);

获取可用语音的列表

// Create describe voices request. DescribeVoicesRequest describeVoicesRequest = new DescribeVoicesRequest(); // Synchronously ask Amazon Polly to describe available TTS voices. DescribeVoicesResult describeVoicesResult = client.describeVoices(describeVoicesRequest); List<Voice> voices = describeVoicesResult.getVoices();

获取音频流的 URL

// Create speech synthesis request. SynthesizeSpeechPresignRequest synthesizeSpeechPresignRequest =         new SynthesizeSpeechPresignRequest()         // Set the text to synthesize.         .withText("Hello world!")         // Select voice for synthesis.         .withVoiceId(voices.get(0).getId()) // "Joanna"         // Set format to MP3.         .withOutputFormat(OutputFormat.Mp3); // Get the presigned URL for synthesized speech audio stream. URL presignedSynthesizeSpeechUrl =         client.getPresignedSynthesizeSpeechUrl(synthesizeSpeechPresignRequest);

播放合成的语音

// Use MediaPlayer: https://developer.android.com/guide/topics/media/mediaplayer.html // Create a media player to play the synthesized audio stream. MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try {     // Set media player's data source to previously obtained URL.     mediaPlayer.setDataSource(presignedSynthesizeSpeechUrl.toString()); } catch (IOException e) {     Log.e(TAG, "Unable to set data source for the media player! " + e.getMessage()); } // Prepare the MediaPlayer asynchronously (since the data source is a network stream). mediaPlayer.prepareAsync(); // Set the callback to start the MediaPlayer when it's prepared. mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {     @Override     public void onPrepared(MediaPlayer mp) {         mp.start();     } }); // Set the callback to release the MediaPlayer after playback is completed. mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.release(); } });