閱讀718 返回首頁    go 技術社區[雲棲]


集成百度語音sdk到智能家居平台中

今天,周六,晚上有約會。不過有些任務必須逼迫自己趕緊完成。要構造一個完善的係統不是三天打魚兩天曬網能夠完成的,必須嚴格按計劃執行下去,持之以恒。終有一日會形成規模效應。做Demo很容易,做產品,很難。


百度SDK的集成在它 的官網有完整的教材。

1 申請,你首先需要通過百度的驗證,給你開放。

2 集成,集成分為深度定製和使用百度提供的UI快速集成。

具體step-by-step的東西,參考它的手冊即可。

我這裏隻記錄一些個人認為有價值的東西。

1 語義理解

“SDK 還支持語義理解能力,可以將用戶的語音直接轉換成需求意圖。語義具有領域性特征,不
屬於任何領域的語義是不存在的。同樣的語言,在不同的領域中所代表的含義可能截然不同。語義
理解就是把語言在特定領域所代表語義通過計算機可處理的表示方式理解出來。”

這個非常重要,如果我們要深度定製智能家居的語義,我們必須進行定製。

不過暫時,我們先簡單集成。

i

1在我們的聊天窗口中加一個按鈕“語音”

2 當點擊按鈕的時候生成一個BaiduASRDigitalDialog,具體參數見其說明文檔或者Demo源碼,從經驗來看,最好是用demo的源碼,因為文檔的那幾行會跑出意想不到的東西。

3 設置回調,在回調中把結果取出來然後設置到輸入框中。


部分源碼如下:

成員變量:

private Button speechBtn=null;
	private final static String API_KEY="XYNj1ulsExdUaHv8QhnlqXT9";
	private final static String SECRET_KEY="5TY9Q3d3jF0zVXorjXs5o9LGrcN04lUA";
	private BaiduASRDigitalDialog mDialog = null;
	private DialogRecognitionListener mRecognitionListener=null;

在oncreate中初始化相關對象和監聽器:

//add for speech
		speechBtn=(Button)findViewById(R.id.chat_speechbtn);
		speechBtn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				loadBdSpeechDialog();
			}
		});
		mRecognitionListener = new DialogRecognitionListener() {
			
			@Override
			public void onResults(Bundle result) {
				// TODO Auto-generated method stub
				Log.d(LOG_TAG, "onResult");
				ArrayList<String> rs = result!=null?result.getStringArrayList(RESULTS_RECOGNITION):null;
				if(rs!=null&&rs.size()>0)
				{
					 Log.d(LOG_TAG,"result:"+rs.get(0));
					messageInput.setText(rs.get(0));
				}
			}
		};

其中loadBdSpeechDialog:

public void loadBdSpeechDialog()
	{
         ///code from demo
        messageInput.setText(null);

           if (mDialog != null) {
               mDialog.dismiss();
           }
           Bundle params = new Bundle();
           params.putString(BaiduASRDigitalDialog.PARAM_API_KEY, API_KEY);
           params.putString(BaiduASRDigitalDialog.PARAM_SECRET_KEY, SECRET_KEY);
           params.putInt(BaiduASRDigitalDialog.PARAM_DIALOG_THEME, BaiduASRDigitalDialog.THEME_BLUE_LIGHTBG);
           mDialog = new BaiduASRDigitalDialog(this, params);
           mDialog.setDialogRecognitionListener(mRecognitionListener);
//       }
       mDialog.getParams().putInt(BaiduASRDigitalDialog.PARAM_PROP,VoiceRecognitionConfig.PROP_INPUT);
       mDialog.getParams().putString(BaiduASRDigitalDialog.PARAM_LANGUAGE,
    		   VoiceRecognitionConfig.LANGUAGE_CHINESE);
     
       mDialog.getParams().putBoolean(BaiduASRDigitalDialog.PARAM_START_TONE_ENABLE, true);
       mDialog.getParams().putBoolean(BaiduASRDigitalDialog.PARAM_END_TONE_ENABLE, true);
       mDialog.getParams().putBoolean(BaiduASRDigitalDialog.PARAM_TIPS_TONE_ENABLE, true);
       mDialog.show();
        
	}

這樣就最簡單的集成了百度語音sdk。。。還是很好用的,下一步深度定製需要兩方麵的工作:1,去掉百度的UI,定製自己的;2,語義定製,使得它更好的應用於智能家居中。



















最後更新:2017-04-03 05:40:03

  上一篇:go poj 2562 Primary Arithmetic
  下一篇:go Windows下手動完全卸載Oracle