3. TAPIAに言葉を認識させる

Tapia
TAPIAに言葉を認識させます

◆ソースコード:

LanguageからSpeach-To-Text(STT:音声テキスト化)プロバイダーのインスタンスを取得します
TAPIAのSTT機能を利用するために、まず抽象クラスTapiaActivityの拡張を作成します
//日本語の設定をする
TapiaApp.setCurrentLanguage(Language.LanguageID.JAPANESE); 

//TapiaActivity.sttProviderのインスタンスを利用できるようになる
sttProvider = TapiaApp.currentLanguage.getOnlineSTTProvider(); 

//TAPIAが言葉の聞き取りを開始する
sttProvider.listen(); 

//TAPIAが言葉の聞き取りを開始した後の処理は、OnRecognitionCompleteListenerを設定して記入する。
sttProvider.setOnRecognitionCompleteListener(new STTProvider.OnRecognitionCompleteListener() {
・・・// 処理を記入する。NLUにresultsを渡す方法は「4.TAPIAに言葉の内容を理解させる」を参照

◆◇◆◇◆サンプルコード:TAPIAが言葉を認識して返事をする◆◇◆◇◆

1) ボタンを追加する

サンプルコード「0.ボタンを追加する」を参考に作成します

2) 言葉リスト.xmlを作成する

よく使用する言葉はxmlファイルに追加して使用することができます。
tapia-sample\app\res\values直下へ「mystring.xml」を作成します。
Tapia

3) Activityに以下処理を記入する

//■□■タピアが言葉を認識して返事をする■□■
public class Talk2Activity extends TapiaActivity {
    TapiaAnimation tapiaAnimation;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.eyes_layout);
        ImageView tapiaEyes = (ImageView) findViewById(R.id.eyes);

        //アニメーションのインスタンスを作成する
       tapiaAnimation = new TapiaAnimation(this,tapiaEyes);
        //タピアの表情を目をパチパチに設定する
       tapiaAnimation.startAnimation(TapiaAnimation.PLAIN ,true);

        //日本語の設定をする
        TapiaApp.setCurrentLanguage(Language.LanguageID.JAPANESE);
        //TapiaActivity.ttsProviderクラスのインスタンスを取得する
        ttsProvider = TapiaApp.currentLanguage.getTTSProvider();
        //TapiaActivity.sttProviderクラスのインスタンスを取得する
        sttProvider = TapiaApp.currentLanguage.getOnlineSTTProvider();

        //タピアの顔を長押しした時終了する
        tapiaEyes.setOnLongClickListener(new View.OnLongClickListener() {
           @Override
            public boolean onLongClick(View v) {
                 finish();
                return false;
            }
        });

        try {
            ttsProvider.say(getString(R.string.service_hello0));//タピアが「はい!何でしょうか?」としゃべる
            } catch (LanguageNotSupportedException e) {
            e.printStackTrace();
            }

        //タピアがおしゃべりした後に、聞き取りを開始する
        ttsProvider.setOnSpeechCompleteListener(new TTSProvider.OnSpeechCompleteListener() {
                @Override
                public void onSpeechComplete() {
                //タピアが聞き取りを開始する
                sttProvider.listen();

                // sttProvider機能を利用するために、OnRecognitionCompleteListenerを設定する。
                // タピアが聞き取りを終了した後に、言葉をしゃべる
                sttProvider.setOnRecognitionCompleteListener(new STTProvider.OnRecognitionCompleteListener() {
                    @Override
                    public void onRecognitionComplete(final List list) {
                        String strTapia = null ;

                        //たぴあが理解した言葉を振り分ける
                        for (String sentence : list){
                            if (sentence.equals("おやすみ")) {
                                //mystring.xmlファイルに追加した言葉を使用します。
                                strTapia = getString(R.string.general_bye);//「おやすみ」と言われたら「おやすみなさい。またね」と返事をする
                                break;
                            }else{
                                strTapia = getString(R.string.general_again);//たぴあが「もしもし」と返事をする
                                break;
                            }
                        }
                        try {
                            ttsProvider.say(strTapia);//タピアがしゃべる
                        } catch (LanguageNotSupportedException e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        });
    }
    @Override
    protected void onResume() {
        super.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
    }
}
            

© 2018 - MJI Inc. Copyright reserved -