文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

鸿蒙HarmonyOS开发板讯飞平台+语音控制开关灯

2024-12-03 13:48

关注

 想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/

参考连老师博文:https://harmonyos.51cto.com/posts/1842

通过讯飞开放平台可以将语音实时转换为文字,我们可以实现语音控制开关灯。大致流程如下:

创建应用,下载sdk,编译demo可执行程序(本文采用的Linux SDK);

通过应用的唯一APPID,登录到讯飞开放平台;

用户输入语音,Linux SDK程序通过麦克风接收到语音数据,上传到讯飞开放平台;

平台返回语音翻译的文字,由Linux SDK程序通过udp socket通信的方式发送给开发板;

开发板接收到数据,执行控制开关灯的动作;

平台准备

讯飞控制台:https://console.xfyun.cn/app/myapp,首先申请账号。实名认证后可以领取免费的语音服务;

创建新应用;

下载对应的SDK,编译demo程序,本文采用的Linux SDK;


PC(Linux SDK)准备

本文选择的是和开发板位于同一wifi下的虚拟机,解压Linux_iat1227_5fe1be98.zip,采用demo程序//samples/iat_online_record_sample;

编译程序,编译成功生成可执行程序iat_online_record_sample;

  1. cd samples/iat_online_record_sample 
  2. source 64bit_make.sh 

 3、登录平台应用需要唯一的APPID即可;

  1. const char* login_params = "appid = 5fe1be98, work_dir = ."

 

Linux SDK程序接收到平台返回结果,通过udp socket发送数据到开发板;

  1. static void show_result(char *string, char is_over) 
  2.     printf("\rResult: [ %s ]", string); 
  3.     if(is_over) 
  4.     {    
  5.         putchar('\n'); 
  6.          
  7.         struct sockaddr_in serv_addr; 
  8.         bzero((char *) &serv_addr, sizeof(serv_addr)); 
  9.         serv_addr.sin_family = AF_INET; 
  10.         inet_pton(AF_INET, IP, (void *)&serv_addr.sin_addr); 
  11.         serv_addr.sin_port = htons(PORT); 
  12.         ssize_t send_len = sendto(SOCKFD, string, strlen(string), 0, 
  13.                 (const struct sockaddr *)&serv_addr, sizeof(serv_addr)); 
  14.         printf("send_len=%ld, [%s]\n", send_len, string); 
  15.     }    

 开发板准备

开发板编写一个udp socket server程序,根据接收到的命令控制开关灯;

  1. bzero(buf, sizeof(buf)); 
  2.         recv_len = recvfrom(sockfd, buf, sizeof(buf), 0, 
  3.                 (struct sockaddr *)&cli, &addrlen); 
  4.         if(recv_len > 0) 
  5.         {    
  6.             printf("recv: len=%u, [%s] \n", recv_len, buf); 
  7.              
  8.             if(strncmp(buf, "开灯", strlen("开灯")) == 0) 
  9.             {    
  10.                 GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 1);  
  11.             }    
  12.             else if(strncmp(buf, "关灯", strlen("关灯")) == 0) 
  13.             {    
  14.                 GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);  
  15.             }    
  16.             else 
  17.             {    
  18.                 printf("Unknown command.\n"); 
  19.             }    
  20.         } 

 总体测试

启动开发板,连接好wifi,监听udp端口;IP:192.168.124.14 PORT:12345;

启动Linux SDK demo程序,./iat_online_record_sample;IP:192.168.124.10;

用户对PC麦克风输入语音“开灯”,打印信息如下,接收讯飞平台文字,发送数据到开发板;

开发板接收到数据,打印信息如下,GPIO控制灯亮;


用户对PC麦克风输入语音“关灯”,打印信息如下,接收讯飞平台文字,发送数据到开发板;


开发板接收到数据,打印信息如下,GPIO控制灯灭;


以上就是分享的全部内容,谢谢观看。

©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/

 

来源:鸿蒙社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯