基于STM32 的辨音识别系统的设计与应用

2024-02-22 09:48张明存刘明明
科学技术创新 2024年3期
关键词:水杯傅里叶时域

李 棚,孔 健,叶 飞,张明存,刘明明

(1.六安职业技术学院,安徽 六安;2.合肥幼儿师范高等专科学校,安徽 合肥)

引言

声音识别技术作为新一代识别技术,已经应用在许多特殊领域[1-2]。音调、响度、音色是声音的三个主要的要素,对三个要素中的部分参数进行数字化,可以实现物理参数的测量[3]。通过对音调频率分量的分析,可以判断变压器,齿轮的工作状态,做到在线检测,通过对家禽(猪,鸡,羊等)鸣叫声音的识别,能够有效的判断家禽的健康状态,避免大规模家禽致病,已经开展了相关研究[4-6]。

相对于大规模语音识别系统,采用嵌入式芯片为核心的数据采集系统,通过算法实现快速音频转换和识别,具有很大的应用前景。为了有效的验证音频识别的准确度,采用STM32 针对5 个不同的水杯进行音频学习和识别,然后能够快速识别水杯的序号。从而验证了声音识别系统的可靠性,为后续向行业应用场景迁移打下基础。

1 系统方案

若要实现待测音频信号的频率检测,需要采用声音采集模块将声音信号转换成电信号,采用放大电路对电信号进行适当放大,放大后的信号通过A/D 转换模块采集到处理器中,在处理器中进行数字信号处理(DSP),处理后的数据在通过显示模块进行显示,系统方案如图1 所示。其中,声音传感器采用全向麦克风,能够完整采集周围声音信号,放大器采用轨到轨的放大电路,能够有效实现信号的放大。数字信号处理(DSP)需要采用傅里叶变换,将声音信号从时域转换到频域,然后对主要频率进行识别,获取待测声音的主要频率。

图1 声音检测系统方案

2 傅里叶变换

声音信号是一种混合多种频率的信号源,在时域角度可以看成一组正弦函数的线性组合,通过傅里叶变换能够将时域信号转换为频域信号,便于频率的提取[1-3],见图2。

图2 傅里叶变换示意图

对周期函数f(t),如果变量t 满足狄里赫莱条件,则f(x)以2T 为周期的傅里叶级数收敛,其表达式(1)称为积分运算f(t)的傅立叶变换。

针对敲击玻璃杯发出的音频信号是周期性连续时间的自然信号,通过带通滤波器,获取有限段信号,再通过AD 采集,在STM32 中获得时域离散的信号。表达式(2)对于时域离散信号x(n),可以进行离散傅里叶变换(DFT),转换成离散的频率信号。

3 STM32的傅里叶变换实现

在进行模拟信号采集的时候,需要考虑采集信号的频率值,根据奈奎斯特采样定理可知,采样频率F必须是最高频率的2 倍以上,这样才能确保信号的完整性。采用点数N,那么FFT 变换之后,就是N个复数标识的点。每一个点对应一个频率点,这个点对应的幅值就是该频率下的幅度特性,每个点的相位,就是在该频率下的信号的相位[7-8]。

根据STM32F10x 系列处理器的技术参数表1 所示,其中采用1 024 点的傅里叶运算需要2.138 ms,如果采用64 点的傅里叶运算只需要0.078 ms,STM32 的运算速度满足FFT 运算需求。针对FFT 的算法,STM32 自带DSP 库实现傅里叶变换。其中,采用基4 浮点FFT 运算,需要三个函数。

表1 快速傅里叶变换速度(基4,16 位FFT,Flash 存储器)

arm_status arm_cfft_radix4_init_f32(arm_cfft_radix 4_instance_f32*S,uint16_t fftLen,uint8_t ifftFlag,uint8_t bitReverseFlag);

void arm_cfft_radix4_f32(const arm_cfft_radix4_instance_f32*S,float32_t*pSrc);

void arm_cmplx_mag_f32(float32_t*pSrc,float32_t*pDst,uint32_t numSamples)。

4 嵌入式系统实现

设置5 个同型号水杯,放入不同量的液体,通过对水杯敲击声音进行识别,验证傅里叶变换的可靠性和稳定性。为了提高声音识别的效率,采用MAX4466声音传感器模块优化增益带宽,然后通过STM32 运行傅里叶算法(FFT),获取幅度频谱特性,寻找主频率的值和对应幅度值。当识别到水杯的频率后,根据预先设定的音高与杯号的映射表,查找对应的杯号,然后将该杯号通过液晶显示屏进行显示。

4.1 嵌入式系统设计

本系统采用STM32F103 芯片为主控模块,整体系统主要由主控核心板模块、声音传感器模块、带通滤波器模块,音频输出模块、控制模块和显示模块组成。通过声音传感器模块,将声音信号转换成电压信号,通过带通滤波器滤除干扰的高频和低频信号,STM32 进行AD 采集后,进行傅里叶变换,将时域信号转变成频域信号,对频域信号进行记录和标定,完成信息的采集和存储功能,系统总体框图如图3 所示。

图3 系统总体框图

4.2 程序流程图

STM32 采用自带的DSP 库文件,通过调用FFT函数,实现对水杯在不同状态下的频率值和对应频率的幅度值的记录和学习,在识别过程中,将采集到的水杯频率与保存频率对比,正确识别水杯的状态,图4绘制了主程序、初始化程序、FFT 转换程序的对应流程图。

图4 STM32 的FFT 的学习与识别程序

4.3 系统测试

在正常温度和湿度的前提下开展测试,通过加入不同水位的方式,改变水杯的频率,测试识别的准确度。本批次的空杯频率集中在2 500 HZ 到3 000 HZ之间,根据奈奎斯特采样定理可知,当采样频率大于信号中最高频率的2 倍时,本系统STM 32 系统频率采用72 MHZ,AD 采集频率设置为10 KHZ。

根据我们的测试,基于STM32 主控的声音识别系统的功能和性能测试结果如表2 所示。

表2 5 个水杯不同水量测试频率值

5 结论

使用基于STM32 主控、MAX4466 声音传感器模块和蜂鸣器模块的搭建方案,经过验证发现,能够区分3 Hz 的本征频率水杯,准确的识别出不同水杯的频率值,满足作为识别系统的需要。该项目通过硬件结构优化,能够制作出手持式声音测试仪,可以用于环境消噪采集设备,也可以作为有声设备故障巡检仪器。

猜你喜欢
水杯傅里叶时域
SIAU诗杭便携式气泡水杯
双线性傅里叶乘子算子的量化加权估计
移水杯
移水杯
基于小波降噪的稀疏傅里叶变换时延估计
基于时域信号的三电平逆变器复合故障诊断
基于极大似然准则与滚动时域估计的自适应UKF算法
基于傅里叶变换的快速TAMVDR算法
基于时域逆滤波的宽带脉冲声生成技术
快速离散傅里叶变换算法研究与FPGA实现