电话拨号音的识别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
% 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 untitled1225 (see VARARGIN)
the local
%
function named CALLBACK in UNTITLED1225.M with the given input
arguments.
%
%
UNTITLED1225('Property','Value',...) creates a new UNTITLED1225
6
or raises the
1.3 基本原理
电话拨号音识别的基本原理涉及到双音多频 DTMF(Dual Tone Multi Frequency),它是由高频群和低频群组成,高低频群各包含 4 个频率。一个高频 信号和一个低频信号叠加组成一个组合信号,代表一个数字。DTMF 信令有 16 个 编码。双音多频信号是贝尔实验室发明的,其目的是为了自动完成长途呼叫。双 音多频的拨号键盘是 4×4 的矩阵,每一行代表一个低频,每一列代表一个高频。 每按一个键就发送一个高频和低频的正弦信号组合,比如'1'相当于 697 和 1209 赫兹(Hz)。交换机可以解码这些频率组合并确定所对应的按键。DTMF 编解码器 在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的 DTMF 信号 中检测击键或数字信息的存在性。一个 DTMF 信号由两个频率的音频信号叠加构 成。这两个音频信号的频率来自两组预分配的频率组:行频组或列频组。每一对 这样的音频信号唯一表示一个数字或符号。电话机中通常有 16 个按键,其中有 10 个数字键 0~9 和 6 个功能键*、#、A、B、C、D。由于按照组合原理,一般应 有 8 种不同的单音频信号。因此可采用的频率也有 8 种,故称之为多频,又因它 采用从 8 种频率中任意抽出 2 种进行组合来进行编码,所以又称之为“8 中取 2” 的编码技术。根据 CCITT 的建议,国际上采用的多种频率为 697Hz、770Hz、852Hz、 941Hz、1209Hz、1336Hz、1477Hz 和 1633Hz 等 8 种。用这 8 种频率可形成 16 种 不同的组合,从而代表 16 种不同的数字或功能键,具体组合见下表。
参考文献
[1]康华光.电子技术基础数字部分.北京:高等教育出版社,2006; [2]高海林钱满义.DSP 技术及其应用.北京交通大学电工电子教学基地; [3]王彬.MATLAB 数字信号处理.北京.机械工业出版社。 [4]《电话拨号音的识别——MATLAB 之旅》——2024 的 ks [5]合肥学院.课程设计论文.
附录
function varargout = untitled1225(varargin)
% UNTITLED1225 MATLAB code for untitled1225.fig
%
UNTITLED1225, by itself, creates a new UNTITLED1225 or raises theLeabharlann Baidu
% --- Outputs from this function are returned to the command line. function varargout = untitled1225_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)
existing
%
singleton*.
%
%
H = UNTITLED1225 returns the handle to a new UNTITLED1225 or the
handle to
%
the existing singleton*.
%
%
UNTITLED1225('CALLBACK',hObject,eventData,handles,...) calls
1.4.4 仿真结果---数字“”的模拟 总结
对于本次实验项目,一开始我们想到了两种解决方法,第一种是自己录拨号音, 编写对应拨号音识别函数,然后将音频文件导入 MATLAB 的识别函数中,利用函 数计算分析识别出相应的拨号键,并绘制出频谱图;第二种是:利用 GUI 界面来 仿真模拟电话拨号过程,按照高低频率和拨号按键相匹配的表格(表一)给每个
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help untitled1225
% Last Modified by GUIDE v2.5 25-Dec-2015 19:14:02
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled1225_OpeningFcn, ...
% Choose default command line output for untitled1225 handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% UIWAIT makes untitled1225 wait for user response (see UIRESUME) % uiwait(handles.figure1);
机的键盘矩阵对应起来。其中选用我们熟悉的 10 个数字键 0 — 9 ,2 个功能 键“ * ”、“#”,另四个键省略。按照图 1 电话机键盘矩阵的排列方式制作四 行三列的按键控件。每个按键可用 ( Push Button )添加。 然后,为了 更直观的反映对应的按键号码,可以设置一个编辑框,用于动态的显示拨号号码, 模拟实际电话的拨号显示窗口。编辑框可用 ( Edit Text )添加。
鉴于 CCITT 对 DTMF 信号规定的指标,这里每个数字信号取 1000 个采样 点模拟按键信号,并且每两个数字之间用 100 个 0 来表示间隔来模拟静音。以 便区别连续的两个按键信号。间隔的静音信号也是在按键时产生的。 1.4.3 DTMF 信号的检测识别
要实现电话拨号音( DTMF )信号的检测识别,可以通过直接计算傅里叶变 换得到输入信号的组成频率。这里采用 FFT 算法对信号进行解码分析。首先对 接收到的数字信号作 FFT 分析,计算出其幅频谱,进而得到功率谱,组成输入 信号的频率必定对应功率谱的峰值。对于连续的双音多频( DTMF )信号,需要 把有效的数字拨号信号从静音间隔信号中分割提取出来,然后再用 FFT 算法对 信号进行解码分析。 MATLAB 实现信号音的识别如下:
% --- Executes just before untitled1225 is made visible. function untitled1225_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure
application
%
stop. All inputs are passed to untitled1225_OpeningFcn via
varargin.
%
%
*See GUI Options on GUIDE's Tools menu. Choose "GUI allows only
one
%
instance to run (singleton)".
数字信号处理实验
课题论文设计
题目:电话拨号音的识别 专业:通信工程 年级:2013 级
日期:2015 年 12 月 17 日
1.1 简介
目录
1
1.2 实验目的 1.3 基本原理 1.4 具体实现步骤
1.4.1 图形电话拨号面板的制作 1.4.2 DTMF 信号的产生合成 1.4.3 DTMF 信号的检测识别 1.4.4 仿真结果---拨号音的识别 总结 改进与完善 参考文献 附录
最终利用 GUI 图形用户界面设计工具生成的图形电话拨号面板用于拨号音 的合成产生部分,如下图所示。这里将其保存为 tu1.fig 文件。
1.4.2 DTMF 信号的产生合成
4
现在将对上节制作的图形电话拨号面板上的各控件单位的动作和变化进行 设置,即对 tu1.m 文件进行编辑。其主要的功能是使对应的按键,按照表 1 的 对应关系产生相应的拨号音,完成对应行频及列频的叠加输出。此外,对于图形 界面的需要,还要使按键的号码数字显示在拨号显示窗口中。
'gui_OutputFcn', @untitled1225_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
表一:DTMF 的组合功能
3
1.4 具体实现步骤
1.4.1 图形电话拨号面板的制作 创 建 GUI 步 骤 : 在 主 界 面 菜 单 栏 上 点 击 File-New-GUI , 选 择 Blank
GUI(Default),即可进入 GUI 图形用户界面。 利用 GUI 图形用户界面设计工具制作电话拨号面板,把 DTMF 信号和电话
%
existing singleton*. Starting from the left, property value
pairs are
%
applied to the GUI before untitled1225_OpeningFcn gets called.
An
%
unrecognized property name or invalid value makes property
5
按键写入响应函数,这样就能实现拨相应的按键时发出对应的频率合成音,同时 写入识别函数,同时在 GUI 界面再编写一个识别按键,这样就能在拨号音发出的 同时识别出该拨号键并绘制出频谱图。本次我们采用的是第二种方法。
改进与完善
1、功能较少:只能实现 0—9 的 10 个数字的识别,功能较少,可以再添加删除、 清空、确认、返回、关闭等按键及功能。 2、界面粗糙不美观:只是简单的使用 GUI 来设计拨号面板,所 以界面很粗糙简单。 3、各程序分立不集中:各个实现程序都太分立,频谱分析、识别、拨号按键等 功能的显示不在同一平面内,查看还需要分别打开。
1.1 简介
基于对电话通信系统中拨号音识别的仿真实现,第一步我们需了解电话拨号 音识别的基本原理和主要方法,之后利用 MATLAB 软件以及 FFT 算法实现对电
2
话通信系统中拨号音的识别,最后对电话数字拨号模拟
1.2 实验目的
电话拨号音识别就是利用矩阵不同的基频合成 0 - 9 不同按键的拨号音, 并能够对不同的拨号音加以正确的识别,实现由拨号音解析出号码数字的过程。 进一步利用 GUI 做出简单的图形操作界面,从而实现对电话拨号音系统的简单 的计算机仿真。
end
if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else gui_mainfcn(gui_State, varargin{:});
end % End initialization code - DO NOT EDIT
相关文档
最新文档