MATLAB听拨号音识别号码应用
1引言
双音多频信号(Dual Tone Multiple Frequency , DTMF)最初是由美国贝尔实验室研制。它具有很强的抗干扰能力以及较快的传输速度,因此被广泛应用于音频电话系统中。另外,它也可以在数据通信系统中被用来实现各种数据流和语音等信息的远程传输。DTMF信号令因其能实现更快的拨号速率而逐渐在全世界范围内被广泛采用,加上它便于自动检测识别以及电话业务的扩展,所以很快取代了传统转盘式电话机使用的脉冲计数方式的拨号形式,可以说DTMF语音识别技术已经发展的相对成熟。DTMF信号是将两个特定的单音频信号进行组合来代表特定的数字信号进行数据传输的编码方式,因其具有较强的抗干扰能力,目前被广泛应用于电话拨号以及交互式控制系统中,对它的检测十分关键。本文提出一种基于MATLAB的语音识别系统,通过读取手机拨号音录音文件,经过频率分析,实现了手机号码识别的功能。
2设计原理
2.1 拨号音信号的实质
拨号音信号为DTMF: 即Double Tone Multiple Frequency,双音多频信号 。DTMF信号的产生原理:双音频信号是两个正弦波信号的叠加,选定两个频率fl和fh后很容易地得到这种信号的数学表达式: 。
2.2 DTMF信号特点
1.所有音频都位于人的可听范围内,因此按键下去时人可以听到。
2.8个频率中没有一个频率是其他任意一个频率的倍数。
3.任意两个频率的组合,相加或相减都不等于其他任意一个频率。
这些特性不仅简化了DTMF信号的解码同时也降低了DTMF误检的概率。国际上采用的频率有:低频组(697hz,770hz,852hz,941hz),高频群(1209hz,1366hz,1477hz,1633hz)。用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合如图一:
图1 DTMF信号组合表
2.3识别DTMF信号的方法
利用傅里叶变换估计出DTMF信号中两个单频信号的频率值,在误差的范围内对照DTMF信号表即可知道DTMF信号表达的值,从而实现听拨号音识别号码的功能。
3设计思路
3.1 系统总体构想
读取拨号音的录音文件,找到有效信号,将拨号音信号分为11个有效的单个信号;制作两个带通滤波器,一个带通范围697Hz到941Hz,另一个1209Hz到1477Hz,使11个有效的单个信号依次通过这两个带通滤波器,通过算法获得信号的低频率段最高频率和高频率段最高频率,然后通过判断语句识别单个信号,将数据储存在数组中,最后依次输出数组中的值从而得到号码。
3.2 系统框架图
图2 系统框架图
4功能实现
4.1 拨号音录音文件的读取
通过audioread函数读取拨号音的录音文件,如图三所示。audioread函数的用法:
[y,Fs] = audioread(filename);
[y,Fs] = audioread(filename,samples);
[y,Fs] = audioread(___,dataType);
输入:
filename指要读取的文件名称, 注意引号和文件后缀;
samples指读取文件的区域,举个例子,如果文件有100个数据那么长,如果读取前一半的数据,此处应为[1,50];
datatype指读取后文件的数据格式,如double和native。
输出:
y是读出数据,为数组,双声道为二维数组,两个列向量。
Fs为音频文件的采样率
图3 拨号音时域图
4.2 信号分割
根据该信号的时域图,找到有效信号的采样点,然后用[y,Fs] = audioread(filename,samples);将信号分为11个有效单个信号,如图四所示:
图4 分割的单个拨号音时域图
4.3 信号储存
将11个有效单个信号储存在cell{}数组中,方便后面使用。
4.4 带通滤波器
应用切比雪夫滤波器,设计了带通滤波器:
function Hd=band_pass(fsl,f1,f3,fsh,rp,Apass,rs,Fs),fs1:衰减截止左边界、f1:通带左边界、f3:通带右边界 、fsh:衰减截止右边界 ,通过改变fs1、f1、f3、fsh的值可做出低频段和高频段的带通滤波器。
令fs1=500,f1=697,f3=941,fsh=1000,做出一个697HZ到1941HZ的低频段的带通滤波器。
图5 单个信号通过低频段带通滤波器后的时域图
令fs1=1000,f1=1209,f3=1477,fsh=1600,做出一个1209HZ到1477HZ的高频段的带通滤波器。
图6单个信号通过高频段带通滤波器后的时域图
4.5 提取特征频率
4.5.1 傅里叶变换
通过y=fft(x)函数对滤波后的信号进行傅里叶变换,绘制该信号的频域图,可得到信号的低频段最高频率和高频段最高频率。
原始按键音:
图7 分割的单个拨号音频域图
通过低频段带通滤波器后:
图8 单个信号通过低频段带通滤波器后的频域图
通过高频段带通滤波器后:
图9 单个信号通过高频段带通滤波器后的频域图
4.5.2 获得低频和高频段最高频率
Z=abs(fft(x1)); %数组Z为信号滤波后各频率的绝对值
[mal, I]=max(Z); %求Z中最大值
index_lo=I/length(Z)*Fs; %求出最大频率
4.6 判断单个号码
用if、 if else实现条件判断,需同时满足低频和高频段最高频率条件才识别为一个号码。本系统提取的低频和高频段最高频率存在误差,其中低频段30HZ,高频段40HZ,判断条件中加入了误差范围,使其识别更精准。
4.7 识别整个号码
用for i=1:1:11 实现循环,意思是从i=1开始,循环一次后i加一,直到i=11时停止,实现依次对11个有效单个信号的循环判断。
5系统输出结果
录一段手机号码拨号音的录音文件,保存在电脑的相应位置,运行程序,成功识别并输出手机号码,程序运行结果如下图:
图11 程序运行结果图
部分代码:
代码下载链接:MATLAB听拨号音识别号码应用代码-网络安全文档类资源-CSDN下载
MATLAB听拨号音识别号码应用相关推荐
- matlab实现拨号音识别
整体思路大致就是直接spectrogram快速傅里叶变换得到语谱图然后获得三组返回值,分别对应音频信号的能量.频率.时间三个物理量.能量一开始是个复数所以要循环遍历然后abs()取模,储存成另一个矩阵 ...
- matlab电话拨号音的合成与识别代码,实验报告 电话拨号音的合成与识别
大连理工大学实验报告 学院(系): 电信 专业: 电子信息工程 班级: 电子1302 姓名: 曾昱 学号: 201311066 组: 实验时间: 实验室: 实验台: 指导教师签字: 成绩: 电话拨号音 ...
- matlab判断电话播键音,MATLAB电话拨号音的合成与识别
1.实验目的1.本实验内容基于对电话通信系统中拨号音合成与识别的仿真实现.主要涉及到电话拨号音合成的基本原理及识别的主要方法,利用 MATLAB 软件以及 FFT 算法实现对电话通信系统中拨号音的合成 ...
- 利用DTMF拨号音识别周鸿伟的手机号码
前几天在报纸上看到南京有个大学生通过分析采访视频里面的拨号音知道了周鸿伟的手机,当时想了感觉原理并不复杂,拨号音是双音多频的,首先去除噪声,然后分析DTMF(双音多频)拨号音就应该可以了. 媒体总是喜 ...
- DTMF拨号音识别手机键盘密码 —— 【WUST-CTF2020】girlfriend
文章目录 题目 DTMF脚本解码 手机键盘密码 题目 附件给了一段音频,AU打开如下: 熟悉的两段,之前打高校战"疫"的时候有遇到过类似的题目 [高校战"疫"] ...
- 基于MATLAB GUI 双音多频拨号音编解码系统
双音多频拨号音编解码系统. 一个双音多频电话机(DTMF,dual-tone multi-frequency touch-tone phone)可以对双音多频拨号音编解码系统. 一个双音多频电话机(D ...
- 从拨号音分析拨号号码
http://blog.sina.com.cn/s/blog_3cef24f001018m8v.html 去年南京大学学生刘靖康利用网络上的视频分析出周鸿祎的手机号,本人实感钦佩.思路开阔,值得我学习 ...
- 调制解调器 拨号音 原理_为什么拨号调制解调器这么吵?
调制解调器 拨号音 原理 Throughout the 1990s the majority of internet users began their session with the noisy ...
- MATLAB身份证件号码定位识别
题目:MATLAB身份证件号码定位识别 程序代码 %身份证识别程序.识别身份证上面的身份证号码,并且单独提取出来,形成一副仅剩身份证号码的二值区域图像 clc; clear all; close al ...
最新文章
- CA双向认证的时候,如果一开始下载的证书就有问题的,怎么保证以后的交易没有问题?...
- Python入门100题 | 第071题
- MyEclipse常用设置方法
- 将Python对象转换成字典
- php postgresql 数组,8.14. 数组 - [ PostgreSQL 手册 ] - 在线原生手册 - php中文网
- 自定义ImageView加载圆形图片
- 用计算机写短文教学反思,《阿西莫夫短文两篇》教学反思6则
- 软件测试面包屑什么意思,面包屑的用法面包屑有什么作用
- 在物联网领域,英特尔除了高速计算的芯片,还提供了什么技术?
- 硬件系统工程师需要具备哪些技能
- STM32L4超低功耗特性概述
- 关于springboot 的默认数据源
- Apache Drill详解
- ecshop小京东的模板切换到smarty3.1.3之去掉原生的php语法
- win7 64位 SEC S3C2410X Test B/D安装
- Dynamic CRM9.0 环境安装部署手册步骤和遇到的一些问题解决方案(包含ADFS部署)
- 通过JS定义一个Iframe
- php5apache2.dll,php5apache2_4.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
- Matlab群体智能优化算法之鹈鹕优化算法(POA)
- dzzoffice+onlyoffice 打开wps方法,亲测方案。
热门文章
- 2022年清华大学计算机考研复试录取日程
- Vue 可视化大屏适配方案
- 要求计算 X+Y=Z,将结果 Z 输出到屏幕,其中 X=001565A0H, Y=0021B79EH
- 《ANSYS 14热力学/电磁学/耦合场分析自学手册》——1.3 ANSYS简介
- 【713. 乘积小于 K 的子数组】
- 简单快速的Style Transfer(利用VGG19)-笔记
- float和eval在python中的意思_Python3中,eval和float有什么区别
- 云南省2021年高考成绩查询时间,2021年云南高考成绩查询时间安排 什么时候出分...
- 云南计算机考研学校排名2015,云南省考研初试成绩出炉 几家欢喜几家愁
- 75 道 BAJT 中高级 Java 面试题,你能答上几道?