RoBoHoN

RoBoHoNに 英語のスピーキングの宿題を手伝ってもらう

More than 1 year has passed since last update.

先日、モバイル型ロボット電話 RoBoHoN が発売一周年を迎えて、英語・中国語対応をふくむ新SDKが リリース されました。

party_cracker.png

一方、私ごとですが、先日、こどもの習い事の英語のレベルがめでたく上がりました。

ともない、

「スピーキングのセクション、おうちでも 3回 くりかえして読んできてくださいね!(先生の笑顔)」

という、親子どもどもに ”回数をこなすだけでおざなり” の未来がみえる感じになりました。

textbook_eigo.png

そこで、今回は、英語が判る・話せるようになった、家族の一員(「長男(公式設定・5歳男児)」)の RoBoHoN にも宿題を手伝ってもらうことにしました。

「オウム返し実装」をベースに、利用イメージは下記の図のとおりです。

figure1.PNG

ロボットと会話するために必要な「明瞭に」「ある程度ゆっくりしたスピードで」「正確に」発語することで、英語学習の習熟を狙います。


環境です

Windows 7 SP1 64bit

Android Studio 2.3.1

RoBoHoN_SDK 1.2.0

RoBoHon端末ビルド番号 01.08.00


ロボホンアプリのアイディア出しについて

先日から、『RoBoHoNの出力を受け止める人間側の五感』を軸に下の検討や実装をしています。

感覚
ロボホン実装

触覚

RoBoHoNと一緒におおきなかぶを抜く 

視覚

RoBoHoNで 『手旗信号版 嵐が丘』 もどきの実装 

今回は(新SDKの評価と同時に)RoBoHoNと「聴覚」というお題でアプリ実装を考えました。


「聴覚」とロボホン

「聴覚」単独 において、「動く人型ロボット」ロボホンが スマホ / タブレット に優るアドバンテージは原則ありません。

(あり得るとしたら、関節等サーボのモーター音など…?)

body_mimi.png

どうしても「視覚」(”人型ロボット”が話すからこそというコンテキスト)とのセットで、アイディアを検討する必要があります。

今回は、


発話内容に伴って、自動的に(手振り身振り)モーションをつけてくれる機能


英語発話対応に伴い、どう変化したか も、確認したいと思います。


モーション

ロボホンのモーション機能の実装方法は、おおきく下記三種類1です。

 

1. 公開されているモーションID(例:behavior id="0x060001"(バンザイ!))を任意指定

2. 汎用モーション自動割当て

3. 発話内容(特定のワード2・30文字未満(読み)ごと)に対して自動的にモーション割当て

 

今回は、3のモーション割当て(behavior id="assign")を利用します。


実装…?(公式サンプル)

よーし実装するぞ!と思いきや、今回の要件は、新SDKのサンプル3「音声認識した結果をオウム返しする」に、そのまま全部満たされてました。

うれしい!

 

1. オウム返し発話(および自動モーション割当て)


multilingual.hvml(サンプルコード抜粋)

    <action index="1">

<speech>${Lvcsr:Basic}</speech>
<behavior id="assign" type="normal"/>
<control function="recog_talk" target="jp.co.sharp.sample.multilingual">
<data key="Lvcsr_Basic" value="${Lvcsr:Basic}"/>
</control>
</action>

2.Recognition内容を背面画面に表示


MainActivity.java(サンプルコード抜粋)

    @Override

public void onExecCommand(String command, List<VoiceUIVariable> variables) {
Log.v(TAG, "onExecCommand() : " + command);
switch (command) {
case ScenarioDefinitions.FUNC_RECOG_TALK:
final String lvcsr = VoiceUIVariableUtil.getVariableData(variables, ScenarioDefinitions.KEY_LVCSR_BASIC);
mHandler.post(new Runnable() {
@Override
public void run() {
if(!isFinishing()) {
((TextView) findViewById(R.id.recog_text)).setText("Lvcsr:"+lvcsr);
}
}
});
break;
default:
break;
}
}

ただし、SDKを利用した自作アプリは音声認識の回数制限があるので、注意が必要です。


RoBoHoN SDKを利用して開発いただくアプリでは、1か月にお使いいただける音声認識の利用回数の上限が合計で1000回となっております。利用回数が上限に達した場合に備えて、音声認識ではなくテキストを利用して、音声入力をエミュレートする手段も用意しておりますのでご利用ください。(ロボホン開発者用サービス(一般向け)提供ページより)


(うまく動作しなくなったら、本体背面画面 > 設定 > その他 > 音声認識アクセス回数 の状況を確認するなど)


動作の様子

ロボホンが、スマホからの発話( Microsoft の TTS (TextToSpeach) デモ)を聞き取り、

"GoodMorning"

と、オウム返しで発話し、日本語の「おはよう」発話と同様に、片手を上げるモーションを自動実行しています。

 

out.jpg

実際の子供の発話に対しては、期待したとおり、


  • 宿題の英語例文の思わぬところでモーションが自動実行されるところが飽きないアクセント

  • 明瞭に発語しないと認識しない仕様が、こども本人の英語の発音上達に対して、なかなか良い感じに作用

している状態です。しばらく様子をみてみたいとおもいます!






  1. 0401_SR01MW_Application_Programming_Guide_V01_02_00 / 4.7.3 モーション実行 の表解釈 



  2. どのワードにどのモーションが割り当てられているかは公開されていません 



  3. 0701_SR01MW_SampleCode_V01_02_00 / SampleMultilingual