boto3とは
AWS (Amazon Web Services) を Python から操作するためのライブラリです。
これを使えば、raspberry Piの開発にクラウドシステム(AWS)を取り入れることができ、一気に世界が広がります。しかも、型を覚えてしまえばとても簡単に使えるのです。備忘録兼ねて型を記事にしておきます。
インストール
まずはboto3のインストール
$sudo pip install boto3
次にaws cliもインストール
$sudo pip install awscli
下のサンプルコードテストの為にmpg321もインストールしておきます。boto3使用だけなら不要です。
$ sudo apt-get install mpg321
config設定
$ aws configure
AWS Access Key ID : アクセスキー
AWS Secret Access Key [None]: シークレットアクセスキー
Default region name [None]: ap-northeast-1(使用するリージョン)
Default output format [None]: json
アクセスキーやシークレットアクセスキーは事前に取得してください。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_access-keys.html
初期設定はこんなもんです。とても簡単です!
サンプルコード(S3)
試しに、S3の音声ファイルを入れてそれを再生してみましょう。
まずはS3に適当なバケットを作成して、その中に好きな音声ファイルを入れてください。サンプルはmp3ファイルを入れて、それをD/Lしてmpg321で再生するサンプルです。
#!/bin/env python
# -*- coding: utf-8 -*-
import subprocess
import boto3
s3_resource = boto3.resource('s3')
bucket_name = '***(バケット名)'
bucket = s3_resource.Bucket(bucket_name)
bucket.download_file('test/test.mp3','play.mp3')
subprocess.run(['mpg321', '-q', 'play.mp3'])
以上で、音声ファイルが再生されると思います。
もし再生されない場合は、音声出力設定(ALSA設定)を見直してくてください。
サンプルコード(Polly)
もう一つ試しにpollyに文章を渡してそれを音声ファイルに変換させて、それを再生させてみましょう。
#!/bin/env python
# -*- coding: utf-8 -*-
import subprocess
import boto3
polly_client = boto3.client('polly')
while True:
print('Please write free sentences.')
response = polly_client.synthesize_speech(VoiceId='Mizuki',
OutputFormat='mp3',
Text=input())
with open('play.mp3', 'wb') as f:
f.write(response['AudioStream'].read())
subprocess.run(['mpg321', '-q', 'play.mp3'])
以上で、入力した文章が読み上げられるはずです。いろんな文章を連続で試したかったのでwhileループで記載していますが、面倒ならwhile分は削除してもOKです。
現状のPollyサービスでは日本語音声はMizuki ,Takumiの2パターンに限られますが、SoX(SOund eXchange)などのライブラリを使えば、声色も色々と変えることができます。
また、Amazon Transcribeと組み合わせれば、翻訳して英語で発音してくれるなんていう仕組みも簡単に実装できてしまいます。
まとめ
近年のawsのサービス充実度は凄まじいです。これを使いこなすだけで、誰でも簡単にクラウドを活用したモノづくりができるようになるのでしょうね。
boto3は、raspberry pi × aws の組み合わせにおいて必須ライブラリと思いますので、是非使いこなしちゃいましょう。