- 137
- 0
- 约9.85千字
- 约 9页
- 2020-10-06 发布于山东
- 举报
一、 实验目的
1. 本实验的内容基于对电话通信系统中拨号音的识别仿真实验。 主要涉及到电话
拨号音识别的基本原理和识别的主要方法。利用 matlab 软件以及 fft 算法实
现对电话通信系统中拨号音的识别。并进一步利用 matlab 中的图形用户界面制作简单直观的模拟界面,使其对拨号音的识别有个基本的了解。
能够利用矩阵不同的基频合成 0-9 不同按键的拨号音, 并能够对不同的拨号音加以正确的识别。 进一步画出简单的图形, 从而实现对电话拨号音系统的简单的实验仿真。
了解学习 DTMF(双音多频)相关知识,知道双音多频的信号是用两个特定的单音频率信号的组合来代表数字或功能。
二、实验仪器
安装有 MATLAB软件的计算机一台。
三、实验原理
DTMF(双音多频)
( 1) 基本概念
电话拨号有两种,脉冲和音频,所谓音频也成双音多频( DTMF)信号的拨号方式即是电话拨号时每按一个键,有两个音频频率叠加成一个双音频信号,十六个按键由八个音频频率区分。
( 2) 编制规则
具体 DTMF编制规则如表 1 所示
1 DTMF键盘高群 /Hz
低群 /Hz
1209
1336
1477
1633
697
1
2
3
A
770
4
5
6
B
852
7
8
9
C
941
*
0
#
D
双音多频的拨号键盘是 4×4 的矩阵,每一行代表一个低频,每一列代表一个高频。用户每按一个键就发送一个高频和低频的正弦信号组合。
电话按键音识别
MATLAB中 audioread 函数可以实现多种音频信号的读取,调用形式为
[y,fs]=audioread()
其中 y 为所读取的音频数据;
fs 为采样频率;
调用的为指定载入的音频文件名称。
fft 频谱分析公式
w
T
/ fs 2 f / fs
(1)
w 2 / N k
(2)
由公式(
1)和( 2)可得:
f
fs
k / N
(3)
四.实验内容
本实验要实现电话拨号音 (DTMF)信号的检测的识别,可以通过直接计算傅里叶变换时的输入信号组成的频率。这里采用 FFT 算法对信号进行解码分析。首先对接收到的数字信号作 FFT 分析。计算出其频幅谱,继而得到功率谱,组成输入信号的
频率必定对应功率谱的峰值。对于连续的双音多频 (DTMF)信号。需要把有效的数字
拨号信号从静音间隔中分割提取出来,然后再用 FFT 算法对信号进行解码分析,得出电话拨号码。
五、实验过程与分析
读取音频文件
利用 MATLAB中 audioread 读取
[x,fs]=audioread( 电话按键音 .m4a);
声道提取
电话按键音是双声道,本实验提取声道 1 进行分析:
x=x(:,1) ;
端点提取
该按键音为一段连续的 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 所示。
程序运行最终结果为:
The telephone number is:
1
h
c
e 0
p
s
-1
0.5
1
1.5
2
2.5
3
3.5
4
样本点
5
x 10
200
y
r
n 100
e
0
100 200 300 400 500 600 700 800
帧数
r
c 5
z
0
100
200
300
400
500
600
700
800
帧数
图 1
端点检测结果图
图 2 电话按键音 fft
频谱图
可靠性检验
自己录制一段拨号音,检验程序的可靠性,这里为了
为了验证程序的正确、 可靠性,又分别录制了我自己手机号以及 1234567890 两段不同格式不同号码,在
原创力文档

文档评论(0)