1. 程式人生 > >訊飛語音開發之語音喚醒

訊飛語音開發之語音喚醒

只有前面講到的語音合成,語音理解,語義理解,語音識別確實可以實現人機交流。但是還不能實現完全智慧,不能狗做到實時問道,間歇式問答。要實現實時問答,切不用手動操作。這時候語音喚醒功能就大選伸手了。下面我們來看看語音喚醒功能的實現吧。

使用語音喚醒,首先你要在你的應用中開通語音喚醒服務。

設定喚醒詞,設定的過程中最好是四個字以上且喚醒詞之間相互區分度比較大一些,這樣識別率會好一些

然後下載體驗包(或者購買包),在含有語音喚醒功能的sdk中我們可以看到一個.jet檔案。這個檔案含有你設定的喚醒詞。把他放在assets資料夾下,

其他的資源載入可以參考前面幾節的內容。再次不再贅述

主要程式碼設定

主要程式碼:

1,初始化sdk

SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID+"=********");

2.初始化喚醒物件

voiceWake = VoiceWakeuper.createWakeuper(MainActivity.this, null);


3,獲取喚醒資源

/*
	 * 獲取喚醒詞等喚醒資源
	 * */
	private String getResourse(){
		/*
		 * 載入喚醒資源
		 * */
		StringBuffer param = new StringBuffer();
		String resPath = ResourceUtil.generateResourcePath(MainActivity.this,
				RESOURCE_TYPE.assets,"ivw/"+getString(R.string.app_id)+".jet");
		param.append(SpeechConstant.IVW_RES_PATH+"="+resPath);
		param.append(","+ResourceUtil.ENGINE_START+"="+SpeechConstant.ENG_IVW);
		
		return ResourceUtil.generateResourcePath(MainActivity.this,
				RESOURCE_TYPE.assets, "ivw/"+getString(R.string.app_id)+".jet");
	}


4,初始化喚醒那個物件

/*
	 * 初始化設定--語音理解物件,語音喚醒物件,語音合成物件
	 * */
	private void initSet(){
		//語音理解設定
		understander.setParameter(SpeechConstant.LANGUAGE,"zh_cn");
		//語音合成設定
		speechSyn.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan");
		speechSyn.setParameter(SpeechConstant.SPEED,"50");
		speechSyn.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_CLOUD);
		//語音喚醒設定	
//		voiceWake.setParameter(SpeechConstant.IVW_THRESHOLD,"0"+-80);

//		voiceWake.setParameter(SpeechConstant.IVW_SST,"oneshot");
		voiceWake.setParameter(SpeechConstant.ENGINE_TYPE,"cloud");
//		voiceWake.setParameter(SpeechConstant.CLOUD_GRAMMAR, grammarID);
		voiceWake.setParameter(SpeechConstant.IVW_THRESHOLD, "0:"+0);
		voiceWake.setParameter(SpeechConstant.IVW_SST,"wakeup");
		voiceWake.setParameter(SpeechConstant.KEEP_ALIVE, "0");
		voiceWake.setParameter(SpeechConstant.IVW_NET_MODE,""+0);
		voiceWake.setParameter(SpeechConstant.IVW_RES_PATH,getResourse());
		
	}

5,開始語音喚醒

voic.startListening(mWakeuperListener);


6,喚醒監聽器

/*
	 * 喚醒監聽器
	 * */
	private WakeuperListener mWakeuperListener = new WakeuperListener(){

		@Override
		public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
			
			}

		@Override
		public void onResult(WakeuperResult results) {
				
		}

		@Override
		public void onBeginOfSpeech() {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onError(SpeechError arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onVolumeChanged(int arg0) {
			// TODO Auto-generated method stub
			
		}
	};



最後記得新增許可權,(前面幾節介紹的也有,再次也不再贅述了),至此語音喚醒功能已經實現,注意次還行是設定在單純的喚醒,還有一種能喚醒是喚醒+識別,後面會單獨介紹。再次不說了。

至於程式碼回頭我會單獨列出下載地址,今天時間關係,暫時不上程式碼。