网站建设及维护费算业务宣传费,小程序定制开发中心,检察 门户网站建设,内蒙能源建设集团网站摘要#xff1a; 随着AI技术的进步#xff0c;智能语音开始将人机交互从手眼睛的传统模式中解放出来。带给人们更便捷、更风趣、更有人情味的体验#xff0c;让被操作对象变得不再只是一个死板的工具#xff0c;而更像是一个有生命的助理。“帮我打开空调”#xff0c;“明…摘要 随着AI技术的进步智能语音开始将人机交互从手眼睛的传统模式中解放出来。带给人们更便捷、更风趣、更有人情味的体验让被操作对象变得不再只是一个死板的工具而更像是一个有生命的助理。“帮我打开空调”“明天上班需要带伞吗”“快递到哪了”…在万物互联的时代你的所有需求只需要一句话便能实现。
点此查看原文http://click.aliyun.com/m/43694/
随着AI技术的进步智能语音开始将人机交互从手眼睛的传统模式中解放出来。带给人们更便捷、更风趣、更有人情味的体验让被操作对象变得不再只是一个死板的工具而更像是一个有生命的助理。“帮我打开空调”“明天上班需要带伞吗”“帮我冲100块钱话费”…在万物互联的时代你的所有需求只需要一句话便能实现。 AliOS Things 集成的Link Voice SDK即可实现智能语音交互。
关于阿里智能语音服务
阿里智能语音服务为设备提供语音交互能力、丰富的音乐内容、智能家居控制等并可进行专有设备技能定制如语音操控跑步机、按摩椅等设备。包括
通用服务搜歌、搜栏目、搜电台、问天气、百科、四则运算等 阿里服务控制智能家居、充值手机费、天猫超市购物、查询电费等 需接入账号体系可参考SDS接入 私有服务操控设备、售后电话查询等 需要技能定制签约时请提供产品需求。
功能集成
设备接入阿里语音服务需要集成Alink SDK和Link-Voice SDK其中Alink SDK为设备提供接入阿里IoT平台的连接、账号体系、配网、OTA等能力而Link-Voice SDK为设备提供阿里智能语音服务。设备首先要集成了Alink SDK成为SDS平台的一个设备才能通过集成Link-Voice SDK使用阿里智能语音服务。
Link-Voice SDK除了依赖Alink为设备完成平台接入设备管理外还需要表格所列模块完成相应工作。其中websockets用来进行语音数据的交互opus完成语音录制的PCM格式到opus格式的转换服务端只接收opus格式cjson用来做json解析mbedtls为alink和websockets的底层连接进行加密为其数据传输提供安全保障。而目前AliOS Things已完成以上表格所有模块的移植适配工作并将其集成进来所以我们直接使用AliOS Things便可完成愉快的智能语音开发。主mcu性能建议
Flash512KB RAM200KB CPU180Mhz
单次语音识别流程图
简化缓冲处理等细节
开发平台准备
按理满足功能集成章节性能要求并带音频录制及播放功能的开发板即可。前提是需要完成AliOS Tings的移植适配工作。本文以全志xr871evb已完成OS适配为例进行介绍。
本平台资源
cpu:200Mhz cortext-M4f RAM448KB部分硬件相关code需要加载到ram中运行实际可用约280KB FLASH2MB SPI FLASH
环境搭建及代码编译
先搭建AliOS开发环境以linux为例 AliOS-Things-Linux-Environment-Setup
然后从github阿里官方开源库下载最新版本的AliOS Things源码https://github.com/alibaba/AliOS-Things 以linux下开发为例
git clone gitgithub.com:alibaba/AliOS-Things.git
切换到主分支
git checkout master
建议再在主分支上新建一个自己的开发分支
git checkout –b dev-xxx(yourname):
到目前为止环境也安装好了代码也准备完毕只待编译及烧录测试。 编译link-voice测试例程
aos make linkvoiceappxr871evb xr8711
代码烧入
cd platform/mcu/xr871/tools/
修改串口配置
vim settings.ini
将串口改成你板子的串口号可ls /dev/tty*查看保存退出。代码烧写先将全志开发板启动选择拨码开关拨至NO位置如同所示然后执行
./phoenixMC_linux 开始进行代码烧写烧写完成后再将拨码开关拨回靠串口位置重启。
打开minicom或其他串口工具监视设备输入信息波特率115200。 功能演示 初次上电后先进行配网
netmgr connect ssid psswd
其中ssid和psswd分别替换为你无线网络名及密码。 由于没有加本地关键词识别功能所以现在没次对话需要按键触发。 根据终端提示待网络连接后出现以下提示时 按按键2AK2触发语音识别功能。此时对着开发板说话语音数据被编码、上传到云端、识别成功后返回相应信息识别失败亦有相应提示。
示例 1:明天上班需要带伞吗 2.给我讲个鬼故事。 3.推荐一部悬疑电影。 4.把空调打开。
以下为一个小的演示视频 http://v.youku.com/v_show/id_XMzQ1NjQ4MjIyOA.html?spma2h3j.8428770.3416059.1
API介绍
1初始化
int pal_init(const struct pal_config *config);
说明 SDK初始化只需调用一次。 入参config结构体向SDK传递必须的参数 返回0成功-1失败
2销毁
void pal_destroy();
说明SDK销毁释放资源。 入参无 返回无
3获取SDK版本
int pal_version();
说明返回SDK的版本号 入参无 返回SDK版本号
4设置日志级别
void pal_set_log_level(int level);
说明设置SDK的日志级别。调试阶段可设置为PAL_LOG_LEVEL_DEBUG方便调试问题调试稳定之后上线前把日志级别设置为PAL_LOG_LEVEL_ERROR。 入参level为SDK的日志级别 返回无
5设置环境
void pal_set_env(int env);
说明设置SDK的环境默认是PAL_ENV_RELEASE在厂商外部环境下可以连接阿里线上环境。厂商无需使用这个接口。 入参env为SDK的环境 返回 无
6厂商播放器向SDK上报消息
int pal_notify_msg(const char *msg);
说明厂商的播放器的状态或者按键事件需要按照Link_Voice_SDK_播控协议_v1.0.0.xlsx定义的json格式上报给SDK与上层应用同步状态。 入参msg为厂商播放器需要向SDK传递的事件消息 返回0成功-1失败
7厂商播放器通过SDK透传ALink消息
int pal_post_alink_msg(const char *msg);
说明SDK初始化过程会把ALink进行初始化与阿里平台保持物联长连接厂商设备需要上报给ALink的消息可通过该接口上报SDK对该消息进行透传上报给ALink服务端。 入参msg为厂商需要通过SDK透传给ALink进行上报的消息格式按照ALink定义的消息格式 返回0成功-1失败
8开始一次语音识别
int pal_asr_start();
说明设备通过按键或者远场唤醒触发语音识别时调用。 入参无 返回0成功-1失败
9发送语音数据
int pal_asr_send_buffer(const char *buffer, int buffer_len);
说明该接口要在调用pal_asr_start成功了之后调用发送语音数据。如果是PCM格式的数据则要求每次640字节。如果返回PAL_VAD_STATUS_STOP则为云端检测到语音结束了厂商这时候可以调用pal_asr_stop或pal_asr_stop_async来获本次识别结果。 入参buffer语音数据buffer_len语音数据长度字节 返回返回云端检测到的VAD状态
10结束本次语音识别同步接口
struct pal_rec_result* pal_asr_stop();
说明pal_rec_result结构体返回本次语音识别的结果同步的接口。结构体里的字段status表示本次语音识别的状态should_restore_player_status表示厂商播放器处理完本次语音识别事件之后是否恢复之前的状态0是不恢复1是恢复asr_result表示ASR识别的文本task_status表示语音识别任务状态PAL_REC_TASK_STATUS_END表示单次语音识别会话结束PAL_REC_TASK_STATUS_WAITING表示多轮对话应当播完TTS之后自动进入拾音状态开始一次新的语音识别。 入参无 返回语音识别结果的结构体
11结束本次语音识别异步接口
void pal_asr_stop_async(pal_asr_callback callback, void *user);
说明异步返回的接口功能与pal_asr_stop一样。 入参callback注册的回调函数用于返回语音识别结果user用户自定义指针在callback中会回传给用户 返回无
12取消本次语音识别
void pal_asr_cancel();
说明取消本次的语音识别。 入参无 返回无
13销毁语音识别结果
void pal_rec_result_destroy(struct pal_rec_result *result);
说明pal_asr_stop和pal_asr_stop_async返回的语音识别结果需要通过该接口来释放资源。 入参result需要销毁的结果 返回无
14文本转语音同步接口
struct pal_rec_result* pal_get_tts(const char *text);
说明提供文本转语音的功能。返回的结果pal_rec_result需要通过pal_rec_result_destroy销毁。 入参text需要转换的文本 返回返回的结构体文本转语音的结果在tts字段中是一个可播放的url。
更多
关于AliOS Things更多信息请参考https://github.com/alibaba/AliOS-Things/wiki 关于Link Voice的更多信息请参考https://iot.aliyun.com/product/voice?spma2c2j.8959409.5007732.14.666018deKqxNU7
识别以下二维码干货