当前位置: 首页 > 科技观察

鸿蒙HarmonyOS开发板讯飞平台+声控开关灯

时间:2023-03-20 15:40:43 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz参考连老师博文:https://harmonyos.51cto.com/posts/1842通过讯飞的开放平台,可以将语音实时转化为文字,实现语音控制开关灯。大体流程如下:1.创建应用,下载sdk,编译demo可执行程序(本文使用LinuxSDK);2、通过应用唯一APPID登录讯飞开放平台;3、用户输入语音,LinuxSDK程序通过麦克风接收语音数据,上传至讯飞开放平台;4、平台返回语音翻译文本,由LinuxSDK程序通过udpsocket通信发送给开发板;5、开发板接收数据,执行控制开关灯动作;平台准备1.讯飞控制台:https://console.xfyun.cn/app/myapp,首先申请一个账号。实名认证后,即可享受免费语音服务;2.新建一个应用;3.下载对应的SDK,编译demo程序。本文使用的LinuxSDK;PC(LinuxSDK)准备1、本文选择与开发板相同位置的wifi下虚拟机,解压Linux_iat1227_5fe1be98.zip,使用demo程序//samples/iat_online_record_sample;2、编译程序,编译成功生成可执行程序iat_online_record_sample;*login_params="appid=5fe1be98,work_dir=.";4、LinuxSDK程序接收平台返回的结果,通过udpsocket向开发板发送数据;staticvoidshow_result(char*string,charis_over){printf("\rResult:[%s]",string);if(is_over){putchar('\n');/*sendto*/structsockaddr_inserv_addr;bzero((char*)&serv_addr,sizeof(serv_addr));serv_addr.sin_family=AF_INET;inet_pton(AF_INET,IP,(void*)&serv_addr.sin_addr);serv_addr.sin_port=htons(PORT);ssize_tsend_len=sendto(SOCKFD,string,strlen(string),0,(conststructsockaddr*)&serv_addr,sizeof(serv_addr));printf("send_len=%ld,[%s]\n",send_len,string);}}开发板准备1.编写udpsocketserver在开发板上编程,根据接收到的命令控制开关灯;bzero(buf,sizeof(buf));recv_len=recvfrom(sockfd,buf,sizeof(buf),0,(structsockaddr*)&cli,&addrlen);if(recv_len>0){printf("recv:len=%u,[%s]\n",recv_len,buf);/*GPIO_10:REDGPIO_11:GREENGPIO_12:YELLOW*/if(strncmp(buf,"开灯",strlen("开灯"))==0){GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10,1);}elseif(strncmp(buf,"Turnoffthelight",strlen("Turnoffthelight"))==0){GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10,0);}else{printf("Unknowncommand.\n");}}总体测试1.启动开发板并连接好wifi,监听udp端口;IP:192.168.124.14端口:12345;2、启动LinuxSDK演示程序,./iat_online_record_sample;IP:192.168.124.10;3、用户对PC麦克风输入语音“开灯”,打印信息如下,接收讯飞平台发来的文本,发送数据给开发板;4、开发板接收到数据,打印信息如下,GPIO控制灯亮;5、用户向PC麦克风输入语音“关灯”,打印信息如下,并接收到讯飞平台文本,向开发板发送数据;6、开发板接收到数据,打印信息如下,GPIO控制灯灭;以上就是分享的全部内容,感谢观看?版权归作者及HarmonyOS技术社区所有注明出处,否则追究法律责任。更多信息请访问:与华为官方共同建立的鸿蒙科技社区https://harmonyos.51cto.com/#zz