MATLAB电话拨号音的合成与识别 下载本文

内容发布更新时间 : 2024/9/26 3:29:35星期一 下面是文章的全部内容请认真阅读。

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 、 B 、 C 、 D 。其中 12 个按键是我们比较熟悉的按键,另外由第 4 列确定的按键作为保留,作为功能键留为今后他用。 根据 CCITT 建议,国际上采用 697Hz 、 770Hz 、 852Hz 、 94lHz 低频群及 1209Hz 、 1336Hz 、 1477H: 、 1633Hz 高频群。从低频群和高频群任意各抽出一种频率进行组合,共有 16 种组合,代表 16 种不同的数字键或功能,每个按键唯一地由一组行频和列频组成,如表 1 所示。 (文章来自:http://hi.http://www.35331.cn//forestlong/blog/item/dd33911a24b5fbf3ae5133ee.html 转载请注明出处。) DTMF 的组合功能  

3.实验步骤

1. DTMF 信号的产生合成

现在将对上节制作的图形电话拨号面板上的各控件单位的动作和变化进行设置,即对 tu1.m 文件进行编辑。其主要的功能是使对应的按键,按照表 1 的对应关系产生相应的拨号音,完成对应行频及列频的叠加输出。此外,对于图形界面的需要,还要使按键的号码数字显示在拨号显示窗口中。

鉴于 CCITT 对 DTMF 信号规定的指标,这里每个数字信号取 1000 个采样点模拟按键信号,并且每两个数字之间用 100 个 0 来表示间隔来模拟静音。以便区别连续的两个按键信号。间隔的静音信号也是在按键时产生的。 以按键 0 为例,简单介绍拨号音产生的过程: % 按键 0 的响应函数

function varargout = pushbutton0_Callback(h, eventdata, handles, varargin)

n=[1:1000]; % 每个数字 1000 个采样点表示

d0=sin(0.7217*n)+sin(1.0247*n); % 对应行频列频叠加 n0=strcat(get(handles.edit1,'string'),'0'); % 获取数字号码 set(handles.edit1,'string',n0); % 显示号码 space=zeros(1,100); 0 个 0 模拟静音信号 global NUM phone=[NUM,d0];

NUM=[phone,space]; % 存储连续的拨号音信号 wavplay(d0,8192); % 产生拨号音

程序解释:

NUM 为定义的全局变量,用于存储连续的拨号音( DTMF 信号,包括数字信号音以及静音信号。

d0=sin(0.7217*n)+sin(1.0247*n) 中的行频与列频是由表 1