作者:重庆互联网小徐 发布时间:2024-04-26 浏览:19717 赞(1950) 收藏 评论(0)
小微设备APP的主要功能及使用步骤为(以语音请求为例):
等待用户APP连接,连接成功后,由用户APP调用初始化接口,将设备信息传给小微设备APP,小微设备APP将进行鉴权和登录操作。
等待登录成功(登录成功前其它接口调用均会失败)。
设备唤醒,这个过程由您自己实现。在我们的demo中提供了一个唤醒模型,但这个模型仅供您体验使用,我们并不提供其商业licence。
由您自己实现录音,并使用小微的语音请求接口,不断将音频数据交给小微设备APP。
等待小微设备APP的异步回调,您可以在这些回调中获得ASR实时结果、最终响应及媒体资源等。
您自行展示ASR文本、answer文本、播放answer TTS和其它媒体资源(如音乐点播)。
一轮对话结束,下次请求从“4”重新开始。
当您不需要小微服务时,直接断开aidl即可。此时小微设备APP会自行logout,这就意味着每次您重新建立aidl连接时,都需要从1开始重复上述操作。
接入小微前,首先需要在小微的官方平台上注册,并获得产品标识ProductId(PID)。PID唯一标识了您的产品,假如您有两款不同的产品,建议申请两个PID,OTA以及其它定制服务以PID为粒度。
小微后台采用签名认证方式来确保您的设备的合法性。对于每一个PID,您需要使用我们提供的shell脚本或c++算法源代码或windows工具来自己生成一组秘钥对,并将公钥publickKey提供给我们;对应的私钥privateKey您应妥善保存,后续用于对您的设备进行签名,签名算法为ecdsa,具体信息可以参考对应的readme。我们获得公钥后,会为您分配一个秘钥版本KeyVersion(未来您可以更新秘钥并替换版本)。这个流程在网站上有详细说明,这里不赘述。
在与设备APP建立连接后,需要调用登录接口,需要传入以下5个参数:
SN 设备serial number,字符串,应保证每台设备拥有唯一的SN
Licence 利用私钥对SN的签名结果(SN = ecdsa(SN + PID, privateKey)),显然这也是设备唯一的
KeyVersion 签名使用的秘钥版本,在官网上传publicKey时获得
PID 一个系列的产品PID均相同
appuin 与PID对应,注册时获得
一般的,privateKey应保存云端或产线中,在设备生产时生成上述5个参数,并烧录在设备中。建议不要将privateKey和签名算法保存在设备中,这样安全无法得到保证。
在测试阶段,我们可以提供少量的测试账号供您直接使用。
切勿多台设备以相同账号登录,会导致互相踢掉线。
在初始化完成后(onLoginComplete(0)
),即可调用小微相关接口来发起小微语音请求。语音请求对音频数据的要求和注意事项:
16位,16kHz,单声道pcm数据
分片提交,每片大小为64~6400个数据点
SDK不会对声音进行压缩之外的任何处理,设备需要自行实现软硬件降噪和回声消除,以便达到更佳的识别效果
小微团队会对设备的采音质量进行评估,您的设备采音质量需要达到相关规定
设备唤醒由厂商自行实现,也可使用小微团队提供的唤醒方案。小微同时支持本地唤醒云端校验功能,可参考接口具体文档。在某些情况下,小微会主动要求设备唤醒,如多轮对话,此时厂商应按照小微的要求直接唤醒设备,并发起语音请求。注:当闹钟响起时,无屏设备唤醒或触碰任意按键即结束闹铃,有屏设备唤醒或触碰按钮即结束闹铃。
文本请求只需调用一次请求接口,语音请求则需要多次调用,以语音请求为例,您需要多次使用request (...)
接口不断将语音数据发送给小微设备APP,设备APP会将数据压缩并上传至后台进行识别,在这个过程中,您会通过相应的回调接口(IAudioRequestListener.onRequest(...)
)收到一系列的ASR事件,如检测到说话,获得ASR结果等。在设备端可以进行相应的UI展示。一般的语音请求流程如下:
其中 Event 一般都会遵循如下顺序回调:
ON_DIALOG_BEGIN
(一轮对话开始)
ON_SPEAK
(开始说话)
多个ON_RECOGNIZE
(持续收到中间结果)
ON_SILENT
(静音)
ON_RESPONSE
(收到响应)
ON_DIALOG_END
(一轮对话结束)
如上文所述,String IAIAudio.request(int type,in byte[] requestData, in XWRequestInfo param)
是小微最关键的接口,语音或文本数据从这里输入。
当语音或文本请求时,每一轮请求有个唯一的ID(voiceID),即上述接口的返回值,如果请求失败,将返回空的ID。在一轮语音请求中,您需要多次调用该接口,其中第一个参数type为XWCommonDef.RequestType.VOICE
,每次调用均会返回相同的ID。在请求过程中,会有若干事件从IAudioRequestListener.onRequest(...)
接口中返回。
XWRequestInfo
是请求的上下文信息,每次请求都需要携带,这是维护多对话的标识,同时也配置了对话的一些属性,首轮请求时param.contextId应为空,多轮请求时应携带上一轮请求response中的这个参数。在每一轮请求中,第一次调用request(...)
时应将param.voiceRequestBegin
置为true。
小微SDK提供文本请求的方式,即跳过ASR这一步,此时每次请求您只需要调用一次请求接口即可,此时requestData即为请求文本:
IAIAudio.request(XWCommonDef.RequestType.TEXT,in byte[] requestData, null);
重庆互联网项目从2004年开始为各行各业提供互联网发展解决方案,专业从事网站、小程序、微信公众号、APP、电商平台、系统等互联网平台开发,帮助企业实现从传统行业到互联网的完美转型。截止目前,重庆互联网合作的企业遍布全国各地,20年的开发经验和完善的售后服务体系获得合作客户的高度认可!
关注重庆互联网官方公众号,即可获取粉丝专享福利!
欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!