Pepper から WebAPI にアクセス、バイナリーデータを受け取り、その結果を利用したいことありますよね。一つ試してみました。 AITalk WebAPI(http://www.ai-j.jp/webapi) がクラウドで合成した音声ファイルをローカルに保存、再生します。
Python ボックスを新規に作り、onStart 入力にこんな感じのコードを入れました。
def onInput_onStart(self, p):
import requests
url = self.getParameter("WebAPI URL")
data = {
'username':self.getParameter("username"),
'password':self.getParameter("password"),
'text':str(p),
'speaker_id':'','speaker_name':'','volume':'1.0','speed':'1.0','pitch':'1.0','range':'1.0','ext':'ogg'}
req = requests.post(url, params = data)
appId = self.packageUid()
dataPath = qi.path.userWritableDataPath(appId, "aitalk.ogg")
f = open(dataPath, 'w')
f.write(req.content)
f.close()
self.onStopped(dataPath)
Python ボックスは、入力と出力をそれぞれ文字列型に変更しています。入力には喋らせるテキストを与えます。出力には保存されたファイルのパスが出力されます。
AITalk WebAPI を利用するためには専用の URL、ユーザー IDとパスワードが必要です。これらは Python ボックスのパラメータで与えるようにしています。
ID、パスワードならびに URL については AITalk より入手します。
http://www.ai-j.jp/webapi
サンプルを次に展開しました。
https://github.com/tkawata1025/pepper_aitalk_cloud
サンプルは、わたし個人が試したテストコードとご理解ください。あらゆる環境の動作保障をしているわけではありません、、
AITalk に限らず Web API から返されるバイナリーデータの利用方法の一例として活用いただければ幸いです。