重庆互联网,19年企业互联网解决经验,专业网站开发、移动端开发、微信端开发、小程序开发!
重庆网络推广公司

腾讯小微(37)— linux中小微业务层接口函数(一)

作者:重庆互联网小徐 发布时间:2024-06-04 浏览:19933 赞(1950 收藏 评论(0)

启动小微服务

int xiaowei_service_start(XIAOWEI_CALLBACK *callback, XIAOWEI_NOTIFY *notify);

如主页的介绍所说,小微core业务可以在小微device初始化成功后单独启动,也可在初始化device时配置自动启动。若手动启动,则调用此接口。

请求接口

int xiaowei_request(char *voice_id, XIAOWEI_CHAT_TYPE type, const char *chat_data, unsigned int char_data_len, XIAOWEI_PARAM_CONTEXT *context);

小微对话类请求的公共接口,根据type的不同,使用方式不同。当使用语音类(语音请求和唤醒校验)请求时,需要连续多次调用这个接口,每次调用时传入一定量的语音数据(64~6400,建议3200,即在16K的采样率下,每秒调用5次)。其它类型,如文本请求,调用一次这个接口即可。

注意,voice_id是小微SDK生成的,并不是由您提供的,您需要申请一个33字节大小的空间让SDK来填写,接口返回时即可获取。每一轮请求的voice_id是相同的,即语音请求时,您可能需要调用数十次xiaowei_request接口,每次获取的voice_id都是一样的。

//示例代码,这是一次文本请求
 char voice_id[33] = {0};
 XIAOWEI_PARAM_CONTEXT context = {0};
 context.silent_timeout = 500;
 context.speak_timeout = 5000;
 context.voice_request_begin = true;
 context.voice_request_end = false;
 const char *text = "我要听林俊杰的歌";
 xiaowei_request(voice_id, xiaowei_chat_via_text, text, (uint32_t)strlen(text), &context);
//示例代码,这是一次语音请求
 char buf[1024] = your voice data;
 //第一包
 char voice_id[33] = {0};
 XIAOWEI_PARAM_CONTEXT context = {0};
 context.silent_timeout = 500;
 context.speak_timeout = 5000;
 context.voice_request_begin = true;
 context.voice_request_end = false;
 //本地静音检测,要主动发送end包,如果云端静音检测,就当收到onsilent回调之后停止发送请求
 XIAOWEI_PARAM_PROPERTY property = xiaowei_param_local_vad;
 context.request_param = property;
 xiaowei_request(voice_id, xiaowei_chat_via_voice, buf, sizeof(buf), &context);

 //第N包,从第2包开始
 context.voice_request_begin = false;
 buf更新,
 xiaowei_request(voice_id, xiaowei_chat_via_voice, buf, sizeof(buf), &context);
 
 /* 中间还有若干包 */
 
 //最后一包
 context.voice_request_end = true;
 buf更新(最后一包buf长度可以为0)
 xiaowei_request(voice_id, xiaowei_chat_via_voice, buf, sizeof(buf), &context);

主动停止小微服务

int xiaowei_service_stop();

停止之后可以重新start,例如您想改一下回调函数地址等。

强行取消某次请求

int xiaowei_request_cancel(const char *voice_id);

强行取消某次请求,voiceID填空会取消所有请求。一般的使用场景为,用户push to talk的时候,主动cancel,不想说了,这时候需要调用一下,不然小微可能会返回“没听懂你在说什么”。在一轮请求中,如果直接重新发起一轮语音/文本请求(request_begin = true)会自动取消上一次未完成的请求。

上报播放状态

int xiaowei_report_state(XIAOWEI_PARAM_STATE *state);

设备应该在状态变化之后及时上报,只需要上报大资源,即打断后能够恢复的资源,例如音乐,FM。无需上报小资源,例如TTS播放。这里列举一下常用场景的上报:

 1. 切歌:报2次,首先第一首歌stoped(offset为stop前一瞬间的位置)、然后第二首歌playing(offset = 0)。
 2. 播放过程中唤醒了开始语音请求(这时候正常音乐是要暂停的):上报paused
 3. 操作2点了一首新歌,并且要准备播放了:先报刚才那首暂停的歌stoped,再报新歌playing
 4. 操作2问了一下天气或者闲聊:首先无需任何上报,音箱播放天气或者闲聊的TTS,对话结束之后正常逻辑应该恢复播放音乐,然后这时候上报刚才那个歌playing。
 5. 该播放的东西播完了,无事可做:上报idle

重庆互联网项目从2004年开始为各行各业提供互联网发展解决方案,专业从事网站、小程序、微信公众号、APP、电商平台、系统等互联网平台开发,帮助企业实现从传统行业到互联网的完美转型。截止目前,重庆互联网合作的企业遍布全国各地,20年的开发经验和完善的售后服务体系获得合作客户的高度认可!

关注重庆互联网官方公众号,即可获取粉丝专享福利!

重庆互联网公众号二维码.jpg

网友留言评论
我要评论
评论

欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!

  • 赞(0
    踩(0
重庆网站定制建设
  • 重庆网站建设平台
  • 重庆网站优化公司
  • 重庆网络推广公司哪家好
  • 重庆APP制作公司
版权所有 ©2004-2024 重庆市渝中区圣灵科技信息有限公司 渝ICP备16004600号-14 渝公网安备50010802001420号 电子营业执照
重庆公众号制作哪家好
二维码
联系客服 重庆商城网站建设