您好,欢迎访问三七文档
男女声识别系统摘要:本文通过对男性和女性声音的语音特征的研究,发现男女声的基音频率存在较大的差异,并设计了基于基音频率分析的男女声识别系统。男女声识别系统由以下三个模块电路构成:话筒放大器,低通滤波器,半波整流电路,单片机测量控制模块。话筒放大器采用NE5532P音前置芯片,对语音信号进行放大;八阶低通滤波器MAX293完成基音信号的提取;单片机STC12C5410AD实现频率测量和控制输出功能。经仿真与电路实测,男女声的识别效果良好。关键词:男女声识别、基音频率、低通滤波器、单片机。一、引言人类基音的范围约为70~350Hz左右,由于生理结构的不同,男性与女性的声音呈现出不同的听觉特征,男声的基音频率大都在100—200HZ之间,而女声则在200—350HZ之间;在会话中,同一发音者的基音频率变化的统计结果,如图一所示。女声与男声相比,前者的平均值、标准差都为后者的两倍左右。不同发音者的基音频率分布如图二所示,在对数频率轴上男声,女声分别呈现正态分布,男声的基音频率的平均值和标准差分别为125HZ及其20HZ。女声约为男声的2倍。鉴于男女声存在基音频率的明显差异,基音频率可作为男女声识别的依据。二、方案论证与比较基于男女声基音频率的差异,男女声识别的实现可以通过基音频率的测量来实现。基音频率的实现有多种方法。如FFT分析、自相关分析等。方案一:基于FFT的短时频谱分析。把语音信号数字化,即经AD采样量化之后,用FFT算法处理,得到信号的频谱,从而获得基音频率。这种方法由于算法较复杂,数据处理量大,如用单片机来实现,编程复杂,运算速度慢,难以满足实时要求。方案二:滤波器基音提取技术。利用低通滤波器滤除多次谐波及共振峰等高频成分,得到近似的基音信号,此法可以用硬件电路构成滤波器实现基音信号的粗略提取,避免了大量算法分析和数据处理,实现起来相当简单。为了证明这种方法的有效性,我们用计算机声卡录制了近20名男女同学的单音、词组和句子的WAV文件,在MATLAB上编写程序进行仿真。1.男女声信号通过400HZ低通滤波后的仿真波形比较。我们将男女声信号经过八阶低通滤波器,其截止频率设定为400HZ。仿真结果如图三所示。从图形上我们可以看到:通过400HZ的低通滤波器后,男声输出为约120HZ左右周期性信号(非单频正弦波);女声输出约250HZ左右周期性信号,其波形接近正弦波。这说明经过400HZ低通滤波器后,女声声音主要由基音信号构成,而男性声音的非正弦性是由于其二次谐波及共振峰的存在的结果。2.男女声信号通过200HZ低通滤波后的仿真波形比较。我们将男声、女声输入信号经过八阶低通数字滤波器滤波,截止频率设定为200HZ。男声、女声及其通过200HZ低通滤波后的波形如图四所示:从上边的图形我们看出:经过200HZ的低通滤波器,男声输出为较好的正弦波(基音信号),而女声基本上没有信号通过。从MATLAB数据处理软件对采集信号分析的结果表明,用滤波器提取基音频率的方法完全可行。我们在计算机上用这种方法编写了男女声识别软件,对男女声基音特征进行提取,实现了识别的仿真。实验表明,在正常说话条件下,系统具有较高的识别率,仿真效果令人满意。三、系统实现1.设计思想与系统构成:话筒产生的语音信号很微弱,大约50mV左右,必须经过放大才能送往后级电路处理。两个高阶低通滤波器分别工作在400HZ的截止频率和200HZ截止频率。这主要是为了保证始终有一路信号是含谐波分量较少的近似基音信号。整形电路把正弦波转化为矩形脉冲,送往单片机STC12C5010AD测量其周期。单片机完成多次测量后,进行统计,作出男声还是女声的判断,送输出显示。2.主要电路的设计与说明A、话筒放大电路通过用NE5532P芯片来实现语音放大,把微弱的语音信号放大的50倍左右。话筒放大200HZ低频滤波400HZ低频滤波单片机整流整流LED灯显示如图所示,采用NE5532运算放大器作音频前置放大电路。其优点是体积小、功耗小、一致性较好。电路如下图所示:B、低通滤波电路采用MAX293可控截止频率8阶巴特沃夫低通滤波器,如图所示,则电路结构简单,外围元件少,截止频率可由外部时钟控制或由时钟输入端所接电容决定。截止频率控制简单,且滤波效果好。调试时,由外部时钟控制截止频率,调试完成后,可将滤波器的截止频率固定,即在时钟输入端(CLK)接一个一定大小的电容。比较两个方案,方案二实现滤波简单方便,满足系统要求。C、全整流电路如图所示,U5A、U6A各组成一线性半波整流电路,而U5B、U6B各组成一加法电路。U5A和U5B,U6A和U6B构成一线性全波整流电路。D、单片机电路把经过整流后的两路频率信号输入STC12C5410AD进行A\D转换并采样。再各求出两组采样好的数据的能量,以便来进行比较。若求出来的两个结果较接近就为男声,那么男声的那个发光二极管就会亮起来。若两个结果相差较大就为女声,那么女声的那个发光二极管就会亮起。电路如下:3.软件设计A程序设计流程图:B程序:#includereg52.hsfrADC_LOW2=0xBE;//定义STC12C5410AD特殊功能寄存器sfrADC_CONTR=0xC5;sfrADC_DATA=0xC6;sfrp0m0=0x93;sfrp0m1=0x94;sfrp1m0=0x91;sfrp1m1=0x92;sfrp2m0=0x95;sfrp2m1=0x96;sfrp3m0=0xb1;sfrp3m1=0xb2;sbitgetv=P2^1;//定义指示灯sbitmale=P2^6;sbitfemale=P2^7;#definedivgate4//定义全局常量和全局变量#definecountgate185#defineon1#defineoff0unsignedchardiv;unsignedcharad200,ad400;unsignedchartest;unsignedchari,count;unsignedcharcodedisplay_AD_channel_ID[2]={0x00,0x01};voiddelay100us(charDelay)//延时程序,延时时间=Delay*100us{chard;for(;Delay0;Delay--){for(d=0;d12;d++){;}}}voiddelay50ms(unsignedintt)//延时程序,延时时间=t*50ms{unsignedintj;for(;t0;t--)for(j=6245;j0;j--);}unsignedcharAd_Change(unsignedcharchannel)//AD转换子程序{ADC_CONTR=ADC_CONTR&0xe0;//1110,0000清ADC_FLAG,ADC_START位和低3位ADC_CONTR=ADC_CONTR|(display_AD_channel_ID[channel]&0x07);//设置当前通道号//延时使输入电压达到稳定ADC_DATA=0;//清A/D转换结果寄存器delay100us(5);ADC_CONTR=ADC_CONTR|0x08;//0000,1000ADCS=1,启动转换do{;}while((ADC_CONTR&0x10)==0);//0001,0000等待A/D转换结束ADC_CONTR=ADC_CONTR&0xE7;//1110,0111清ADC_FLAG位,停止A/D转换returnADC_DATA;}voidget_result()//声音采集和处理子程序{count=0;getv=on;male=off;female=off;for(i=0;i250;i++)//对400hz和200hz信号各采样250次并统计数据{ad400=Ad_Change(0);ad200=Ad_Change(1);if(ad200!=0){div=ad400/ad200;if(divdivgate)count++;}elseif(ad2000x01)count++;}if(countcountgate)//判别男女并指示{female=on;male=off;}else{male=on;female=off;}getv=off;delay50ms(50);delay50ms(50);delay50ms(50);delay50ms(50);delay50ms(50);delay50ms(50);delay50ms(50);delay50ms(50);delay50ms(50);delay50ms(50);delay50ms(50);//返回等待下次测试}voidmain(){SP=0x31;IE=0x85;//开系统中断getv=0;male=1;female=0;ADC_CONTR=0xe0;//1110,0000打开A/D转换电源。设定采样速率为210个机器周期p1m0=0x03;//0000,0011P1.0--P1.1先设为开漏。断开内部上拉电阻p1m1=0x00;delay100us(10);while(1)//循环等待声音信号输入{male=~male;female=~female;delay50ms(50);test=Ad_Change(0);//先不跟你聊了,写好程序部分的实验报告好给你们if(test0x02){test=Ad_Change(0);if(test0x02)//重复先不跟你聊了,写好程序部分的实验报告好给你们{test=Ad_Change(0);if(test0x02){get_result();//对声音进行判别}}}}}四、系统电路测试与分析1.带话筒放大器的测试:调整放大增益,使输出幅度较大而不失真。2.低通滤波器性能的测试:信号发生器产生200-400HZ正弦波作为400Hz截止频率低通滤波器的输入信号,用示波器观察输出信号,可看到输出为正弦波,450HZ以上正弦波输入时基本无输出信号,可见滤波效果很好。信号发生器产生100-300HZ正弦波作为200Hz截止频率低通滤波器的输入信号,用示波器观察输出信号,同样可看到很好的滤波效果。3.单片机系统调试:用仿真器调试测量与处理程序。4.整机测试:下面是对若干位学生的测试结果。由测试结果得到,该系统判断准确率为70%。原因是,就一个说话者来说,基音频率并不是固定不变的,测试声音平均基音频率(Hz)判定结果男声164.4男男声164.6男男声139.2男男声152.2男男声161男女声255.8男女声242.4男女声279.2女女声264.6女女声254.4男不同声音、不同声调、说话者的情绪等都会影响基音频率,另外辅音会对测试结果有一定的影响。正因为如此,容易造成误判。(如某位男同学发的某些音,用系统测试误判为女声)。五总结这个科技制作,我们从三月份开始着手找方案,并多次找钟老师指导,一开始,我们想尝试用全软件的ARM的开发板实现,可是近半个月的时间,找的资料都没能让我们很好的了解ARM的使用,所以我们最后决定改变方案,使用硬件跟单片机软件相结合的办法,硬件部分,对所需的芯片不熟悉,经过钟老师指导,我们应用了MAX293的滤波器,经网上找资料,学会MAX293的应用及其外围电路的搭建,放大电路并没有太大的问题,只是我们本来打算用一个具有自增益控制的芯片,但是在赛格找不到,所以只能单用运放实现,放大跟滤波的电路完成后,整流部分则参考了《模拟电子线路》里面的一个图。前面硬件部分基本完成,然后就开始制板,因为之前都没有接触过,所以只能从零开始,学着用PROTEI软件,画原理图并画PCB,然后去实验室做板,做伴并没有太大的问题,但是因为芯片是帖片封装,所以焊帖片是很新的尝试,还好有同学的指导才能掌握其中的诀窍。第一次制板,因为没有经验,所以一口气就把整个硬件电路做在一块板上,结果调试的时候有问题,可是却没有办法检查哪里出问题,所以第一块板就宣布废掉,接下来,决定按模块分开做,放大,滤波,整流,和单片机部分。放大部
本文标题:男女声识别系统
链接地址:https://www.777doc.com/doc-4990803 .html