开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

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