AR语音交互
更新时间:2021-05-27
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复用
注意:
- voiceCallback中可以在不同状态下实现不同的效果。
- 当状态为
识别最终结果
时,会调用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