AR语音交互
所有文档

          AR开放平台

          AR语音交互

          为提升用户交互的多样性,百度AR集成了语音识别功能,可以通过语音交互来取代之前场景中的部分手势交互,成为百度AR新型的交互方式。

          百度AR语音交互1.0 (最低兼容版本SDK 20)

          • 提供开启和关闭语音的能力。
          • 提供一个官方的开启语音按钮,可通过点击按钮调起语音,再次点击关闭。

          API

          语音交互类 : Speech

          1.0版本语音交互主要是方便开发者快速接入并使用,API简单易懂。

          • start_listen 开启语音识别并监听 详解
          • stop_listen 关闭语音识别并监听 详解
          • show_mic_icon 显示麦克风按钮 详解
          • hide_mic_icon 隐藏麦克风按钮 详解
          • callBack 语音识别过程中返回状态 详解

          AR语音 status

          • VOICE_STATUS_READYFORSPEECH 语音准备就绪
          • VOICE_STATUS_BEGINNINGOFSPEECH 可以开始说话
          • VOICE_STATUS_ENDOFSPEECH 说话结束
          • VOICE_STATUS_ERROR 识别出错
          • VOICE_STATUS_RESULT 识别最终结果
          • VOICE_STATUS_RESULT_NO_MATCH 识别结果不匹配
          • VOICE_STATUS_PARTIALRESULT 识别临时结果
          • VOICE_STATUS_CANCLE 识别取消

          AR语音 errorId

          • VOICE_ERROR_STATUS_NULL 未知错误
          • VOICE_ERROR_STATUS_SPEECH_TIMEOUT 没有语音输入
          • VOICE_ERROR_STATUS_NETWORK 网络错误
          • VOICE_ERROR_STATUS_INSUFFICIENT_PERMISSIONS 权限错误

          应用

          • 场景包结构中加入 voice.json 文件,内容如下

          example1 中对应的文字及为语音识别文案

          {
              "show_error_tips": true,
              "voice": {
                  "example1": [
                      "小度小度",
                      "小度"
                  ],
                  "example2": [
                      "百度AR",
                      "AR"
                  ],
                  "example3": [
                      "菜花菜花",
                      "菜花"
                  ]
              }
          }
          • script文件夹下,在include.lua 文件中引入 speech.lua 文件
          • lua 中AR语音交互代码,如下
          app.on_loading_finish = function()
          	-- 此处是否展示语音按钮或是否需要直接开启语音, 可以根据项目创意需求灵活选择
          	-- 展示语音按钮
            	-- Speech.show_mic_icon()
          
            	-- 开启语音
            	Speech.start_listen()
          end
          • lua中callBack代码如下,可直接copy复用

          注意:

          1. voiceCallback中可以在不同状态下实现不同的效果.
          2. 当状态为识别最终结果 时,会调用matchResult(str),通过识别判断当前属于哪一个key,执行对应func()实现逻辑。
          -- AR语音回调响应
          Speech.callBack = function(data)
          	 voiceCallback(data)
          end
          
          
          -- AR语音callback
          function voiceCallback(mapData)
              local status = mapData['status']
              if(status ~= nil) then
                  if(status == VOICE_STATUS_READYFORSPEECH) then
                  end
                  
                  if(status == VOICE_STATUS_BEGINNINGOFSPEECH) then
                  end
                  
                  if(status == VOICE_STATUS_ENDOFSPEECH) then
                  end
                  
                  if(status == VOICE_STATUS_ERROR) then
          	        errorid = mapData['error_id']
          	        errorId(errorid)
                  end
                  
                  if(status == VOICE_STATUS_RESULT) then
          	        str = mapData['voice_result']
          	        matchResult(str)
                  end
                  
                  if(status == VOICE_STATUS_RESULT_NO_MATCH) then
                  end
                  
                  if(status == VOICE_STATUS_PARTIALRESULT) then
                  end
                  
                  if(status == VOICE_STATUS_CANCLE) then
                  end
              end
          end
          
          
          -- AR语音结果匹配
          function matchResult(str)
          	if( str == 'example1')then
          		-- 此处 `example1` 与voice.json 中字段匹配,识别不同的字段,执行不同的代码逻辑.
          		-- func1() 为具体实现代码逻辑
          		func1()
          	end
          	
          	if( str == 'example2')then
          		func2()
          	end
          	
          	if( str == 'example3')then
          		func3()
          	end
          end
          
          -- AR语音错误提示
          function errorId(id)
          	if( id == VOICE_ERROR_STATUS_NULL) then
          	end
          	
          	if( id == VOICE_ERROR_STATUS_SPEECH_TIMEOUT) then
          	end
          	
          	if( id == VOICE_ERROR_STATUS_NETWORK) then
          	end
          	
          	if( id == VOICE_ERROR_STATUS_INSUFFICIENT_PERMISSIONS) then
          	end
          end
          上一篇
          天空盒:顶
          下一篇
          SLAM