本文介绍智能硬件场景如何通过唤醒词快速启动通话。
背景介绍
针对智能硬件场景,经常通过唤醒词来启动智能体的在线语音对话。例如:
一问一答:用户说出唤醒词,等待设备响应(如“我在”)后,再说出指令。
用户:小智管家 智能硬件:我在 用户:今天天气怎样 智能硬件:今天天气多云...连续对话:用户将唤醒词与问题连续说出,设备直接对问题进行应答。
用户:小智管家,今天天气怎样? 智能硬件:今天天气多云...
本文面向已集成唤醒 SDK 的硬件设备,在识别到唤醒词后,指导如何快速启动通话(包括正常启动和问答启动),以实现对用户唤醒的即时响应。
前提条件
已经集成音视频通话智能体,并实现了基础的语音通话功能,请参考:集成概览
功能实现
核心过程说明:
Token 预下发:业务服务器应提前将通话所需的 Token 下发并缓存在设备端,减少通话启动时的网络请求耗时。
音频预采集:在创建通话引擎时,提前开启 RTC 音频采集,并启用入会前的采集缓存,缩短首帧上行时间。
唤醒与通话互斥:启动通话时需停止唤醒 SDK(尤其是麦克风采集),通话结束后再重新启动唤醒功能。
唤醒后的响应处理:
若仅需正常启动(播放唤醒后仅响应播放,如:“我在”):
方案一:通过 RTC 引擎播放提示音,利用其回声消除能力避免自采;
方案二:由业务层自行播放,但需在播放期间对 RTC 麦克风采集禁音,防止声音被重复录入。
若需问答启动:应将唤醒时携带的问题作为参数传入智能体,触发即时回答。
下面就关键步骤,如何调用SDK的API实现关键路径
怎样设置合适的参数,发起通话
适用于唤醒场景的通话配置如下:
关闭智能体欢迎语.
根据唤醒识别结果设置需要问答启动.
// 关闭智能体欢迎语,如果工作流不配置欢迎语则无需配置
artcaiCallConfig.agentConfig.agentGreeting = "";
// 如果需要问答启动,需要设置wakeUpQuery为提问的问题
artcaiCallConfig.agentConfig.wakeUpQuery = "今天天气怎样?";
// 设置其他参数
...
// 初始化配置
mAICallEngine.init(artcaiCallConfig);
// 启动通话
mAICallEngine.call(token);
怎样获取RTC引擎对象,并开启音频采集
@Override
public void onAliRtcEngineCreated(AliRtcEngine engine) {
// 缓存起来,后续有用
mRtcEngine = engine;
// 提前启动音频采集,这样在接通过程中就可以采集音频了
engine.startAudioCapture();
engine.startAudioPlayer();
// 开启RTC入会前的采集缓存
engine.setParameter("{\"audio\":{\"user_specified_ahead_push_stream\":true}}");
}如何使用ARTC播放欢迎语
参考文档:如何使用SDK播放音频裸数据或本地文件
注意需要提前开启播放器。
如何开启与关闭麦克风
当业务层自行实现播放欢迎语,需要关闭麦克风,否则会出现播放的音频被重新采集进去的情况,并且在播放结束时打开麦克风。
// 关闭麦克风采集
mAICallEngine.muteMicrophone(true);
// 打开麦克风采集
mAICallEngine.muteMicrophone(false);该文章对您有帮助吗?