电话按键音的识别Word下载.docx
- 文档编号:21417694
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:13
- 大小:131.92KB
电话按键音的识别Word下载.docx
《电话按键音的识别Word下载.docx》由会员分享,可在线阅读,更多相关《电话按键音的识别Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
941
*
#
D
双音多频的拨号键盘是4×
4的矩阵,每一行代表一个低频,每一列代表一个高频。
用户每按一个键就发送一个高频和低频的正弦信号组合。
2.电话按键音识别
MATLAB中audioread函数可以实现多种音频信号的读取,调用形式为
[y,fs]=audioread()
其中y为所读取的音频数据;
而fs为采样频率;
调用的为指定载入的音频文件名称。
用fft频谱分析公式
(1)
(2)
由公式
(1)和
(2)可得:
(3)
四.实验内容
本实验要实现电话拨号音(DTMF)信号的检测的识别,可以通过直接计算傅里叶变换时的输入信号组成的频率。
这里采用FFT算法对信号进行解码分析。
首先对接收到的数字信号作FFT分析。
计算出其频幅谱,继而得到功率谱,组成输入信号的频率必定对应功率谱的峰值。
对于连续的双音多频(DTMF)信号。
需要把有效的数字拨号信号从静音间隔中分割提取出来,然后再用FFT算法对信号进行解码分析,得出电话拨号码。
五、实验过程与分析
1.读取音频文件
利用MATLAB中audioread读取
[x,fs]=audioread('
电话按键音.m4a'
);
2.声道提取
电话按键音是双声道,本实验提取声道1进行分析:
x=x(:
1);
3.端点提取
该按键音为一段连续的11位数字拨号音,分析时需要对它们分别进行处理,而这11位数字间的时间间隔一般情况是没有规律的,无法直接用for循环控制截取,而要是手动一段一段地进行截取,换一个音频信号就得再次重新截取,因此考虑到可能存在噪音的情况,基于短时能量和短时平均过零率来进行端点检测,实现端点的提取,对于不同的音频信号,只需要修改部分可变参数便可以适用。
4.分析
根据音频实际情况设置对应参数:
framelen=floor(fs*40/1000);
%floor向下取整,帧长
frameinc=floor(fs*10/1000);
%帧移
%进行分帧,每帧长framelength,
voice_min_len=15;
%最短语音长度150ms
%语音段的最短长度,若语音段长度小于此值(如果语音段中的静音帧数未超过此值,),则认为其为一段噪音
unvoice_min_len=5;
%结束段最小持续50ms
n3=0.05;
%过零率下限参数0.05
检测结果见图1
结果:
将11个检测到的号码音频左右端点提取出来
对信号进行fft变换后,得到的频谱是呈现对称的,在此截取前部分进行观察,得到频谱图如图2所示。
程序运行最终结果为:
Thetelephonenumberis:
图1端点检测结果图图2电话按键音fft频谱图
5.可靠性检验
自己录制一段拨号音,检验程序的可靠性,这里为了
为了验证程序的正确、可靠性,又分别录制了我自己手机号以及1234567890两段不同格式不同号码,在有噪声条件下的按键音,检验过程如下
(1)(.mp3格式)
参数设置同上
图3端点检测结果图图4电话按键音的fft频谱图
程序运行结果:
图5端点检测结果图图6电话按键音的fft频谱图
(2)1234567890(.ogg格式)
该音频录制时,有的按键音持续时间较短,需要对检测初始参数进行修改
修改参数:
voice_min_len=6;
%最短语音长度60ms
n3=0.02;
%过零率下限参数0.02
1234567890
经验证,该程序可行。
六、小结
1.原本想着,进行端点检测时考虑了噪声的影响进行滤波或许就不必要了,但是将滤波器加进程序后发现,对于不同的音频信号,程序有更好的适应性,端点检测结果的精确度居然也有所提高,不用再反复修改设置参数,然后就将滤波器加入程中了。
2.实验过程中,首先是手动截取11段数字音频验证号码可检测出来后,在进行端点检测的构思,最后考虑滤波。
3.通过本次实验,发现自己在MATLAB函数的应用与程序设计中仍有很大的进步空间。
4.有效的端点检测技术不仅能在语音识别系统中减少数据的采集量,节约处理时间,还能排除无声段或噪声段的干扰。
对于端点检测的程序,其原理经查阅资料明白一些,但不多,查阅到语音端点检测参考程序之后,对其进行了步骤增加、减少等操作,使其适合本实验,考虑到一些参数对于不同的音频需要做不同的改变,便将其提取到主程序中,方便修改。
5.在引用的端点检测代码原理不很了解情况下,结合本实验对其进行部分修改比较困难。
6.对于待检测信号的第一个数字滤波效果不好,未达到理想的效果。
7.先设计滤波器对信号进行滤波,滤去部分噪声,再设计考虑噪声的端点检测函数,相当于信号进行了双重滤波处理,是结果能够更加准确。
七、实验程序
(1)主程序:
%待检测数据
%[x,fs]=audioread('
10月11日.mp3'
%检验号码
11_11_1.ogg'
%检验号码1234567890
1);
%提取声道1
x=lv_bo_1(x,fs);
sound(x,fs);
%播放滤波后的音频
%%调整各参数
%最短语音长度60ms,150ms
%过零率下限参数0.02,0.05
%%end
[fan_wei]=vad(framelen,frameinc,x,fs,voice_min_len,unvoice_min_len,n3);
%引用时注意修改函数vad中的最短语音长度
number='
'
;
figure
fori=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:
%
subplot(3,4,i)%图2:
频谱图
%取l/2作图
plot(f,mag);
axis([6001700min(mag)max(mag)]);
title('
fft频谱图'
%标题:
xlabel('
频率/Hz'
%标注横坐标
ylabel('
幅度'
%标注纵坐标
gridon;
%打开网格线
%数字判断
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(mag(f<
=1000)))<
a1)
if(f(mag==max(mag(f>
1100)))<
a4)
tel=1;
elseif(f(mag==max(mag(f>
a5)
tel=2;
a6)
tel=3;
else
tel='
A'
end
elseif(f(mag==max(mag(f<
a2)
tel=4;
tel=5;
tel=6;
B'
a3)
tel=7;
tel=8;
tel=9;
C'
*'
tel=0;
#'
D'
number=[number,num2str(tel)];
end
disp(['
'
number])
(2)滤波器
function[f1]=lv_bo_1(x,fs)
%%双线性变换法设计Butterworth滤波器
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=10Hz
wp=0.25*pi;
%通带边界频率(归一化):
wp=fp*2*pi/fs
ws=0.3*pi;
%阻带边界频率(归一化):
ws=fr*2*pi/fs
Rp=1;
%通带波纹
Rs=15;
%将模拟指标转换成数字指标
Fs=fs;
Ts=1/Fs;
%时域最小间隔,即时域分辨率
wp1=2/Ts*tan(wp/2);
%模拟低通原型滤波器通带频率
ws1=2/Ts*tan(ws/2);
%模拟低通原型滤波器阻带频率
[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,az
[bz,az]=bilinear(b,a,Fs);
%用双线性变换法实现模拟滤波器到数字滤波器的转换
f1=filter(bz,az,x2);
%进行滤波处理
(3)端点检测
function[fan_wei]=vad(a1,a2,x,fs,n1,n2,n3)
%归一化
x=double(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.*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);
forn=1:
N
ifamp(n)<
yuzhi||(zcr(n)<
zcr_yu)
continue;
kaitou=n;
break;
forn=N:
-1:
jiewei=n;
noise=[amp(1:
kaitou-1);
amp(jiewei+1:
end)];
noise_mean=mean(noise);
noise_var=std(noise);
speech_mean=mean(amp(kaitou:
jiewei));
%noise_mean
yuzhi1=0.3*speech_mean;
yuzhi2=max(0.3*speech_mean,(noise_mean+noise_var)*1.3);
noise_zcr=[zcr(1:
zcr(jiewei+1:
noise_zcr_mean=mean(noise_zcr);
noise_zcr_std=std(noise_zcr);
speech_zcr_mean=mean(zcr(kaitou:
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;
%最短语音长度70ms
unvoice_min_len=n2;
st_candicate=0;
en_candicate=0;
%%开始端点检测
fori=1:
if((amp(i)>
=yuzhi2&
&
zcr(i)>
=zcr_yu1)&
~bstart_state)%findstart
bstart_state=1;
if(~st_candicate)
st_candicate=i;
segment=segment+1;
elseif((amp(i)>
=yuzhi2||zcr(i)>
bstart_state)%
if(unvoice>
=unvoice_min_len)%
st=[st;
st_candicate];
en_candicate=en_candicate+unvoice_min_len-1;
en=[en;
en_candicate];
bend_state=1;
unvoice=0;
segment=0;
st_candicate=0;
else
segment=segment+1;
elseif((amp(i)<
yuzhi2&
zcr(i)<
zcr_yu1)&
bstart_state)%
ifsegment>
=voice_min_len%
unvoice=unvoice+1;
if~bend_state%
en_candicate=i;
else%
bstart_state=0;
bend_state=0;
~bstart_state)%
if~st_candicate
st_candicate=i;
else%
end
if(unvoice>
=unvoice_min_len)%
(en_candicate+unvoice_min_len-1)];
if(segment>
=voice_min_len)%
N];
figure
(1);
subplot(3,1,1),plot(x);
%原始语音波形
axis([1,length(x),-1,1]);
ylabel('
speech'
xlabel('
样本点'
fork=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],'
red'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电话 按键 识别