Amazon PollyをAWS CLIから使ってみる #reinvent
はじめに
Amazon Pollyのリリースについて、以下のブログでお知らせしました。
サービスリリースに合わせてAWS CLIもアップデートされています。Amazon PollyをAWS CLIから使ってみました。
やってみた
最新のAWS CLIのインストール
現時点でAmazon LinuxのyumリポジトリにあるAWS CLIはバージョンが古いです。
$ aws --version aws-cli/1.6.5 Python/2.6.9 Linux/4.1.13-19.30.amzn1.x86_64
そこで最新のAWS CLIのZipファイルを取得して展開します。
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" $ unzip awscli-bundle.zip $ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
確認。バージョンが1.11.23になっています。
$ /usr/local/aws/bin/aws --version aws-cli/1.11.23 Python/2.6.9 Linux/4.1.13-19.30.amzn1.x86_64 botocore/1.4.80
aws configureでAmazon Pollyが使えるリージョンを指定しておきます。
$ aws configure AWS Access Key ID [********************]: AWS Secret Access Key [********************]: Default region name [us-east-1]: Default output format [None]:
describe-voices
ボイスの種類を取得します。
$ /usr/local/aws/bin/aws polly describe-voices { "Voices": [ { "Gender": "Female", "Name": "Joanna", "LanguageName": "US English", "Id": "Joanna", "LanguageCode": "en-US" }, { "Gender": "Female", "Name": "Mizuki", "LanguageName": "Japanese", "Id": "Mizuki", "LanguageCode": "ja-JP" }, <...snip...>
list-lexicons
発音辞書であるlexiconをリスト取得します。事前に登録しておいた、smokeymonkeyというlexiconが表示されています。
$ /usr/local/aws/bin/aws polly list-lexicons { "Lexicons": [ { "Attributes": { "LanguageCode": "en-US", "LastModified": 1480547800.2980001, "Alphabet": "ipa", "LexemesCount": 1, "LexiconArn": "arn:aws:polly:us-east-1:XXXXXXXXXXXX:lexicon/smokeymonkey", "Size": 481 }, "Name": "smokeymonkey" } ] }
get-lexicon
lexiconの詳細情報を取得します。
$ /usr/local/aws/bin/aws polly get-lexicon --name smokeymonkey { "Lexicon": { "Content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<lexicon version=\"1.0\" \n xmlns=\"http://www.w3.org/2005/01/pronunciation-lexicon\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n xsi:schemaLocation=\"http://www.w3.org/2005/01/pronunciation-lexicon \n http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd\"\n alphabet=\"ipa\" \n xml:lang=\"en-US\">\n <lexeme>\n <grapheme>sasaki</grapheme>\n <alias>smokeymonkey</alias>\n </lexeme>\n</lexicon>", "Name": "smokeymonkey" }, "LexiconAttributes": { "LanguageCode": "en-US", "LastModified": 1480547800.2980001, "Alphabet": "ipa", "LexemesCount": 1, "LexiconArn": "arn:aws:polly:us-east-1:XXXXXXXXXXXX:lexicon/smokeymonkey", "Size": 481 } }
put-lexicon
新たにlexiconを登録します。指定したファイルをPUTします。
$ /usr/local/aws/bin/aws polly put-lexicon --name test --content file://test.xml
確認。testというlexiconが増えています。
$ /usr/local/aws/bin/aws polly list-lexicons { "Lexicons": [ { "Attributes": { "LanguageCode": "en-US", "LastModified": 1480547800.2980001, "Alphabet": "ipa", "LexemesCount": 1, "LexiconArn": "arn:aws:polly:us-east-1:XXXXXXXXXXXX:lexicon/smokeymonkey", "Size": 481 }, "Name": "smokeymonkey" }, { "Attributes": { "LanguageCode": "en-US", "LastModified": 1480552210.5350001, "Alphabet": "ipa", "LexemesCount": 1, "LexiconArn": "arn:aws:polly:us-east-1:XXXXXXXXXXXX:lexicon/test", "Size": 486 }, "Name": "test" } ] }
delete-lexicon
lexiconを削除します。
$ /usr/local/aws/bin/aws polly delete-lexicon --name test
確認。testというlexiconが無くなっています。
$ /usr/local/aws/bin/aws polly list-lexicons { "Lexicons": [ { "Attributes": { "LanguageCode": "en-US", "LastModified": 1480547800.2980001, "Alphabet": "ipa", "LexemesCount": 1, "LexiconArn": "arn:aws:polly:us-east-1:XXXXXXXXXXXX:lexicon/smokeymonkey", "Size": 481 }, "Name": "smokeymonkey" } ] }
synthesize-speech
メインで使う機能ですね。文章読み上げです。ここではoutputをmp3とし、mp3ファイルで保存しています。
$ /usr/local/aws/bin/aws polly synthesize-speech --text "Classmethod is blog company." --voice-id Joanna --output-format mp3 speech.mp3 { "ContentType": "audio/mpeg", "RequestCharacters": "27" }
保存されたファイルの確認。ちゃんと保存されています。
$ ls -alF speech.mp3 -rw-rw-r-- 1 ec2-user ec2-user 11957 12月 1 09:32 speech.mp3
さいごに
次はSDKにもチャレンジしたいです!