
Python GUIを使ってWatson APIを使用したペッパー用コントローラーの作成方法
こんにちは。
AI coordinatorの清水秀樹です。
Watson APIの「LanguageTranslator」を使用したペッパー用コントローラーの紹介です。

英訳ボタンを押下すると、入力した日本語を英訳してくれます。

開発にはPythonを使用しています。
Watson APIをPythonで開発したみたい方は是非参考にしてみて下さい。
ソースコードのダウンロードはこちら → LanguageTranslator.zip
コレグラフからWatson APIを使用したい場合や、まだBluemixでWatson APIアプリ(LanguageTranslator)を作成していない方は以下の記事を参考にしてください。
開発環境の準備方法
Python SDKをインストールしていない方は、以下の記事を参考にインストールしてください。
Pepper用Python 2.7 SDK(WIN)セットアップ方法
Pepper用Python 2.7 SDK(MAC)セットアップ方法
Python SDK環境のセットアップができたら、次はBluemixからWatosn APIを使用できるようにするためのモジュールをインストールします。
ターミナルを起動し、以下のコマンドを入力してモジュールをインストールしましょう。
pip install requests
pip install --upgrade watson-developer-cloud
これでPythonからBluemixのWatson APIに接続できるようになりました。
ソースコードの説明
特に難しいことはしていません。
def __init__(self):でGUIを作成し、各関数でボタンを押下した時の振舞を定義しているだけです。
# -*- coding: utf-8 -*-
from Tkinter import*
from naoqi import ALProxy
import requests
from watson_developer_cloud import LanguageTranslatorV2 as LanguageTranslator
class language():
def __init__(self):
#ウインドウ定義
root = Tk()
root.option_add('*font', 'FixedSys 18')
root.option_add('*Button.background', 'green')
root.geometry("700x150")
root.title(u"Pepper Controller")
#IPアドレス取得テキストボックス & ボタン------------
Label(text=u'Pepper IP ⇒').place(x=25,y=10)
self.ip = Entry(width=15)
self.ip.place(x=130,y=10)
self.ip.insert(0,"localhost")
Label(text=u'ポート').place(x=260,y=10)
self.port = Entry(width=5)
self.port.place(x=315,y=10)
self.port.insert(0,49836)
Button(root,text = "接続",command=self.ip_btn).place(x=370,y=6)
#台詞用テキストボックス & ボタン--------------------
Label(text=u'台詞を入力').place(x=25,y=60)
self.say = Entry(width=50)
self.say.place(x=130,y=60)
self.say.insert(0,"私の名前はペッパーです")
Button(root,text = "話す",command=self.say_btn).place(x=550,y=55)
Button(root,text = "英訳",command=self.en_say_btn).place(x=610,y=55)
root.mainloop()
def ip_btn(self):
#ipアドレスを取得する
ip = self.ip.get()
port = int(self.port.get())
self.tts = ALProxy('ALTextToSpeech',ip,port)
self.motion = ALProxy("ALMotion", ip, port)
def say_btn(self):
#台詞の取得と実行
say = self.say.get()
self.tts.say(say.encode('utf8'))
def en_say_btn(self):
#英訳
say = self.say.get()
language_translator = LanguageTranslator(
username='資格情報のusername',password='資格情報のpassword')
translation = language_translator.translate(text=say,source='ja',target='en')
self.tts.say(str(translation))
language()
実行して、バーチャルPepperが英訳したら成功です。
実機では確認していませんので悪しからず。
それではまた。
LEAVE A REPLY