最新大连理工大学数字信号处理实验二——电话拨号音的合成与识别-精品资料优秀文档

合集下载

数字信号处理在多音频拨号系统中的应用实验

数字信号处理在多音频拨号系统中的应用实验

实验四:数字信号处理在多音频拨号系统中的应用1、实验目的了解电话中双音多频(DMTF)信号的产生与检测1、程序清单%DTMF双音多频拨号信号的生成和检测仿真程序:exp6.m tm=[1,2,3,65;4,5,6,66;7,8,9,67; 42,0,35,68];%DTMF信号代表的16个数N=205;K=[18,20,22,24,31,34,38 ,42]; %8个基频对应的8个K值f1=[697,770,852,941];%行频率向量f2=[1209,1336,1477,1633];%列频率向量TN=input('键入6位电话号码='); %输入6位数字TNr=0%接受段电话号码初值为零form=1:6;%分别对每位号码数字处理:产生信号,发声,检测d=fix(TN/10^(6-m));%计算出第m位号码数字TN=TN-d*10^(6-m);for p=1:4;for q=1:4;iftm(p,q)==abs(d);break,end %检测与第m位号码相符的列号qendiftm(p,q)==abs(d);break,end %检测与第m位号码相符的列号pendn=0:1023;%为了发声,加长序列x=sin(2*pi*n*f1(p)/8000)+sin(2*pi* n*f2(q)/8000);%构成双频信号sound(x,8000);%发出声音pause(0.1)%相邻号码响声之间加0.1秒停顿%接受检测端的程序X=goertzel(x(1:N),K+1);%用Goertzel算法计算八点DFT样本val=abs(X);%列出八点DFT的模subplot(3,2,m);stem(K,val,'.');grid;xl abel('k');ylabel('|X(k)|')%画出8点DFT的幅度axis([10 50 0 120])limit=80;%基频检测门限为80for s=5:8;ifval(s)>limit,break,end %查找列号endfor r=1:4;ifval(r)>limit,break,end %查找行号endTNr=TNr+tm(r,s-4)*10^(6-m);%强6位电话号码表示成一个6位数,以便显示enddisp('接收端检测到的号码为:')disp(TNr)%显示接收到的6位电话号码%此程序为exp6的改进程序,与exp6的区别是:%(1)增加了输入电话号码长度判别语句,保证输入位数为6为;%(2)增加了首位非0识别,能保证类似"012345、001234、000123、000000"号码正确识别与显示.clc;clear;tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,6 8];N=205;K=[18,20,22,24,31,34,38,42];f1=[697,770,852,941];f2=[1209,1336,1477,1633];first_flag=0;TN0=input('please input telephone number (8bit) is =','s'); %输入6位电话号码,以字符型输入TN=str2num(TN0); %将字符型转换为实数类型len=length(TN0);%将字符型数据的长度if len==8 %若输入位数为6位,则顺序执行;否则输入号码不是6位(少于6位或大于6位),则输出错误提示信息TNr=0;for m=1:8d=fix(TN/10^(8-m));TN=TN-d*10^(8-m);temp_number(m)=d; %将每位号码保存在数组中for p=1:4for q=1:4if tm(p,q)==abs(d)break;endendif tm(p,q)==abs(d)break;endendn=0:1023;x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2 (q)/8000);sound(x,8000);pause(0.2);X=goertzel(x(1:N),K+1);val=abs(X);subplot(4,2,m);stem(K,val,'.');grid;xlabel('K');ylabel('|X(k)|');axis([10 50 0 120]);limit=80;for j=5:8if val(j)>limitbreak;endendfor r=1:4if val(r)>limitbreak;endendTNr=TNr+tm(r,j-4)*10^(8-m);if (m==1)&(TNr==0)first_flag=1;endendif(first_flag==1) %判断首位是否为0,如果为0,显示结果将补0,直至首位非0位add_zero='0';%字符型变量初始化temp_zero='0';for k=2:5if temp_number(k)==0 %判断需要补几位0,此程序的目的是要保证类似“001234、000123、000000”显示正确add_zero=strcat(add_zero,temp_zero); %字符型变量组合elsebreak;endendTNr_disp_0=num2str(TNr); %实数型变量转字符型变量TNr_disp=strcat(add_zero,TNr_disp_0);first_flag=0;elseTNr_disp=num2str(TNr);add_zero='';endTNr_disp_0=num2str(TNr);TNr_disp=strcat(add_zero,TNr_disp_0) disp('telephone number from the receiver is:');disp(TNr_disp);elsedisp(TN0);disp('please input the right telephone number(8 bit)');end%DTMF双音多频拨号信号生成与检测,滤波器组方法%此程序为滤波器组方法的改进程序,与原有滤波器组方法的区别是:%(1)增加了输入电话号码长度判别语句,保证输入位数为6为;%(2)增加了首位非0识别,能保证类似"012345、001234、000123、000000"号码正确识别与显示.clc;clear;%首先设计带通滤波器组,利用滤波器组检测信号rp=1;rs=30;fs=8000; %采样频率8kHzfpl1=677;fph1=717;fsl1=657;fsh1=737; fpl2=750;fph2=790;fsl2=730;fsh2=810; fpl3=832;fph3=872;fsl3=812;fsh3=892; fpl4=921;fph4=961;fsl4=901;fsh4=981; fpl5=1179;fph5=1239;fsl5=1149;fsh5=1269;fpl6=1306;fph6=1366;fsl6=1276;fsh6=1 396;fpl7=1447;fph7=1507;fsl7=1417;fsh7=1 537;fpl8=1603;fph8=1663;fsl8=1573;fsh8=1 693;wpl1=fpl1/(fs/2);wph1=fph1/(fs/2);wsl1=fsl1/(fs/2);wsh1=fsh1/(fs/2);wpl2=fpl2/(fs/2);wph2=fph2/(fs/2);wsl2=fsl2/(fs/2);wsh2=fsh2/(fs/2);wpl3=fpl3/(fs/2);wph3=fph3/(fs/2);wsl3=fsl3/(fs/2);wsh3=fsh3/(fs/2);wpl4=fpl4/(fs/2);wph4=fph4/(fs/2);wsl4=fsl4/(fs/2);wsh4=fsh4/(fs/2);wpl5=fpl5/(fs/2);wph5=fph5/(fs/2);wsl5=fsl5/(fs/2);wsh5=fsh5/(fs/2);wpl6=fpl6/(fs/2);wph6=fph6/(fs/2);wsl6=fsl6/(fs/2);wsh6=fsh6/(fs/2);wpl7=fpl7/(fs/2);wph7=fph7/(fs/2);wsl7=fsl7/(fs/2);wsh7=fsh7/(fs/2);wpl8=fpl8/(fs/2);wph8=fph8/(fs/2);wsl8=fsl8/(fs/2);wsh8=fsh8/(fs/2);wp1=[wpl1 wph1];ws1=[wsl1 wsh1]; wp2=[wpl2 wph2];ws2=[wsl2 wsh2]; wp3=[wpl3 wph3];ws3=[wsl3 wsh3]; wp4=[wpl4 wph4];ws4=[wsl4 wsh4]; wp5=[wpl5 wph5];ws5=[wsl5 wsh5]; wp6=[wpl6 wph6];ws6=[wsl6 wsh6]; wp7=[wpl7 wph7];ws7=[wsl7 wsh7]; wp8=[wpl8 wph8];ws8=[wsl8 wsh8];[N1,wc1]=buttord(wp1,ws1,rp,rs) [Bz1,Az1]=butter(N1,wc1)[N2,wc2]=buttord(wp2,ws2,rp,rs) [Bz2,Az2]=butter(N2,wc2)[N3,wc3]=buttord(wp3,ws3,rp,rs) [Bz3,Az3]=butter(N3,wc3)[N4,wc4]=buttord(wp4,ws4,rp,rs) [Bz4,Az4]=butter(N4,wc4)[N5,wc5]=buttord(wp5,ws5,rp,rs) [Bz5,Az5]=butter(N5,wc5) [N6,wc6]=buttord(wp6,ws6,rp,rs)[Bz6,Az6]=butter(N6,wc6)[N7,wc7]=buttord(wp7,ws7,rp,rs)[Bz7,Az7]=butter(N7,wc7)[N8,wc8]=buttord(wp8,ws8,rp,rs)[Bz8,Az8]=butter(N8,wc8)%产生DTMF信号tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,6 8]; %DTMF信号代表的16个数字%N=205;%K=[18,20,22,24,31,34,38,42]; %8个基频对应的8个k值f1=[697,770,852,941];f2=[1209,1336,1477,1633];first_flag=0;TN0=input('please input telephone number (6bit) is =','s'); %输入6位电话号码,以字符型输入TN=str2num(TN0); %将字符型转换为实数类型len=length(TN0);%将字符型数据的长度if len==6 %若输入位数为6位,则顺序执行;否则输入号码不是6位(少于6位或大于6位),则输出错误提示信息TNr=0;for m=1:6d=fix(TN/10^(6-m));TN=TN-d*10^(6-m);temp_number(m)=d; %将每位号码保存在数组中for p=1:4for q=1:4if tm(p,q)==abs(d) %检测列号break;endendif tm(p,q)==abs(d) %检测行号break;endendn=0:1023;x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2 (q)/8000); %产生双频信号sound(x,8000);pause(0.1);%用滤波器组检测DTMFy1=filter(Bz1,Az1,x);y2=filter(Bz2,Az2,x);y3=filter(Bz3,Az3,x);y4=filter(Bz4,Az4,x);y5=filter(Bz5,Az5,x);y6=filter(Bz6,Az6,x);y7=filter(Bz7,Az7,x);y8=filter(Bz8,Az8,x);y=[y1;y2;y3;y4;y5;y6;y7;y8];figure;for k=1:8yy=y(k,:);subplot(4,2,k);plot(n,yy,'-');endlimit=0.6;for j=5:8if (max(abs(y(j,:)))>limit)break;endendfor r=1:4if (max(abs(y(r,:)))>limit)break;endendTNr=TNr+tm(r,j-4)*10^(6-m);if (m==1)&(TNr==0)first_flag=1;endendif(first_flag==1) %判断首位是否为0,如果为0,显示结果将补0,直至首位非0位add_zero='0';%字符型变量初始化temp_zero='0';for k=2:5if temp_number(k)==0 %判断需要补几位0,此程序的目的是要保证类似“001234、000123、000000”显示正确add_zero=strcat(add_zero,temp_zero); %字符型变量组合elsebreak;endendTNr_disp_0=num2str(TNr); %实数型变量转字符型变量TNr_disp=strcat(add_zero,TNr_disp_0);first_flag=0;elseTNr_disp=num2str(TNr);add_zero='';endTNr_disp_0=num2str(TNr);TNr_disp=strcat(add_zero,TNr_disp_0) disp('telephone number from the receiver is:');disp(TNr_disp);elsedisp(TN0);disp('the telepone number is wrong, please input the right telephone number(6 bit)');end3、仿真波形 输入123456输入123456781020304050050100k|X (k )|1020304050050100k|X (k )|1020304050050100k|X (k )|1020304050050100k|X (k )|1020304050050100k|X (k )|1020304050050100k|X (k )|2、 思考题简述DTMF 信号的参数:采样频率、DFT 的变换点数以及观测时间的确定原则。

数字信号处理作业之语音识别与处理精选全文

数字信号处理作业之语音识别与处理精选全文

可编辑修改精选全文完整版数字信号处理之语音识别与处理学号姓名赵典一语音信号众所周知,语音在人类社会中起了非常重要的作用。

在现代信息社会中,小至人们的日常生活,大到国家大事、世界新闻、社会舆论和各种重要会议,都离不开语言和文字。

近年来,普通电话、移动电话和互联网已经普及到家庭。

在这些先进的工具中,语音信号处理中的语音编码和语音合成就有很大贡献。

再进一步,可以预料到的口呼打字机(又称听写机,它能把语音转换为文字)、语音翻译机(例如输入为汉语,输出为英语,或者相反),已经不是梦想而是提到日程上的研究工作了。

20 世纪60 年代中期形成的一系列数字信号处理方法和算法, 如数字滤波器、快速傅里叶变换(FFT)是语音数字信号处理的理论和技术基础。

而70 年代初期产生的线性预测编码(LPC)算法, 为语音信号的数字处理提供了一个强有力的工具。

语音信号的编码和压缩是语音信号处理的主要内容。

语音信号处理在通信、语音识别与合成、自然语言理解、多媒体数据库以及互联网等多个领域有广泛的应用, 同时它对于理解音频类等一般的声音媒体的特点也有很大的帮助。

对于移动通信来说, 最多的信息是语音信号, 语音编码的技术在数字移动通信中具有相当关键的作用, 高质量低速率的语音编码技术是数字移动网的永远的追求。

所谓语音编码是信源编码, 它是将模拟语音信号变成数字信号以便在信道中传输。

除了通信带宽的要求外, 计算机存储容量的限制也要求对语音信号进行压缩, 以满足海量数据情况下进行实时或准实时计算机处理的目的。

二、语音信号处理的发展史:声学是物理学的一个分支学科,而语言声学又是声学的一个分支学科。

它主要的研究方向是人的发声器官机理,发声器官的类比线路和数学模型,听觉器官的特性(如听阈、掩蔽、临界带宽、听力损失等) ,听觉器官的数学模型,语音信号的物理特性(如频谱特性、声调特性、相关特性、概率分布等) ,语音的清晰度和可懂度等。

当今通信和广播的发展非常迅速,而语言通信和语言广播仍然是最重要的部分,语言声学则是这些技术科学的基础。

MATLAB电话拨号音的合成与识别

MATLAB电话拨号音的合成与识别

知识就昱力量MATLAB 电话拨号音的合成与识别1. 实验目的1.本实验内容基于对电话通信系统中拨号音合成与识别的仿真实现。

主要涉及到电话拨号音合成的基本原 理及识别的主要方法,利用 MATLAB 软件以及FFT 算法实现对电话通信系统中拨号音的合成与识别。

并进一步利用 MATLAB 中的图形用户界面 GUI 制作简单直观的模拟界面。

使其对电话通信系统拨号音 的合成与识别有个基本的了解。

2. 能够利用矩阵不同的基频合成 0 — 9不同按键的拨号音,并能够对不同的拨号音加以正确的识别,实 现由拨号音解析出电话号码的过程。

进一步利用 GUI 做出简单的图形操作界面。

要求界面清楚,画面简洁,易于理解,操作简单。

从而实现对电话拨号音系统的简单的实验仿真。

2.实验原理 1. DTMF 信号的组成双音多频 DTMF ( Dual Tone Multi-Frequency )信号,是用两个特定的单音频率信号的组合来代表数 字或功能。

在DTMF 电话机中有16个按键,其中10个数字键0 — 9, 6个功能键*、#、A 、D 。

其中12个按键是我们比较熟悉的按键,另外由第4列确定的按键作为保留,作为功能 1209Hz 、 1336Hz 、 1477H:、 1633Hz 高频群。

从低频群和高频群任意各抽出一种频率进行组合, 共有16种组合,代表16种不同的数字键或功能,每个按键唯一地由一组行频和列频组成,如表 示。

V4 Z Z.+DTMF 的组合功能3. 实验步骤1. DTMF 信号的产生合成现在将对上节制作的图形电话拨号面板上的各控件单位的动作和变化进行设置, 即对tu1.m 文件进行编辑。

其主要的功能是使对应的按键,按照表1的对应关系产生相应的拨号音,完成对应行频及列频的叠加输岀。

此外,对于图形界面的需要,还要使按键的号码数字显示在拨号显示窗口中。

键留为今后他用。

根据CCITT 建议,国际上采用 697Hz 、770Hz 、 852Hz 、 941Hz 低频群及■I知识就昱力量鉴于CCITT对DTMF信号规定的指标,这里每个数字信号取1000个采样点模拟按键信号,并且每两个数字之间用100个0来表示间隔来模拟静音。

大连理工大学通信网实验-实验一实验报告

大连理工大学通信网实验-实验一实验报告

大连理工大学实验报告学院(系):信息与通信工程专业:通信工程班级:电通1402姓名:糜智华学号:201483051 组:___实验时间:2016年11月14日18:00-21.00 实验室:C221 实验台:37号机指导教师:李小兵实验一程控交换机语音通信实验报告一、实验目的和要求通过该实验使学生理解通信网络的基本概念,了解和掌握现代通信网的网络拓扑结构、通信网使用的设备连接方法和信号传输过程。

本实验将进行基于数字程控交换机的语音通信实验。

通过对交换机的简单配置,了解电话网的基本组成和交换机构成及各部分的功能,熟悉固定电话的接续流程,以对将来通信行业的硬件和软件工作有一定的了解。

二、实验原理和内容实验内容a)熟悉实验室通信设备,了解各通信设备基本功能,能够简单配置和操作设备。

b)操作和配置程控交换机,实现电话之间通话实验实验原理电话网是传递电话信息的电信网,是可以进行交互型话音通信、开放电话业务的电信网。

电话网包括本地电话网、长途电话网、国际电话网等多种类型。

是业务量最大、服务面最广的电信网。

电话网经历了由模拟电话网向综合数字电话网的演变。

除了电话业务,还可以兼容许多非电话业务。

因此电话网可以说是电信网的基础。

最早的电话通信形式只是两部电话机中间用导线连接起来便可通话。

电话网采用电路交换方式,由发送和接收电话信号的用户终端设备(如电话机)进行电路交换的交换设备(电话交换机)、连接用户终端和交换设备的线路(用户线)和交换设备之间的链路(中继线)组成。

电话网基本结构形式分为多级汇接网和无级网两种。

端局:端局就是直接下挂用户或者直接拨入(DID局)的交换机。

在移动通信中,端局之间若没有进行直连,则通过汇接局进行连接,运营商之间的中继互联是通过关口局来进行连接的。

关口局是出网的局点。

各个端局通过中继的方式汇聚到一个局点,再上行到关口局或长途局。

汇接局:汇接局属于本地网内的一种交换局,它汇接各端局通过中继线送来的话务量,然后送至相应的端局。

信与系统实验电话拨音的合成与分解

信与系统实验电话拨音的合成与分解
3.涉及的MATLAB相关内容
1. Set
功能:设置对象属性。
基本调用格式:set(H,'PropertyName',PropertyValue,...) 用属性值'PropertyValue'设置关于用参量 H 标志的对象(一个或多个)的属性名'PropertyName'(一个或多个)。H 可以为一句柄的向量。在这种情形下,命令 set 可以设置所有对象的属性值。
n=[1:1000]; % 每个数字 1000 个采样点表示
d0=sin(2*pi*697/8192*n)+sin(2*pi*1209/8192*n); % 对应行频列频叠加
n0=strcat(get,'string'),'1'); % 获取数字号码
set,'string',n0); % 显示号码
space=zeros(1,100); %100 个 0 模拟静音信号
end
t(i)=tel;
c=strcat(number,int2str(tel));
number=c;
i=i+1;
end
msgbox(strcat('拨打的号码为:',number),'分析');
程序解释: 确定行频和列频的数值范围是通过计算得出的:已知输入信号的取样频率fs=8192Hz ,而做 FFT 的 N=2048,则频谱分辨率为
2. DTMF 信号的产生合成
现在将对上节制作的图形电话拨号面板上的各控件单位的动作和变化进行设置,即对 文件进行编辑。其主要的功能是使对应的按键,按照表 1 的对应关系产生相应的拨号音,完成对应行频及列频的叠加输出。此外,对于图形界面的需要,还要使按键的号码数字显示在拨号显示窗口中。 鉴于 CCITT 对 DTMF 信号规定的指标,这里每个数字信号取 1000 个采样点模拟按键信号,并且每两个数字之间用 100 个 0 来表示间隔来模拟静音。以便区别连续的两个按键信号。间隔的静音信号也是在按键时产生的。 以按键 1 为例,简单介绍拨号音产生的过程:

实验五 数字信号处理在双音多频拨号系统中的应用

实验五 数字信号处理在双音多频拨号系统中的应用

实验五程序代码及实验结果图:(1)运行仿真程序exp6.m,任意送入 6 位电话号码,打印出相应的幅度谱。

观察程序运行结果,判断程序谱分析的正确性。

实验程序代码及结果如下:% DTMF 双频拨号信号的生成和检测程序tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68]; % DTMF 信号代表的16 个数N=205;K=[18,20,22,24,31,34,38,42]; %采样点数f1=[697,770,852,941]; %行频率向量f2=[1209,1336,1477,1633]; %列频率向量TN=input('键入6 位电话号码= '); %输入6位数字TNr=0; %接收端电话号码初值为零for l=1:6;d=fix(TN/10^(6-l)); %通过整除依次得到六位数字TN=TN-d*10^(6-l); %得到1位数字之后,得到新的序列TNfor p=1:4; %通过查表法得到数字的行号p和列号q for q=1:4;if tm(p,q)==abs(d); break,end %检测码相符的列号qendif tm(p,q)==abs(d); break,end %检测码相符的行号pend%得到每一位数值之后,然后跳出循环,对该位进行信号调制n=0:1023; %延长序列,为了发出声音x = sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000);sound(x,8000); %发出声音pause(0.1) %声音持续时间% 接收检测端的程序X=goertzel(x(1:205),K+1); %用Goertzel算法计算8点DFT样本val = abs(X); %列出8点DFT向量subplot(3,2,l);stem(K,val,'.');grid on; %绘制幅度谱xlabel('k');ylabel('|X(k)|'); %横纵坐标名称axis([10 50 0 120]); %确定坐标轴范围limit = 80; %设定门限值for s=5:8;if val(s) > limit, break, end %查找列号,找到列号大于门限的幅度谱值endfor r=1:4;if val(r) > limit, break, end %查找行号,找到行号大于门限的幅度谱值endTNr=TNr+tm(r,s-4)*10^(6-l); %合成6位电话号码enddisp('接收端检测到的号码为:'); %显示接收到的字符disp(TNr);(2)分析该仿真程序,将产生、检测和识别 6 位电话号码的程序改为能产生、检测和识别8 位电话号码的程序,并运行一次,打印出相应的幅度谱和8 位电话号码。

数字语音信号处理实验

语音信号处理实验班级:学号:姓名:2015年10月语音信号处理实验实验学时数:8实验学分:0.5实验项目数:41、目的与基本要求实验为研究型(设计型)实验,共安排4个,为了真正达到研究设计型实验的目的,采用开放实验的办法,将自主学习和研究设计型实验结合起来,统一安排。

自主学习内容由学生自主学习参考教材的内容,并采用多种渠道,如查阅最新语音信号处理方面的科技文献、资料,作出学习报告。

目的是培养学生的自学能力和科技文献的检索和查阅能力,同时可以有助于学生了解和掌握语音信号处理领域的最新技术进展和应用情况,将理论知识和实际应用结合起来,促进学生学习的积极性和主动性。

通过开放实验,目的使学生进一步理解数字语音信息处理的基本方法,提高学生自主分析、发现及解决问题的能力,锻炼学生论文写作能力,为实际的应用打下扎实的基础。

2、研究设计型实验的内容1)研究设计型实验1:基于MATLAB的语音信号时域特征分析要求:按所学相关语音处理的知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的短时过零率、短时能量、短时自相关特征的分析结果,并借助时域分析方法检测所分析语音信号的基音周期。

2)研究设计型实验2:基于MATLAB分析语音信号频域特征要求:按所学相关语音处理的得知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的短时谱、倒谱、语谱图的分析结果,并借助频域分析方法检测所分析语音信号的基音周期或共振峰。

3)研究设计型实验3:基于MATLAB进行语音信号的LPC分析要求:按所学相关语音处理的知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的LPC分析结果,包括LPC谱、LPCC谱的分析结果,并借助LPC分析方法检测所分析语音信号的基音周期和共振峰。

4)研究设计型实验4:基于VQ的特定人孤立词语音识别研究要求:按所学相关语音处理的知识,通过网上学习、资料查阅,借助MATLAB工具,自己设计基于VQ的码本训练程序和识别程序(尽量选用所学HMM或DTW方法设计识别程序),能识别特定人的语音,分析所设计系统的特性。

数字信号处理在双音多频拨号系统中的应用

实验一、数字信号处理在双音多频拨号系统中的应用一、实验目的1.了解双音多频信号的产生、检测、包括对双音多频信号进行DFT 时的参数选择等。

2.初步了解数字信号处理在是集中的使用方法和重要性。

3.掌握matlab 的开发环境。

二、实验原理双音多频(Dual Tone Multi Frequency, DTMF )信号是音频电话中的拨号信号.由美国AT&T 贝尔公司实验室研制.并用于电话网络中。

这种信号制式具有很高的拨号速度.且容易自动监测识别.很快就代替了原有的用脉冲计数方式的拨号制式。

这种双音多频信号制式不仅用在电话网络中.还可以用于传输十进制数据的其它通信系统中.用于电子邮件和银行系统中。

这些系统中用户可以用电话发送DTMF 信号选择语音菜单进行操作。

DTMF 信号系统是一个典型的小型信号处理系统.它要用数字方法产生模拟信号并进行传输.其中还用到了D/A 变换器;在接收端用A/D 变换器将其转换成数字信号.并进行数字信号处理与识别。

为了系统的检测速度并降低成本.还开发一种特殊的DFT 算法.称为戈泽尔(Goertzel)算法.这种算法既可以用硬件(专用芯片)实现.也可以用软件实现。

下面首先介绍双音多频信号的产生方法和检测方法.包括戈泽尔算法.最后进行模拟实验。

下面先介绍电话中的DTMF 信号的组成。

在电话中.数字0-9的中每一个都用两个不同的单音频传输.所用的8个频率分成高频带和低频带两组.低频带有四个频率:679Hz,770Hz,852Hz 和941Hz ;高频带也有四个频率:1209Hz,1336Hz,1477Hz 和1633Hz.。

每一个数字均由高、低频带中各一个频率构成.例如1用697Hz 和1209Hz 两个频率.信号用)2sin()2sin(21t f t f ππ+表示.其中Hz f 6791=.Hz f 12092=。

这样8个频率形成16种不同的双频信号。

具体号码以及符号对应的频率如表4.1所示。

信号处理综合实践说明书(2篇)

第1篇一、实践目的信号处理是电子工程、通信工程、生物医学工程等领域的重要基础学科。

本实践旨在通过综合运用信号处理的理论和方法,培养学生解决实际工程问题的能力,提高学生的创新意识和团队协作能力。

通过本次实践,使学生能够:1. 理解信号处理的基本概念、原理和方法;2. 掌握信号处理的基本工具和算法;3. 能够运用信号处理技术解决实际问题;4. 提高学生的实践操作能力和团队协作能力。

二、实践内容1. 信号处理基本概念与原理(1)信号的分类与表示方法;(2)信号的时域分析、频域分析;(3)信号的时域处理、频域处理;(4)采样定理与信号恢复。

2. 信号处理工具与算法(1)离散傅里叶变换(DFT)及其快速算法(FFT);(2)离散余弦变换(DCT);(3)小波变换;(4)卡尔曼滤波;(5)信号检测与估计。

3. 信号处理应用实例(1)语音信号处理:语音信号的预处理、特征提取、语音识别;(2)图像信号处理:图像增强、图像压缩、图像分割;(3)生物医学信号处理:心电图(ECG)信号处理、脑电图(EEG)信号处理;(4)通信信号处理:调制解调、信道编码与解码。

4. 综合实践项目(1)项目一:语音信号处理——实现一个简单的语音识别系统;(2)项目二:图像信号处理——实现一个图像压缩与解压缩系统;(3)项目三:生物医学信号处理——实现一个ECG信号处理与分析系统;(4)项目四:通信信号处理——实现一个基于DFT的调制解调系统。

三、实践方法与步骤1. 理论学习:通过查阅相关书籍、文献,了解信号处理的基本概念、原理和方法。

2. 工具学习:学习MATLAB、Python等编程语言,熟悉信号处理工具箱,掌握基本操作。

3. 算法实现:根据实践内容,选择合适的算法,进行编程实现。

4. 综合实践:根据项目要求,完成各个实践项目,并进行调试和优化。

5. 撰写实践报告:总结实践过程中的收获与体会,对实践结果进行分析和评价。

四、实践要求1. 实践过程中,学生应严格遵守实验室纪律,保持实验环境整洁。

最新语音信号处理实验报告实验二

最新语音信号处理实验报告实验二实验目的:本实验旨在通过实际操作加深对语音信号处理理论的理解,并掌握语音信号的基本处理技术。

通过实验,学习语音信号的采集、分析、滤波、特征提取等关键技术,并探索语音信号处理在实际应用中的潜力。

实验内容:1. 语音信号采集:使用语音采集设备录制一段时长约为10秒的语音样本,确保录音环境安静,语音清晰。

2. 语音信号预处理:对采集到的语音信号进行预处理,包括去噪、归一化等操作,以提高后续处理的准确性。

3. 语音信号分析:利用傅里叶变换等方法分析语音信号的频谱特性,观察并记录基频、谐波等特征。

4. 语音信号滤波:设计并实现一个带通滤波器,用于提取语音信号中的特定频率成分,去除噪声和非目标频率成分。

5. 特征提取:从处理后的语音信号中提取关键特征,如梅尔频率倒谱系数(MFCC)等,为后续的语音识别或分类任务做准备。

6. 实验总结:根据实验结果,撰写实验报告,总结语音信号处理的关键技术和实验中遇到的问题及其解决方案。

实验设备与工具:- 计算机一台,安装有语音信号处理相关软件(如Audacity、MATLAB 等)。

- 麦克风:用于采集语音信号。

- 耳机:用于监听和校正采集到的语音信号。

实验步骤:1. 打开语音采集软件,调整麦克风输入设置,确保录音质量。

2. 录制语音样本,注意控制语速和音量,避免过大或过小。

3. 使用语音分析软件打开录制的语音文件,进行频谱分析,记录观察结果。

4. 设计带通滤波器,设置合适的截止频率,对语音信号进行滤波处理。

5. 应用特征提取算法,获取语音信号的特征向量。

6. 分析滤波和特征提取后的结果,评估处理效果。

实验结果与讨论:- 描述语音信号在预处理、滤波和特征提取后的变化情况。

- 分析实验中遇到的问题,如噪声去除不彻底、频率成分丢失等,并提出可能的改进措施。

- 探讨实验结果对语音识别、语音合成等领域的潜在应用价值。

结论:通过本次实验,我们成功实现了语音信号的基本处理流程,包括采集、预处理、分析、滤波和特征提取。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大连理工大学实验报告学院(系):电信专业:电子信息工程班级:电子1204 姓名:梁宇学号: 201281001 组: ___实验时间:实验室:实验台:指导教师签字:成绩:实验二、电话拨号音的合成与识别一、实验题目和代码实现对电话通信系统中拨号音合成与识别的仿真实现。

系统界面设计:源程序:function varargout = sy2(varargin)% SY2 MATLAB code for sy2.fig% SY2, by itself, creates a new SY2 or raises the existing% singleton*.%% H = SY2 returns the handle to a new SY2 or the handle to% the existing singleton*.%% SY2('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in SY2.M with the given input arguments.%% SY2('Property','Value',...) creates a new SY2 or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before sy2_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application % stop. All inputs are passed to sy2_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help sy2% Last Modified by GUIDE v2.5 03-Jun-2015 23:06:41% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @sy2_OpeningFcn, ...'gui_OutputFcn', @sy2_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before sy2 is made visible.function sy2_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to sy2 (see VARARGIN)% Choose default command line output for sy2handles.output = hObject;handles.fs=8192;handles.DTMFsum=820;handles.DTMFnum=410;handles.NUM=[];handles.numshow2=[];% Update handles structureguidata(hObject, handles);% UIWAIT makes sy2 wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = sy2_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes on button press in num1.function num1_Callback(hObject, eventdata, handles)% hObject handle to num1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n1=strcat(get(handles.numshow,'string'),'1') %??è?êy×?o??? set(handles.numshow,'string',n1); %??ê?o???n=[1:handles.DTMFnum];d1=sin(2*pi*697/handles.fs*n)+sin(2*pi*1209/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d1,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d1,8192);% --- Executes on button press in num2.function num2_Callback(hObject, eventdata, handles)% hObject handle to num2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n2=strcat(get(handles.numshow,'string'),'2') %??è?êy×?o???set(handles.numshow,'string',n2); %??ê?o???n=[1:handles.DTMFnum];d2=sin(2*pi*697/handles.fs*n)+sin(2*pi*1336/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d2,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d2,8192);% --- Executes on button press in num3.function num3_Callback(hObject, eventdata, handles)% hObject handle to num3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n3=strcat(get(handles.numshow,'string'),'3') %??è?êy×?o???set(handles.numshow,'string',n3); %??ê?o???n=[1:handles.DTMFnum];d3=sin(2*pi*697/handles.fs*n)+sin(2*pi*1477/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d3,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d3,8192);% --- Executes on button press in num4.function num4_Callback(hObject, eventdata, handles)% hObject handle to num4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n4=strcat(get(handles.numshow,'string'),'4') %??è?êy×?o???set(handles.numshow,'string',n4); %??ê?o???n=[1:handles.DTMFnum];d4=sin(2*pi*770/handles.fs*n)+sin(2*pi*1209/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d4,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d4,8192);% --- Executes on button press in num5.function num5_Callback(hObject, eventdata, handles)% hObject handle to num5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n5=strcat(get(handles.numshow,'string'),'5') %??è?êy×?o???set(handles.numshow,'string',n5); %??ê?o???n=[1:handles.DTMFnum];d5=sin(2*pi*770/handles.fs*n)+sin(2*pi*1336/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d5,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d5,8192);% --- Executes on button press in num6.function num6_Callback(hObject, eventdata, handles)% hObject handle to num6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n6=strcat(get(handles.numshow,'string'),'6') %??è?êy×?o???set(handles.numshow,'string',n6); %??ê?o???n=[1:handles.DTMFnum];d6=sin(2*pi*770/handles.fs*n)+sin(2*pi*1477/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d6,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d6,8192);% --- Executes on button press in num7.function num7_Callback(hObject, eventdata, handles)% hObject handle to num7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n7=strcat(get(handles.numshow,'string'),'7') %??è?êy×?o???set(handles.numshow,'string',n7); %??ê?o???n=[1:handles.DTMFnum];d7=sin(2*pi*852/handles.fs*n)+sin(2*pi*1209/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d7,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d7,8192);% --- Executes on button press in num8.function num8_Callback(hObject, eventdata, handles)% hObject handle to num8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n8=strcat(get(handles.numshow,'string'),'8') %??è?êy×?o???set(handles.numshow,'string',n8); %??ê?o???n=[1:handles.DTMFnum];d8=sin(2*pi*852/handles.fs*n)+sin(2*pi*1336/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d8,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d8,8192);% --- Executes on button press in num9.function num9_Callback(hObject, eventdata, handles)% hObject handle to num9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n9=strcat(get(handles.numshow,'string'),'9') %??è?êy×?o???set(handles.numshow,'string',n9); %??ê?o???n=[1:handles.DTMFnum];d9=sin(2*pi*852/handles.fs*n)+sin(2*pi*1477/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d9,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d9,8192);% --- Executes on button press in num10.function num10_Callback(hObject, eventdata, handles)% hObject handle to num10 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n=[1:1000];num=get(handles.numshow,'string');l=length(num);n10=strrep(num,num,num(1:l-1));d10=sin(0.7217*n)+sin(0.9273*n);set(handles.numshow,'string',n10);L=length(handles.NUM);handles.NUM=handles.NUM(1:L-820);guidata(hObject, handles);audioplayer(d10,8192);% --- Executes on button press in num0.function num0_Callback(hObject, eventdata, handles)% hObject handle to num0 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)n0=strcat(get(handles.numshow,'string'),'0') %??è?êy×?o???set(handles.numshow,'string',n0); %??ê?o???n=[1:handles.DTMFnum];d0=sin(2*pi*941/handles.fs*n)+sin(2*pi*1336/handles.fs*n);%??ó|DDáD?μ?êspace=zeros(1,handles.DTMFnum);%410??0?£?a?2ò?D?o?temp=[d0,space];handles.NUM=[handles.NUM,temp];%′?′¢á?D?μ?2|o?ò?D?o?guidata(hObject,handles);audioplayer(d0,8192);% --- Executes on button press in num11.function num11_Callback(hObject, eventdata, handles)% hObject handle to num11 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.numshow,'string',[get(handles.numshow,'string'),'#']);fs=8192;fL=941;fH=1477;wL=2*pi*fL/fs;wH=2*pi*fH/fs;n=1:410;d12=sin(wL*n)+sin(wH*n);sound=[d12,zeros(1,410)];audioplayer(sound,fs)pause(.5);if ~isempty(handles.NUM)audioplayer(handles.NUM,fs);all_numdata=handles.NUM;n=length(handles.NUM)/820;rowf_mat=zeros(1,n);colf_mat=zeros(1,n);identify_result='';for i=1:nd=all_numdata((i-1)*820+1:i*820);f=fft(d,fs);a=abs(f);p=a.*a/fs;[value,rowf_mat(i)]=max(p(1:1000));[value,colf_mat(i)]=max(p(1000:1700));colf_mat(i)=colf_mat(i)+1000;endfor i=1:nrowf=rowf_mat(i);colf=colf_mat(i);if rowf<730;row=1;elseif rowf<810row=2;elseif rowf<900row=3;elserow=4;endif colf<1272.5;col=1;elseif colf<1406.5col=2;elsecol=3;endif row==4&&col==2row=1;col=0;endidentify_result=strcat(identify_result,num2str(3*(row-1)+col));endset(handles.numshow2,'string',identify_result);end实验结果:1.拨号2.删除二、总结、讨论和建议本次实验开始时用的wavplay函数实现拨号音,但是在电脑上运行时因为MATLAB版本较高,wavplay函数已删除,改为了audioplayer函数实现,但是audioplayer函数需要参数定义,查阅了很多资料也没有学到,以至于运行程序的时候,总是在“#”回显是因为audioplayer的缘故不能实现回显,没有完成语音信号的识别。

相关文档
最新文档