はじめまして!
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