• #2020征文开发板# 讯飞平台+语音控制开关灯


    目录:

    平台准备

    PC(Linux SDK)准备

    开发板准备

    总体测试

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

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

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

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

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

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

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

    #2020征文-开发板# 讯飞平台+语音控制开关灯


    平台准备

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

    2、创建新应用;

    #2020征文-开发板# 讯飞平台+语音控制开关灯3、下载对应的SDK,编译demo程序,本文采用的Linux SDK;

    #2020征文-开发板# 讯飞平台+语音控制开关灯

    PC(Linux SDK)准备

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

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

    cd samples/iat_online_record_sample
    source 64bit_make.sh

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

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

    #2020征文-开发板# 讯飞平台+语音控制开关灯

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

    static void show_result(char *string, char is_over)
    {
        printf("\rResult: [ %s ]", string);
        if(is_over)
        {   
            putchar('\n');
            /* sendto */
            struct sockaddr_in serv_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_t send_len = sendto(SOCKFD, string, strlen(string), 0,
                    (const struct sockaddr *)&serv_addr, sizeof(serv_addr));
            printf("send_len=%ld, [%s]\n", send_len, string);
        }   
    }

    开发板准备

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

            bzero(buf, sizeof(buf));
            recv_len = recvfrom(sockfd, buf, sizeof(buf), 0,
                    (struct sockaddr *)&cli, &addrlen);
            if(recv_len > 0)
            {   
                printf("recv: len=%u, [%s] \n", recv_len, buf);
                /*  
                    GPIO_10: RED
                    GPIO_11: GREEN
                    GPIO_12: YELLOW
                 */
                if(strncmp(buf, "开灯", strlen("开灯")) == 0)
                {   
                    GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 1); 
                }   
                else if(strncmp(buf, "关灯", strlen("关灯")) == 0)
                {   
                    GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0); 
                }   
                else
                {   
                    printf("Unknown command.\n");
                }   
            }

    查看更多章节>>> 

    作者: HarryP0tter

    想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/

  • 相关阅读:
    HTML5 表单自学记录
    HTML5表单
    HTML不常用的表单属性-fieldset
    HTML5-Y音频与视频
    解决HTML5标签兼容的办法搜集
    HTML5标签的兼容处理
    HTML5-语义化标签
    JS自学大全
    HTML5增强的表单
    照片格式的区别
  • 原文地址:https://www.cnblogs.com/HarmonyOS/p/14228676.html
Copyright © 2020-2023  润新知