2010年11月8日月曜日

Android端末による自動通訳を一行のPythonコードで実装する

このブログ記事をはてなブックマークに追加

最近このブログではAndroidのSL4Aネタが多いのだけど、それだけ遊べるのだから仕方がない。SL4AのPythonを使えば実質一行で自動通訳プログラムを作ることもできる。日本語で喋った文章が翻訳されて英語の音声で返ってくる。

import android,urllib,urllib2,simplejson;droid=android.Android();droid.ttsSpeak(simplejson.loads(urllib2.urlopen('http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s'%(urllib.quote(droid.recognizeSpeech().result.encode('utf-8')),'ja','en')).read())['responseData']['translatedText'])

このプログラムでは日本語を英語に変換するが、コード中の en を変更すれば別の外国語に通訳することもできる。例えば fr に変更すればフランス語に通訳される。ただし、通訳した外国語はGoogleによる翻訳の精度に依存するので、実用的に用いるにはもう少し精度が良くなって欲しいところだ。それでもこれだけ簡単に自動通訳プログラムを作れるのだからAndroidとSL4Aは大したものだと思う。

以下にもう少し分かりやすいコードを示しておく。ついでに翻訳結果をダイアログに表示するように変更してある。

translator.py

# -*- coding: utf-8 -*- import android,urllib,urllib2,simplejson def translator(text,from_lang,to_lang): url='http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s'%(urllib.quote(text.encode('utf-8')),from_lang,to_lang) data=simplejson.loads(urllib2.urlopen(url).read()) return data['responseData']['translatedText'] droid=android.Android() text=droid.recognizeSpeech().result t=translator(text,'ja','en') droid.ttsSpeak(t) droid.dialogCreateAlert(u'翻訳結果',u"%s\n\n%s"%(text,t)) droid.dialogShow()

0 コメント: