はじめまして!
12/1より中途で入社しました花島君俊と申します。
よろしくお願いします。
初ブログはAndroidでAmazon Pollyを使ってみようです。
音声出しちゃいます!!。音声でも自己紹介しています。
さて、Amazon Pollyの導入方法です。(公式サイトベースです。)
全部で5ステップです。あっというまに音声出ちゃいます。
1.AWSコンソールのCognitoのフェデレーテッドアイデンティティの管理でプールIDとロールを作成。
https://ap-northeast-1.console.aws.amazon.com/cognito/create/
※認証されていない ID に対してアクセスを有効にするをチェックし作成。他はデフォルトでOK
2.AWSコンソールのIMAのロールで作成したロールAmazonPollyFullAccessをアタッチする。
https://console.aws.amazon.com/iam/home?region=ap-northeast-1#/roles
ここからAndroidのソースです。
3.HTTP通信するのでAndroidManifest.xmlにInternetアクセスを許可
<uses-permission android:name="android.permission.INTERNET" />
4.Amazon pollyのライブラリをmoduleのbuild.gradleに追加
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' compile'com.amazonaws:aws-android-sdk-polly:2.3.4' }
5.アクテビティで別スレッドで作成
必要な所のみ抜粋。
new Thread(new Runnable() { @Override public void run() { //フェデレーテッドアイデンティティのIDを設定 String COGNITO_POOL_ID = "ap-northeast-1:xxxxxxx-xxxx-xxxx-xxxx-xxxxx"; // リージョンを東京に設定 Regions MY_REGION = Regions.AP_NORTHEAST_1; //Amazon Cognito credentials provider生成 CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicationContext(), COGNITO_POOL_ID, MY_REGION ); //AmazonPollyクライアントオブジェクト生成 AmazonPollyPresigningClient client = new AmazonPollyPresigningClient(credentialsProvider); //スピーチテキスト String speechText = "初めまして12月1日に中途で入社した花島です。よろしくお願いいたします。"; //日本語で男性モード String jpMaleVoiceId = "Takumi"; //音声生成リクエスト SynthesizeSpeechPresignRequest synthesizeSpeechPresignRequest = new SynthesizeSpeechPresignRequest() // Set the text to synthesize. .withText(speechText) // Select voice for synthesis. .withVoiceId(jpMaleVoiceId) // Set format to MP3. .withOutputFormat(OutputFormat.Mp3); URL presignedSynthesizeSpeechUrl = client.getPresignedSynthesizeSpeechUrl(synthesizeSpeechPresignRequest); // メディアプレイヤー設定 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("mediaError", "Unable to set data source for the media player! " + e.getMessage()); } //再生 mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start(); } }); mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.release(); } }); } }).start();
公式サイト
http://docs.aws.amazon.com/ja_jp/polly/latest/dg/examples-android.html
https://github.com/awslabs/aws-sdk-android-samples/tree/master/PollyDemo