离线语音风扇设计应用案例_.智能风扇用例建模(以“语音控制”场景为例)-程序员宅基地

技术标签: 人工智能  语音识别  

1 概述

随着人们生活水平的提高,对产品的功能要求也越来越高,追求舒适的体验感,特别是对操控性的要求越来越高。目前风扇产品的控制方式有以下几类:

  • 按键控制:传统控制方式,每次要走到风扇边才行,操作麻烦;
  • 遥控控制:采用红外遥控或者蓝牙遥控,方便远距离控制,但遥控器容易丢,放置也麻烦。且遥控器上按键较少,当风扇功能多的时候无法用单次按键控制全部的功能,组合按键不符合人们使用习惯;
  • 手机APP控制:每次控制需要打开手机APP,需要联网,同时风扇需配网,操作繁琐;
  • 智能音箱控制:通过如天猫精灵等智能音箱直接控制,相对方便,但音箱需联网状态下才可使用,识别时有隐私安全问题,网络延时大时控制的实时性不好。

为了解决以上痛点,可以采用纯离线语音识别进行控制,在成本增加不大的情况下,为产品带来更多的亮点和竞争力。启英泰伦针对该产品领域,已开发了整套离线语音风扇方案,下面对该方案进行介绍。


2 方案优势

启英泰伦离线语音风扇相对传统风扇方案,可让用户通过语音控制风扇设备,替换传统遥控器或按钮控制的方式,该方案有以下优势:

  • 可以直接使用语音控制风扇,且无需联网,自然方便,识别率可达95%以上;
  • 语音控制响应快,一般在0.2~0.8s内完成;
  • 可远场识别,安静情况下可达10米;
  • 方案功耗低,工作功耗仅为0.2W左右;
  • 可靠性好,芯片方案已通过双85测试,满足格力、美的等家电巨头要求;
  • 整套产品技术已成熟,具有完整的软件、硬件、结构设计方案,节省开发周期,降低开发难度;
  • 配合我司语音AI平台开发,可灵活定制唤醒词和命令词,不需要再专门收集语料训练。


3 应用描述

风扇产品按照使用电源类型可分为交流电风扇、直流电风扇和交直流电风扇三类,其类型可以分为台扇、吊扇、落地扇、无叶风扇等。启英泰伦离线语音风扇方案适用于各类风扇,其中尤其在落地扇上面的应用较多。

语音风扇产品的使用场景为普通家居环境,在安静和中低噪音下可以达到良好的识别率。其中安静环境的环境底噪在35dB ~ 45dB之间,属于中低噪音环境;开启风扇后环境噪音可达45dB ~ 65dB之间。该噪音环境下可以直接选用我司单麦克风语音模块,如CI-B0XGS01S或CI-B0XGS01S-H模块,以达到比较好的性价比。

特别注意,不同的风扇运行过程中,因为扇叶大小和叶片数量,风量大小差异,运行产生的风噪大小也有不小的差异,为了达到最好的语音识别效果,在设计风扇整机结构时,因注意控制噪音小于65dB。


4 产品设计流程

一个基于我司芯片的标准语音产品设计流程如下图所示:

该流程主要针对我司新用户开发产品使用,包含了前期购买样品Demo进行验证,硬件选型,语音对话逻辑、软硬件方案和结构设计,设计完成后的测试,以及生产测试准备和后续批量采购等步骤。如果是已经熟悉我司方案的老用户,可以直接从中间步骤开始,不用再重复进行Demo测试等工作。

下面针对新用户的开发,对上述流程中的各个步骤逐一描述。

4.1 DEMO测试

针对新用户,可以先从我司授权的经销商或直接从我司官网 ☞样品购买 处购买对应的模块或开发板套件,进行识别效果测试,相关的软硬件技术文档可以从本文档中心处获取。用户测试满意后,可以进行硬件选型。

4.2 选型指南

用户硬件选型可以直接参考 ☞硬件选型 ,如果用户想快速产品化,推荐直接使用我司已设计好的标准模块;如果现有标准模块无法满足产品的结构需求,也可以选用合适的芯片进行硬件板的设计。

4.3 方案设计

选择好合适的芯片或模块后,可根据产品的功能进行下述设计:

如用户为首次进行语音方案开发,建议到 ☞启英泰伦语音AI平台 上获取基于相关芯片的语音产品方案设计Checklist文档,进行逐一检查以确保设计效果。如有技术支持需求请联系我司技术支持人员。

4.4 测试验收

产品方案设计完成形成样品后,建议对该样品进行相关的识别测试,相关测试方法和标准可参考 ☞识别效果测试。同时,还建议根据产品质量的要求进行各类硬件测试,如双85测试、静电测试等。为了保证最终的识别效果,还建议进行硬件底噪的测试及产品装机后的整机功能测试。

4.5 生产测试

样机测试完成后,会转入后续产线批量生产阶段。我司为产品的批量生产做了完善的解决方案,用户可以参考 ☞生产测试 获取更多信息。用户如需要生产测试的相关技术支持,请联系我司技术人员。

4.6 下单采购

用户如果要采购我司产品样品,请点击 ☞样品购买 ,也可以点击 ☞样品和批量采购 获取更多信息。


5 风扇设计方案介绍

5.1 主控方案

5.1.1 方案特点

我司的CI110X芯片内置多个IO,可直接取代传统电控风扇中的单片机控制方案,实现单芯片完成语音控制和主控控制,整体成本较低,但需要做语音和主控的开发,前期开发周期长。

为了方便用户使用,我司已提前做了相应的开发,可以提供完整的语音风扇主控方案。

5.1.2 方案框图

整个方案如上图所示,CI110X芯片作为主控,可以通过麦克风采集外部语音进行识别,通过功放驱动喇叭播音。如为省成本,还可以将功放和喇叭换为蜂鸣器。CI110X芯片还可以接受外部按键及红外信号,兼容传统控制方式。

CI110X芯片可支持数码管显示,以及控制外部的驱动电路,实现电机的控制,可以很好的用一个单芯片实现风扇的全部控制功能。

5.1.3 硬件设计参考

​风扇电控板的一个硬件参考线路图及IO使用情况见下图,用户可以使用CI110X芯片按照相同的IO使用方式设计硬件电路,可以方便的搭建整套风扇方案。

5.1.4 主控方案SDK包说明

我司为用户基于上述硬件设计,提供了完整的SDK包,用户可以到 ☞启英泰伦语音AI平台 上获取相关SDK开发包。

本SDK包有以下功能点:

  • 控制方式:支持蓝牙、红外、按键、语音;
  • 风扇模式:支持正常风、自然风、睡眠风、智能风;
  • 摇头方式:支持左右摇头、上下摇头、3D摇头;
  • 定时功能:支持定时关机功能,可按整数定时1 ~ 15小时。

本SDK包中使用到了硬件timer,使用方式如下:

  1. 硬件TIMER0:转速电机控制(不归零码NRZ编码,使用一个IO脚);
  2. 硬件TIMER1:红外接收控制;
  3. 硬件TIMER2:蓝牙接收控制(注意,蓝牙接收的数据和红外接收模块基本相同);
  4. 硬件TIMER3:蜂鸣器控制和摇头电机控制。

为了方便代码的移植,每个外设驱动和风扇应用代码都是单独的文件夹,目录说明如下:

目录地址 目录说明 功能描述
..\components\ir..\components\ir_remote_driver\ 红外驱动目录(有些蓝牙也是单线通讯方式,与红外的驱动基本一致) 红外接收功能,接收后的数据会队列通知到deal_userdef_msg,红外的长度可以根据宏定义配置。
#宏定义 #define IR_MAX_DATA_COUNT 120最大红外个数
..\components\motor_driver\ 电机驱动目录 当前支持5104的不归零码协议,后续如有其它驱动,CI可以支持
..\components\ci_key\ 使用了2个Touch IC芯片(如品腾PT8041),控制7个按键 触摸不同的按键,对应不同的adc数值,故使用两个ADIO 做按键驱动,根据客户的实际产品,请自行调整
..\components\digital_tube\ 数码管驱动目录 IO 与LED 进行复用。目前支持的是两个数码管+8个LED
..\components\temperature_sensor\ 温度传感器驱动目录 使用AD+热敏电阻实现,产品可以根据温度进行智能调节风量
..\components\buzzer\ 蜂鸣器驱动目录 采用定时器默认4Khz进行声音提示,可以更改 #define BUZZER_HZ 进行配置,单位HZ
..\sample\internal\sample_1102\src\user_msg_deal.c 风扇应用层代码 根据红外,按键,语音识别的消息进行电机的应用控制

针对SDK中一些重要的变量和函数进行说明:

风扇状态变量:

typedef struct
{
    unsigned short user_code : 4 ;//用户码固定位 b'1010*
    unsigned short positive : 2 ;//正转b'00 反转b'11*
    unsigned short sync_motor: 2 ;//同步电机1 停止b'00 同步电机停止b'10*
    unsigned short speed_bit: 8 ;//电机工作范围25~255 0表示电机停止*
    unsigned char mode; //0:正常风 1:自然风 2:睡眠风 3:智能风*
    short time; //0~15H*
    unsigned char led; //1开,0关*
    unsigned char head; //0关闭 1:左右 2:上下 3:3D*
    unsigned char gear; //0关闭 1~24*
}motor_status_struct_data;

风扇初始化函数

路径: ..\sample\internal\sample_1102\src\user_msg_deal.c

/*\* @breif 风扇初始化函数**/
void fan_init(void)
{
//风扇状态初始化
  motor_status.user_code = 0xa;
  motor_status.sync_motor = 0x0;
  motor_status.speed_bit = 0x0;
  motor_status.positive = 0x00;
  motor_status.mode = 0;
  motor_status.head = 0;
  motor_status.led = 1;
  motor_status.gear = 0;
  motor_status.time = 0;
  /*风扇软件初始化*/
  extern void  user_fan_soft_init(void);
  user_fan_soft_init();

  //电机初始化
  agreement_5104_app_init();
  //红外初始化
  extern void ir_test_recive(void);
  ir_test_recive();
  //蓝牙初始化
  extern void bt_test_recive(void);
  bt_test_recive();
  //按键初始化
  extern void ci_key_init(void);
  ci_key_init();
  //数码管初始化
  extern int digital_tube_init(void);
  digital_tube_init();
  //蜂鸣器初始化
  buzzer_init();

  //同步电机2初始化
  sync_motor2_hw_init();

  //温度传感器初始化
  temp_sensor_init();
}

风扇应用任务处理

语音入口和标准SDK一致无改动,蓝牙、语音、按键、红外通过队列sys_msg_queue发送消息到UserTaskManageProcess任务。相关控制处理入口入下图所示例:

uint32_t deal_userdef_msg(sys_msg_t *msg)
{
    uint32_t ret = 1;
    switch(msg->msg_type)
    {
    /* 按键消息 */
        case SYS_MSG_TYPE_KEY:
        {
            sys_msg_key_data_t *key_rev_data;
            key_rev_data = &msg->msg_data.key_data;
            userapp_deal_key_msg(key_rev_data);
            break;
        }
        /* 红外消息 */
        case SYS_MSG_TYPE_IR:
        {
            sys_msg_ir_data_t *ir_rev_data;
            ir_rev_data = &msg->msg_data.ir_data;
            userapp_deal_ir_msg(ir_rev_data);
            break;
        }
        /* 蓝牙消息*/
        case SYS_MSG_TYPE_BT:
        {
            sys_msg_bt_data_t *bt_rev_data;
            bt_rev_data = &msg->msg_data.bt_data;
            userapp_deal_bt_msg(bt_rev_data);
            break;
        }
        #if MSG_COM_USE_UART_EN
        /* CI串口协议消息 */
        case SYS_MSG_TYPE_COM:
        {
            sys_msg_com_data_t *com_rev_data;
            com_rev_data = &msg->msg_data.com_data;
            userapp_deal_com_msg(com_rev_data);
            break;
        }
        #endif
        /* CI IIC 协议消息 */
        #if MSG_USE_I2C_EN
        case SYS_MSG_TYPE_I2C:
        {
            sys_msg_i2c_data_t *i2c_rev_data;
            i2c_rev_data = &msg->msg_data.i2c_data;
            userapp_deal_i2c_msg(i2c_rev_data);
            break;
        }
        #endif
        default:
        break;
    }
    return ret;
}

5.2 配合主控板的串口通讯方案

5.2.1 方案特点

如用户不愿意替换原先使用的电控板,也可以用我司的芯片设计语音控制板,和原电控板通过串口进行通讯,也可以实现语音风扇的产品设计。该方式开发相对简单,可以快速对接完成产品,但成本略高,适用于需快速出产品的的方案或者第一次接触语音识别的方案。

该方案的设计框图如下,语音模块与电控模块需要4根线的串口连接,语音模块进行语音识别及根据风扇的状态进行信息播放,控制由电控模块完成。

5.2.2 硬件设计参考

用户可以使用我司芯片设计需要要求的语音模块,但为快速开发,推荐直接使用我司的以下标准模块:

  • CI-B02GS03T:适合空间比较高,纵深长的结构,串口接口电平为3.3V;
  • CI-B02GS01S:适合空间比较矮的结构,串口接口电平为3.3V;
  • CI-B02GS01J:适合有空间放置固定语音模块的结构,原来的风扇硬件改动较小,串口接口电平为5V。

用户直接使用我司标准语音模块时,有以下注意事项:

  • 将语音模块板的串口跟电控串口对接,注意电控的供电需要大于1A;
  • 注意串口的电平要匹配,CI-B02GS01J支持5V电平,其他的模块支持3.3V,如果电控板使用5V电平,CI-B02GS01J可以对接直接串口,其它模块需要增加电平转换电路,如下图所示:

5.2.3 串口通讯方式

语音模块与电控模块通过串口进行信息交互,主要有两种方式,一种为语音模块主动播放,同时将信息发电控模块;另一种为语音模块被动播放,其分别描述如下:

语音模块主动播放模式

主动播放方式主要执行以下动作:

  1. 识别到词条,主动播放反馈声音;
  2. 将此条信息串口告知电控模块;
  3. 电控模块执行动作。

该方式的优点在于控制方式简单,由语音模块单线输出信息给电控模块。但缺点在于无法根据风扇的情况及按键情况进行语音反馈。

语音模块被动播放模式

被动播放方式主要执行以下动作:

  1. 语音模块识别到词条;
  2. 将词条信息串口告知电控模块;
  3. 电控模块执行相关动作;
  4. 告知语音模块需要播放的内容;
  5. 语音模块根据电控模块反馈进行播放。

该方式的优点在于语音模块根据电控模块的状态进行播放对应内容,可以进行最合适的反馈,体验感好;同时如果电控模块通过按键或者遥控进行控制,语音模块也可以进行状态播放。缺点在于会多一次串口通信的过程。

5.2.4 SDK包说明和模块串口通讯协议

我司为用户提供了串口通讯方案完整的SDK包,用户可以到 ☞启英泰伦语音AI平台 上获取相关SDK开发包。

模块的串口通讯建议使用我司标准协议,具体格式请参考 ☞串口协议 。

以下是语音模块发给电控模块的一个命令词及协议参考:

命令词 帧头 长度 类型 命令 序号 语音ID 保留 分数 累加和 帧尾
小艾小艾 A5 FC 07 00 A0 91 XX 00 00 00 00 00 00 XX XXXX FB
开风扇 A5 FC 07 00 A0 91 XX 42 19 74 02 00 00 XX XXXX FB
打开风扇 A5 FC 07 00 A0 91 XX 41 19 74 02 00 00 XX XXXX FB
关风扇 A5 FC 07 00 A0 91 XX 82 19 74 02 00 00 XX XXXX FB
关闭风扇 A5 FC 07 00 A0 91 XX 81 19 74 02 00 00 XX XXXX FB
开摇头 A5 FC 07 00 A0 91 XX 86 22 74 02 00 00 XX XXXX FB
打开摇头 A5 FC 07 00 A0 91 XX 85 22 74 02 00 00 XX XXXX FB
风扇摇头 A5 FC 07 00 A0 91 XX 81 22 74 02 00 00 XX XXXX FB
关摇头 A5 FC 07 00 A0 91 XX C5 22 74 02 00 00 XX XXXX FB
关闭摇头 A5 FC 07 00 A0 91 XX C4 22 74 02 00 00 XX XXXX FB
停止摇头 A5 FC 07 00 A0 91 XX C1 22 74 02 00 00 XX XXXX FB
风大点 A5 FC 07 00 A0 91 XX E1 38 BC 02 00 00 XX XXXX FB
风大一点 A5 FC 07 00 A0 91 XX 72 1A 98 01 00 00 XX XXXX FB
风大一些 A5 FC 07 00 A0 91 XX 73 1A 98 01 00 00 XX XXXX FB
风再大点 A5 FC 07 00 A0 91 XX 74 1A 98 01 00 00 XX XXXX FB
风小一点 A5 FC 07 00 A0 91 XX 75 1A 98 01 00 00 XX XXXX FB
风小一些 A5 FC 07 00 A0 91 XX 76 1A 98 01 00 00 XX XXXX FB
风小点 A5 FC 07 00 A0 91 XX 5F 39 BC 02 00 00 XX XXXX FB
风再小点 A5 FC 07 00 A0 91 XX 77 1A 98 01 00 00 XX XXXX FB
最大风 A5 FC 07 00 A0 91 XX C7 39 BC 02 00 00 XX XXXX FB
最小风 A5 FC 07 00 A0 91 XX 48 3A BC 02 00 00 XX XXXX FB
定时关机 A5 FC 07 00 A0 91 XX 01 0F 95 01 00 00 XX XXXX FB
关闭定时 A5 FC 07 00 A0 91 XX 44 0E 95 01 00 00 XX XXXX FB
睡眠风 A5 FC 07 00 A0 91 XX 82 27 74 02 00 00 XX XXXX FB
自然风 A5 FC 07 00 A0 91 XX 03 28 74 02 00 00 XX XXXX FB
正常风 A5 FC 07 00 A0 91 XX C1 CB 94 01 00 00 XX XXXX FB
声音大点 A5 FC 07 00 A0 91 XX 47 19 94 01 00 00 XX XXXX FB
声音小点 A5 FC 07 00 A0 91 XX 87 19 94 01 00 00 XX XXXX FB
定时一小时 A5 FC 07 00 A0 91 XX 02 37 95 01 00 00 XX XXXX FB
定时两小时 A5 FC 07 00 A0 91 XX 82 37 95 01 00 00 XX XXXX FB
定时二小时 A5 FC 07 00 A0 91 XX 83 37 95 01 00 00 XX XXXX FB
定时三小时 A5 FC 07 00 A0 91 XX 01 38 95 01 00 00 XX XXXX FB
定时四小时 A5 FC 07 00 A0 91 XX 81 38 95 01 00 00 XX XXXX FB
定时五小时 A5 FC 07 00 A0 91 XX 01 39 95 01 00 00 XX XXXX FB
定时六小时 A5 FC 07 00 A0 91 XX 81 39 95 01 00 00 XX XXXX FB
开一档 A5 FC 07 00 A0 91 XX 41 3F 94 01 00 00 XX XXXX FB
开二档 A5 FC 07 00 A0 91 XX C1 3E 94 01 00 00 XX XXXX FB
开三档 A5 FC 07 00 A0 91 XX 01 3F 94 01 00 00 XX XXXX FB
开四档 A5 FC 07 00 A0 91 XX 41 3F 94 01 00 00 XX XXXX FB
开五档 A5 FC 07 00 A0 91 XX 81 3F 94 01 00 00 XX XXXX FB
开六档 A5 FC 07 00 A0 91 XX C1 3F 94 01 00 00 XX XXXX FB
开七档 A5 FC 07 00 A0 91 XX 01 40 94 01 00 00 XX XXXX FB
开八档 A5 FC 07 00 A0 91 XX 41 40 94 01 00 00 XX XXXX FB
开九档 A5 FC 07 00 A0 91 XX 81 40 94 01 00 00 XX XXXX FB
退出唤醒 A5 FC 02 00 A3 9A XX 00 B2 XXXX FB

以下是一个电控模块发给语音模块的通讯协议参考:

对应播报音 帧头 长度 类型 命令 序号 控制 播放类型 播放序号 保留 累加和 帧尾
小艾小艾 A5 FC 07 00 A1 92 XX 80 92 01 00 00 00 0 XXXX FB
开风扇 A5 FC 07 00 A1 92 XX 80 92 02 00 00 00 0 XXXX FB
打开风扇 A5 FC 07 00 A1 92 XX 80 92 03 00 00 00 0 XXXX FB
关风扇 A5 FC 07 00 A1 92 XX 80 92 04 00 00 00 0 XXXX FB
关闭风扇 A5 FC 07 00 A1 92 XX 80 92 05 00 00 00 0 XXXX FB
开摇头 A5 FC 07 00 A1 92 XX 80 92 06 00 00 00 0 XXXX FB
打开摇头 A5 FC 07 00 A1 92 XX 80 92 07 00 00 00 0 XXXX FB
风扇摇头 A5 FC 07 00 A1 92 XX 80 92 08 00 00 00 0 XXXX FB
关摇头 A5 FC 07 00 A1 92 XX 80 92 09 00 00 00 0 XXXX FB
关闭摇头 A5 FC 07 00 A1 92 XX 80 92 0A 00 00 00 0 XXXX FB
停止摇头 A5 FC 07 00 A1 92 XX 80 92 0B 00 00 00 0 XXXX FB
风大点 A5 FC 07 00 A1 92 XX 80 92 0C 00 00 00 0 XXXX FB
风大一点 A5 FC 07 00 A1 92 XX 80 92 0D 00 00 00 0 XXXX FB
风大一些 A5 FC 07 00 A1 92 XX 80 92 0E 00 00 00 0 XXXX FB
风再大点 A5 FC 07 00 A1 92 XX 80 92 0F 00 00 00 0 XXXX FB
风小一点 A5 FC 07 00 A1 92 XX 80 92 10 00 00 00 0 XXXX FB
风小一些 A5 FC 07 00 A1 92 XX 80 92 11 00 00 00 0 XXXX FB
风小点 A5 FC 07 00 A1 92 XX 80 92 12 00 00 00 0 XXXX FB
风再小点 A5 FC 07 00 A1 92 XX 80 92 13 00 00 00 0 XXXX FB
最大风 A5 FC 07 00 A1 92 XX 80 92 14 00 00 00 0 XXXX FB
最小风 A5 FC 07 00 A1 92 XX 80 92 15 00 00 00 0 XXXX FB
定时关机 A5 FC 07 00 A1 92 XX 80 92 16 00 00 00 0 XXXX FB
关闭定时 A5 FC 07 00 A1 92 XX 80 92 17 00 00 00 0 XXXX FB
睡眠风 A5 FC 07 00 A1 92 XX 80 92 18 00 00 00 0 XXXX FB
自然风 A5 FC 07 00 A1 92 XX 80 92 19 00 00 00 0 XXXX FB
正常风 A5 FC 07 00 A1 92 XX 80 92 1A 00 00 00 0 XXXX FB
声音大点 A5 FC 07 00 A1 92 XX 80 92 1B 00 00 00 0 XXXX FB
声音小点 A5 FC 07 00 A1 92 XX 80 92 1C 00 00 00 0 XXXX FB
定时一小时 A5 FC 07 00 A1 92 XX 80 92 1D 00 00 00 0 XXXX FB
定时两小时 A5 FC 07 00 A1 92 XX 80 92 1E 00 00 00 0 XXXX FB
定时二小时 A5 FC 07 00 A1 92 XX 80 92 1F 00 00 00 0 XXXX FB
定时三小时 A5 FC 07 00 A1 92 XX 80 92 20 00 00 00 0 XXXX FB
定时四小时 A5 FC 07 00 A1 92 XX 80 92 21 00 00 00 0 XXXX FB
定时五小时 A5 FC 07 00 A1 92 XX 80 92 22 00 00 00 0 XXXX FB
定时六小时 A5 FC 07 00 A1 92 XX 80 92 23 00 00 00 0 XXXX FB
开一档 A5 FC 07 00 A1 92 XX 80 92 24 00 00 00 0 XXXX FB
开二档 A5 FC 07 00 A1 92 XX 80 92 25 00 00 00 0 XXXX FB
开三档 A5 FC 07 00 A1 92 XX 80 92 26 00 00 00 0 XXXX FB
开四档 A5 FC 07 00 A1 92 XX 80 92 27 00 00 00 0 XXXX FB
开五档 A5 FC 07 00 A1 92 XX 80 92 28 00 00 00 0 XXXX FB
开六档 A5 FC 07 00 A1 92 XX 80 92 29 00 00 00 0 XXXX FB
开七档 A5 FC 07 00 A1 92 XX 80 92 2A 00 00 00 0 XXXX FB
开八档 A5 FC 07 00 A1 92 XX 80 92 2B 00 00 00 0 XXXX FB
开九档 A5 FC 07 00 A1 92 XX 80 92 2C 00 00 00 0 XXXX FB

注意:

  1. ASR语言模型中文建议选择SE146,其他语种请使用对应语种的模型。风扇产品自带运行噪音,如果风扇本身噪音大于60db,建议打开降噪功能。
  2. 串口设置:
    • 波特率:9600
    • 停止位:1
    • 数据位:8
    • 奇偶校验:无
  3. 代码中通过判断 “命令+语音ID”获取是什么指令和功能。
  4. 发送的串口信息建议要检查完整性,可以用以下的checksum参考代码来实现。
#define VMUP_MSG_DATA_MAX_SIZE (20)//可根据实际数据大小调整

#pragma pack(1)
typedef struct
{
    uint16_t header;
    uint16_t data_length;
    uint8_t msg_type;
    uint8_t msg_cmd;
    uint8_t msg_seq;
    uint8_t msg_data[VMUP_MSG_DATA_MAX_SIZE];
    /*uint16_t chksum; send add auto*/
    /*uint8_t tail; send add auto*/
}sys_msg_com_data_t;
#pragma pack()

unsigned short Uart_Checksum(sys_msg_com_data_t * msg)
{
    unsigned char i;
    unsigned short t16_lenth;
    unsigned short t16_check = 0;
    uint8_t* rxbuf = uint8_t*&msg->msg_type

    t16_lenth = msg->data_length + 3;//cmd_type,cmd,sequence 加上data数据的长度 
    if(t16_lenth > VMUP_MSG_DATA_MAX_SIZE + 3)//data length error
    {
        return 0xffff;
    } 
    for(i=4;i<t16_lenth;i++)
    {
        t16_check +=  rxbuf[i];
    }
    return t16_check;
}

6 产品结构相关注意事项

6.1 麦克风结构设计

风扇产品在设计结构时,针对麦克风应当注意以下事项:

  • 麦克风布局尽量远离风扇的风面及电机;
  • 麦克风放在风扇的正面/顶部/底部/的位置避免遮挡,保证拾音最大范围;
  • 分贝仪测试最大风速下,麦克风处的稳态噪声需小于60dB;
  • 麦克风连线较长可选择带屏蔽的线;
  • 麦克风线扎捆远离电机或电控线。

下图以落地风扇为例,讲述麦克风结构开孔及位置的建议方式,固定麦克风的结构件也需要考虑麦克风线方便引出导线和避免干扰。

6.2 喇叭结构设计

风扇产品在设计结构时,针对喇叭应当注意以下事项:

  • 考虑到音质,喇叭功率不能太小,建议选用1W以上喇叭,带音腔的喇叭效果会更好一点,同时注意硬件板上的功放驱动能力要匹配喇叭型号;
  • 喇叭放置位置以美观及结构布局方便为主,但注意尽量避免和麦克风放在同一位置;
  • 不带音腔喇叭可以在结构上做一个音腔密封后能增大音量输出。

下图是一个喇叭规格及开孔的建议。

6.3 其它注意事项

  • 建议选择-32dB±3dB,信噪比大于70dB以上,性价比高的全向模拟麦克风;
  • 若风扇旋转震动比较大,选择较厚的麦克风胶套减缓震动,可减小对识别效果的影响;
  • 某些显控板在底盘上的落地风扇,或类似易接触水或积累灰尘的风扇,需要选择防水防尘的麦克风;
  • 特别注意禁止直接点热溶胶用于固定麦克风头;
  • 将麦克风完全插入固定孔内部,避免歪斜,拾音孔中心孔对准麦克风的中心;
  • 风扇内部接线多容易扯松,插头配插座带卡扣会更牢固;
  • 选择符合环保RoHS要求的RTV硅胶,推荐常用的硅胶有703/704/737等,或其它有机材料、单组分室温固化硅胶等;
  • 多数硅橡胶灌胶厚度小于3mm以内实温完全固化时间为8 ~ 12小时,灌胶厚度 > 3mm以上完全固化时间更长,可分层多次浇灌,确保完全固化稳定密封;
  • 生产工艺可把固定麦克风工序提前,另外特别注意麦克风接线在重力拉扯下,未完全固化前容易导致麦克风扯歪,也需注意将麦克风插线固定好。


7 相关参考资料列表

编号 参考资料描述 获取方式
1 标准离线SDK
CI110X_SDK_ASR_Offline
请到 ☞启英泰伦语音AI平台 上获取
2 风扇SDK Demo:
主控方案SDK
串口通讯方案SDK
请到 ☞启英泰伦语音AI平台 上获取
3 测试固件 到 ☞启英泰伦语音AI平台 上获取
4 我司芯片和模块的选型指南 请点击 ☞硬件选型指南 查看
5 我司芯片硬件设计方法参考 请点击 ☞硬件设计参考 查看
6 麦克风和喇叭器件选型 请点击 ☞外围器件兼容列表 查看
7 产品结构设计 请点击 ☞产品结构设计 查看
8 软件开发方法和标准SDK说明 请点击 ☞软件开发 查看各部分内容
9 产品识别性能测试方法 请点击 ☞识别效果测试 查看
10 生产测试的方法 请点击 ☞生产测试 查看

用户如遇到使用问题,请到启英泰伦语音AI平台上提交技术工单,或直接联系我司技术人员获取协助。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/CI0412/article/details/122730928

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文