




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实用标准一、 实验目的1. 本实验的内容基于对电话通信系统中拨号音的识别仿真实验。主要涉及到电话拨号音识别的基本原理和识别的主要方法。利用matlab软件以及fft算法实现对电话通信系统中拨号音的识别。并进一步利用matlab中的图形用户界面制作简单直观的模拟界面,使其对拨号音的识别有个基本的了解。2. 能够利用矩阵不同的基频合成0-9不同按键的拨号音,并能够对不同的拨号音加以正确的识别。进一步画出简单的图形,从而实现对电话拨号音系统的简单的实验仿真。3.了解学习DTMF(双音多频)相关知识,知道双音多频的信号是用两个特定的单音频率信号的组合来代表数字或功能。二、实验仪器安装有MATLAB软件
2、的计算机一台。三、实验原理1. DTMF(双音多频)(1) 基本概念电话拨号有两种,脉冲和音频,所谓音频也成双音多频(DTMF)信号的拨号方式即是电话拨号时每按一个键,有两个音频频率叠加成一个双音频信号,十六个按键由八个音频频率区分。(2) 编制规则具体DTMF编制规则如表1所示表1 DTMF键盘高群/Hz低群/Hz1209133614771633697123A770456B852789C941*0#D双音多频的拨号键盘是4×4的矩阵,每一行代表一个低频,每一列代表一个高频。用户每按一个键就发送一个高频和低频的正弦信号组合。2. 电话按键音识别MATLAB中audioread函数可以
3、实现多种音频信号的读取,调用形式为y,fs=audioread(filename)其中y为所读取的音频数据;而fs为采样频率;调用的filename为指定载入的音频文件名称。用fft频谱分析公式 (1) (2)由公式(1)和(2)可得: (3)四实验内容本实验要实现电话拨号音(DTMF)信号的检测的识别,可以通过直接计算傅里叶变换时的输入信号组成的频率。这里采用FFT算法对信号进行解码分析。首先对接收到的数字信号作FFT分析。计算出其频幅谱,继而得到功率谱,组成输入信号的频率必定对应功率谱的峰值。对于连续的双音多频(DTMF)信号。需要把有效的数字拨号信号从静音间隔中分割提取出来,然后再用FF
4、T算法对信号进行解码分析,得出电话拨号码。五、实验过程与分析1. 读取音频文件利用MATLAB中audioread读取x,fs=audioread('电话按键音.m4a');2. 声道提取电话按键音是双声道,本实验提取声道1进行分析:x=x(:,1);3. 端点提取该按键音为一段连续的11位数字拨号音,分析时需要对它们分别进行处理,而这11位数字间的时间间隔一般情况是没有规律的,无法直接用for循环控制截取,而要是手动一段一段地进行截取,换一个音频信号就得再次重新截取,因此考虑到可能存在噪音的情况,基于短时能量和短时平均过零率来进行端点检测,实现端点的提取,对于不同的音频信号,
5、只需要修改部分可变参数便可以适用。4. 分析根据音频实际情况设置对应参数:framelen= floor(fs*40/1000);%floor向下取整,帧长frameinc= floor(fs*10/1000);%帧移% 进行分帧,每帧长framelength,voice_min_len =15;% 最短语音长度150ms%语音段的最短长度,若语音段长度小于此值(如果语音段中的静音帧数未超过此值,),则认为其为一段噪音unvoice_min_len = 5;%结束段最小持续50msn3=0.05;%过零率下限参数0.05检测结果见图1结果: 将11个检测到的号码音频左右端点提取出来 对信号进行
6、fft变换后,得到的频谱是呈现对称的,在此截取前部分进行观察,得到频谱图如图2所示。程序运行最终结果为:The telephone number is:图1 端点检测结果图 图2 电话按键音fft频谱图5. 可靠性检验自己录制一段拨号音,检验程序的可靠性,这里为了为了验证程序的正确、可靠性,又分别录制了我自己手机及1234567890两段不同格式不同号码,在有噪声条件下的按键音,检验过程如下(1.mp3格式)参数设置同上 图3 端点检测结果图 图4 电话按键音的fft频谱图程序运行结果:The telephone n
7、umber is:图5 端点检测结果图 图6 电话按键音的fft频谱图(2)1234567890(.ogg格式)该音频录制时,有的按键音持续时间较短,需要对检测初始参数进行修改修改参数:voice_min_len =6;% 最短语音长度60msn3=0.02;%过零率下限参数0.02程序运行结果:The telephone number is: 1234567890经验证,该程序可行。六、小结1.原本想着,进行端点检测时考虑了噪声的影响进行滤波或许就不必要了,但是将滤波器加进程序后发现,对于不同的音频信号,程序有更好的适应性,端点检测结果的精确度居然也有所提高,不用再
8、反复修改设置参数,然后就将滤波器加入程中了。2.实验过程中,首先是手动截取11段数字音频验证号码可检测出来后,在进行端点检测的构思,最后考虑滤波。3.通过本次实验,发现自己在MATLAB函数的应用与程序设计中仍有很大的进步空间。4.有效的端点检测技术不仅能在语音识别系统中减少数据的采集量,节约处理时间,还能排除无声段或噪声段的干扰。对于端点检测的程序,其原理经查阅资料明白一些,但不多,查阅到语音端点检测参考程序之后,对其进行了步骤增加、减少等操作,使其适合本实验,考虑到一些参数对于不同的音频需要做不同的改变,便将其提取到主程序中,方便修改。5.在引用的端点检测代码原理不很了解情况下,结合本实验
9、对其进行部分修改比较困难。6.对于待检测信号的第一个数字滤波效果不好,未达到理想的效果。7.先设计滤波器对信号进行滤波,滤去部分噪声,再设计考虑噪声的端点检测函数,相当于信号进行了双重滤波处理,是结果能够更加准确。七、实验程序(1) 主程序:x,fs=audioread('电话按键音.m4a');%待检测数据%x,fs=audioread('10月11日.mp3');%检验号x,fs=audioread('11_11_1.ogg');%检验号码1234567890x=x(:,1);%提取声道1x=lv_bo_1(x,fs
10、);sound(x,fs);%播放滤波后的音频% 调整各参数framelen= floor(fs*40/1000);%floor向下取整,帧长frameinc= floor(fs*10/1000);%帧移% 进行分帧,每帧长framelength,voice_min_len =15;% 最短语音长度60ms ,150ms%语音段的最短长度,若语音段长度小于此值(如果语音段中的静音帧数未超过此值,),则认为其为一段噪音unvoice_min_len = 5;%结束段最小持续50msn3=0.02;%过零率下限参数0.02,0.05% endfan_wei=vad(framelen,framein
11、c,x,fs,voice_min_len,unvoice_min_len,n3);%引用时注意修改函数vad中的最短语音长度number=' 'figurefor i=1:length(fan_wei) y=x(fan_wei(i,1):fan_wei(i,2); n=0:length(y)-1;%建立一个信号等长的序列; %=频域图像= N=length(y);%取信号矩阵的长度 FFT=fft(y,N);%N点傅里叶变换 mag=abs(FFT)/(N/2);%还原真实幅值 f=n*fs/N;%频率序列 % f=f(1:fix(N/2);mag=mag(1:fix(N/2)
12、;% subplot(3,4,i)%图2:频谱图 %取l/2作图 plot(f,mag);axis(600 1700 min(mag) max(mag); title('fft频谱图');%标题: xlabel('频率/Hz');%标注横坐标 ylabel('幅度');%标注纵坐标 grid on;%打开网格线 %数字判断 a1=(697+770)/2;a2=(770+852)/2;a3=(852+941)/2; a4=(1209+1336)/2;a5=(1336+1477)/2;a6=(1477+1633)/2; if(f(mag=max(ma
13、g(f<=1000)<a1) if(f(mag=max(mag(f>1100)<a4) tel=1; elseif(f(mag=max(mag(f>1100)<a5) tel=2; elseif(f(mag=max(mag(f>1100)<a6) tel=3; else tel='A' end elseif(f(mag=max(mag(f<=1000)<a2) if(f(mag=max(mag(f>1100)<a4) tel=4; elseif(f(mag=max(mag(f>1100)<a5)
14、 tel=5; elseif(f(mag=max(mag(f>1100)<a6) tel=6; else tel='B' end elseif(f(mag=max(mag(f<=1000)<a3) if(f(mag=max(mag(f>1100)<a4) tel=7; elseif(f(mag=max(mag(f>1100)<a5) tel=8; elseif(f(mag=max(mag(f>1100)<a6) tel=9; else tel='C' end else if(f(mag=max(mag(
15、f>1100)<a4) tel='*' elseif(f(mag=max(mag(f>1100)<a5) tel=0; elseif(f(mag=max(mag(f>1100)<a6) tel='#' else tel='D' end end number=number,num2str(tel);enddisp('The telephone number is:',number)(2) 滤波器function f1 = lv_bo_1( x,fs )% 双线性变换法设计Butterworth滤波
16、器t=0:1/fs:(size(x)-1)/fs;Au=0.03;d=(Au*cos(2*pi*10000*t)'x2=x+d;%数字滤波器指标fp=3Hz,fr=4Hz,Rp=1db,As=20db,fs=10Hzwp=0.25*pi;%通带边界频率(归一化):wp=fp*2*pi/fsws=0.3*pi;%阻带边界频率(归一化):ws=fr*2*pi/fsRp=1;%通带波纹Rs=15;%将模拟指标转换成数字指标Fs=fs;Ts=1/Fs;%时域最小间隔,即时域分辨率wp1=2/Ts*tan(wp/2);%模拟低通原型滤波器通带频率 ws1=2/Ts*tan(ws/2); %模拟低
17、通原型滤波器阻带频率N,Wn=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数Z,P,K=buttap(N); %创建butterworth模拟滤波器Bap,Aap=zp2tf(Z,P,K);b,a=lp2lp(Bap,Aap,Wn); %双线性变换得到分子和分母的系数向量bz,azbz,az=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换f1=filter(bz,az,x2);%进行滤波处理(3) 端点检测function fan_wei=vad(a1,a2,x,fs,n1,n2,n3)%归一化x=double(
18、x);x=x/max(abs(x);framelen= a1;frameinc= a2;y=enframe(x,hanning(framelen),frameinc);%分帧%计算短时间能量amp=sum(abs(y),2);%amp = sum(abs(enframe(filter(1 -0.9375, 1, x), framelen, frameinc).2, 2);%计算过零率tmp1=enframe(x(1:length(x)-1),framelen,frameinc);tmp2=enframe(x(2:length(x),framelen,frameinc);signs=(tmp1.
19、*tmp2)<0; diffs=(tmp1-tmp2)>n3;zcr=sum(signs.*diffs,2);zcr=zcr;zcr(end);zcr_yu=0.2*mean(zcr);yuzhi=0.2*mean(amp);%N=length(amp);for n=1:N if amp(n)<yuzhi|(zcr(n)<zcr_yu) continue; end kaitou=n; break;endfor n=N:-1:1 if amp(n)<yuzhi|(zcr(n)<zcr_yu) continue; end jiewei=n; break;endn
20、oise=amp(1:kaitou-1);amp(jiewei+1:end);noise_mean=mean(noise);noise_var = std(noise);speech_mean=mean(amp(kaitou:jiewei);%noise_meanyuzhi1= 0.3*speech_mean; %yuzhi2= max(0.3*speech_mean , (noise_mean + noise_var)*1.3);%noise_zcr=zcr(1:kaitou-1);zcr(jiewei+1:end);noise_zcr_mean = mean(noise_zcr);nois
21、e_zcr_std = std(noise_zcr);speech_zcr_mean=mean(zcr(kaitou:jiewei);zcr_yu1 = 0.3*speech_zcr_mean;zcr_yu2 = max(0.3*speech_zcr_mean , (noise_zcr_mean+noise_zcr_std)*0.3);st = ;en = ;bstart_state = 0;bend_state = 0;segment = 0;unvoice = 0;voice_min_len = n1;% 最短语音长度70msunvoice_min_len = n2;%结束段最小持续50m
22、sst_candicate = 0;en_candicate = 0;% 开始端点检测for i = 1:N if(amp(i)>=yuzhi2&&zcr(i)>=zcr_yu1)&&bstart_state) %find start bstart_state=1; % if(st_candicate) st_candicate=i; end segment =segment + 1; elseif(amp(i)>=yuzhi2|zcr(i)>=zcr_yu1)&&bstart_state)% if(unvoice>
23、=unvoice_min_len) % st = st; st_candicate; en_candicate = en_candicate + unvoice_min_len - 1; en = en; en_candicate;bstart_state = 0; bend_state = 1; unvoice = 0; segment = 0; st_candicate = 0; else unvoice = 0;bend_state = 0; segment = segment + 1; end elseif(amp(i)<yuzhi2&&zcr(i)<zcr
24、_yu1)&&bstart_state) % if segment>=voice_min_len % unvoice = unvoice + 1; if bend_state % en_candicate = i; end bend_state = 1; % else % bstart_state = 0; segment = 0; bend_state = 0;unvoice = 0; st_candicate = 0;en_candicate = 0; end elseif(amp(i)>=yuzhi2|zcr(i)>=zcr_yu1)&&
25、bstart_state) % if st_candicate st_candicate = i; end else% st_candicate = 0; continue; end endif(unvoice>=unvoice_min_len )% st = st; st_candicate; en = en; (en_candicate + unvoice_min_len -1); segment = 0;endif( segment >= voice_min_len) % st = st; st_candicate; en = en; N;endfigure(1);subpl
26、ot(3,1,1),plot(x); %原始语音波形axis(1,length(x),-1,1);ylabel('speech');xlabel('样本点');for k=1:length(st) line(st(k)*frameinc,st(k)*frameinc,-1,1,'linestyle',':','color','blue','LineWidth',2); line(en(k)*frameinc,en(k)*frameinc,-1,1,'linestyle',':','color','red','LineWidth',2);endsubplot(3,1,2),plot(amp);%原始语音能量axis(1,length(amp),0,max(amp),ylabel('energy');,xlabel('帧数');line(1,N,yuzhi1,yuzhi1,'color','yellow','LineWidth',2);%由语音能量line(1,N,yuzhi2,yuzhi2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东工商学院《服务礼仪理论教学》2023-2024学年第二学期期末试卷
- 贵州水利水电职业技术学院《中医护理技术》2023-2024学年第二学期期末试卷
- 重庆五一职业技术学院《交通运输安全2》2023-2024学年第二学期期末试卷
- 上海中侨职业技术大学《建筑营造》2023-2024学年第二学期期末试卷
- 重庆建筑工程职业学院《跨媒介创意2》2023-2024学年第二学期期末试卷
- 北京工商大学嘉华学院《管理学原理B1》2023-2024学年第二学期期末试卷
- 新疆现代职业技术学院《教育学研究新进展》2023-2024学年第二学期期末试卷
- 大连海洋大学《插画基础》2023-2024学年第二学期期末试卷
- 上海工商职业技术学院《陶瓷产品设计》2023-2024学年第二学期期末试卷
- 湖南交通工程学院《数字电路与数字逻辑》2023-2024学年第二学期期末试卷
- 高中政治教学的经验分享课件
- 《寄冰》-完整版课件
- 内科学-骨髓增生异常综合征(MDS)
- 办公室事故防范(典型案例分析)
- 地球的不同圈层英文版
- 八年级下册英语七选五专项讲练一
- 两班倒排班表excel模板
- ISO31000风险管理标准中文版
- 《S7-1200-PLC-编程及应用技术》试题试卷及答案2套
- 电土施表4-18混凝土结构工程养护记录.docx
- 医疗质量与安全管理委员会组成与职责
评论
0/150
提交评论