1.1. 使用AIUIAgent
AIUIAgent仅对已开通AIUI功能的APPID可下载使用,未开通的应用,可通过SpeechUnderstander使用语义理解。
创建AIUIAgent实例并开启服务,AIUIAgent需要使用VAD资源,请把 res/vad 目录下的资源文件,拷到由AIUI参数中vad的res_path参数(参考附录说明)指定的工程 assets/res/vad 目录下。
1. mAIUIAgent = AIUIAgent.createAgent( this, aiuiParams, mAIUIListener );
2. AIUIMessage startMsg = new AIUIMessage(AIUIConstant.CMD_START
3. , 0
4. , 0
5. , null
6. , null );
7. mAIUIAgent.sendMessage( startMsg );
aiuiParams ,AIUIConsatnt.CMD_START 分别为AIUI参数和消息值,参考附录相应说明。服务开启后,服务的状态和结果消息将通过 AIUIListener 返回,具体事件说明请参考附录。关于AIUIAgent类的更多说明,参考AIUI SDK开发文档。
1.1.1. 文本语义理解示例
通过sendMessage发送要进行语义理解的文本数据,并通过AIUIListener的回调,获取结果或错误信息。
1. // 先发送唤醒消息,改变AIUI内部状态,只有唤醒状态才能接收语音输入
2. if( AIUIConstant.STATE_WORKING != this.mAIUIState ){
3. AIUIMessage wakeupMsg = new AIUIMessage(AIUIConstant.CMD_WAKEUP
4. , 0
5. , 0
6. , ""
7. , null);
8. mAIUIAgent.sendMessage(wakeupMsg);
9. }
11. String params = "data_type=text";
12. byte[] textData = "今天合肥的天气".getBytes();
13. AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_WRITE
14. , 0
15. , 0
16. , params
17. , textData);
18. mAIUIAgent.sendMessage(msg);
1.1.2. 语音语义理解示例
通过sendMessage发送消息,设置AIUI服务为已唤醒状态,再发送开始录音消息,通过麦克风录入音频,并通过AIUIListener的回调,获取结果或错误信息。
1. // 先发送唤醒消息,改变AIUI内部状态,只有唤醒状态才能接收语音输入
2. if( AIUIConstant.STATE_WORKING != this.mAIUIState ){
3. AIUIMessage wakeupMsg = new AIUIMessage(AIUIConstant.CMD_WAKEUP
4. , 0
5. , 0
6. , ""
7. , null);
8. mAIUIAgent.sendMessage(wakeupMsg);
9. }
10. // 打开AIUI内部录音机,开始录音
11. String params = "sample_rate=16000,data_type=audio";
12. AIUIMessage writeMsg = new AIUIMessage( AIUIConstant.CMD_START_RECORD
13. , 0
14. , 0
15. , params
16. , null );
17. mAIUIAgent.sendMessage(writeMsg);
返回的语义结果,参考AIUI开放平台语义结果说明文档。
1.1.3. 更新词典
AIUIAgent提供了上传词典的功能。如在线听写词典章节所述,更新词典只在对应的 LANGUAGE,ACCENT或 “ent”下生效,而AIUIAgent在进行语音语义理解时使用的默认参数值,可能与听写的不一样,因此,直接通过AIUIAgent更新词典,可以保证其在使用AIUIAgent 进行语音语义会话时生效。
1. // 先发送唤醒消息,改变AIUI内部状态,只有唤醒状态才能接收语音输入
2. if( AIUIConstant.STATE_WORKING != this.mAIUIState ){
3. AIUIMessage wakeupMsg = new AIUIMessage(AIUIConstant.CMD_WAKEUP
4. , 0
5. , 0
6. , ""
7. , null);
8. mAIUIAgent.sendMessage(wakeupMsg);
9. }
11. AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_UPLOAD_LEXICON
12. , 0
13. , 0
14. , params
15. , null);
16. mAIUIAgent.sendMessage(msg);
其中,params 为含词典内容JSON数据,参考附录对 CMD_UPLOAD_LEXICON消息的说明。上传成功与否的状态,通过AIUIListener的事件获取。
