第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 声信号处理工程研究(1)---时域图(波形图)

声信号处理工程研究(1)---时域图(波形图)

时间:2021-02-27 19:38:17

相关推荐

声信号处理工程研究(1)---时域图(波形图)

此系列的目的是:

帮大家上手声信号处理。

从工程角度讲,声信号处理就是对噪声信号(音频数据)进行处理分析,得到音频数据隐含的数据信息,涉及声学和信号处理两大学科。(仅个人理解)

后续内容就是通过信号处理方法来处理音频信号数据,得到音频信号数据的分析结果(数值、数组、图...)并展示,实现是通过MATLAB软件来编写相关程序,对一个具体音频进行分析得出结果,后续会有涉及其他代码工程实现简单的音频信号处理。

MATLAB下载参考:/kkJw5

正文

本篇讲解绘制音频文件的时域图(波形图)

什么是时域?

时域:自变量是时间,即横轴是时间,纵轴是信号的变化(振幅)。其动态信号x ( t ) 是描述信号在不同时刻取值的函数。

什么是时域图?

时域图:表现的是一段音频在一段时间内音量的变化,其横轴是时间方向,纵轴是振幅方向。

以模拟信号为例,对一个频率f=5Hz,周期为T=1/f=0.2s的单频正弦模拟信号进行采样,画出他的时域图,模拟信号为单频正弦信号x(t)=cos(2*pi*5*t),原始模拟信号如下图

前言

绘制音频数据的时域图,需要对原始音频采样得到采样数据。

采样过程:采集音频的等间隔时间点的振幅信息(学名是瞬时声压)。即每隔(1/fs)秒,采集音频当前时刻的数据。从开始到结束,就得到了一个数组,数组每个元素代表每一个采样时刻的音频振幅数据。

采样率(fs),也称为采样速度或者采样频率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算机每秒钟采集多少个样本(样本点)。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。(采样间隔时间=1/fs)

频率f是音频信号的频率,采样率fs是采集设备决定的,二者不一样。

模拟

模拟采集过程得到采样数据,并通过采样数据和采样频率画出采样数据的时域图

f=5;%设定模拟信号的频率为5Hzfs=50;%采样频率为50Hzt=0:1/fs:1;%生成数组t,起点为0,终点为1,数组相邻元素差为0.02,即t=[0,0.02,0.04,0.06 .... ,1]%含义:从t=0s时刻采样开始一直到t=1s时刻采样结束,采样时间间隔为tt=1/fs=0.02s,得到采样时间点数组t[0,0.01,0.04,0.06 .... ,1]%模拟采集数据过程,每个时间点采集一个样本数据 data=cos(2*pi*f*t);%得到采样数据数组data,原始模拟信号函数为cos(2*pi*5*t),%将数组t每个元素代入,求值,即得到采样数据数组;第一个数组元素为data(0)=cos(2*pi*5*0)=1,第二个为data(0.02)=cos(2*pi*5*0.02)≈0.8090figure(1);%创建图窗1plot(t,data);%画图,x轴为t,y轴为data,每个点( t(i) , data(i) )在第t(i)时间点采集到的音频数据的值为data(i),将这些采样点连线就画出了采样音频的波形图(时域图)title('模拟信号');xlabel('时间/s');ylabel('振幅');ylim([-2 2]);%y轴显示上限为2,下限为-2

结果如下图2:

分析1:

通过对比图1,2 两个采样数据的时域图很像模拟信号的函数曲线,但是有区别,这是因为我们采样率不够高的原因,没有把原音频的每个时间点的数据都采集到,比如说0.001时刻的数据没有采集到。如果我们提高采样率,就能采集到更详细的音频数据。甚至采样率fs足够大的时候,时间间隔(1/fs)就会无限小,也就是我们几乎采集到每个时刻的音频数据了。(当然只是理论上,受限于硬件,软件等因素,不可能设定无限大的采样率)

升级版

%%增加采样频率fs=1000;%采样频率为1000Hzt=0:1/fs:1;data=cos(2*pi*f*t);figure(2);plot(t,data);title('模拟信号');xlabel('时间/s');ylabel('振幅');ylim([-2 2]);

结果如下图3:

分析2

图3和图1,看上去几乎是一样的,我们把采样率提高到了1000Hz,也就是每秒采集了一千个采样数据,比之前的50Hz详细的多,更接近原始模拟音频信号曲线了。当然,可能已经足够好了,但是,还是有缺陷的。

思考:

采样率需要大到什么程度合适,才能较好地采集到音频数据?

时域图中能看出什么?

答:

第一个问题涉及到奈奎斯特采样定理(Nyquist)(采样率fs必须大于被测信号感兴趣最高频率分量的两倍), 这里我们可以简单理解为采样率要大于音频信号的频率的两倍

参考链接:/jDqHb

绘制时域图其实通过得到时间数组t(i)和采样数据数组data(i),一一对应得到一个个点,连线最后得到时域图。实际中我们可能只有采样数据和采样率,不确定音频的信息(单频,多频,幅值),但是画出时域图我们可以知道这是一个单频信号的采样数据,幅值为1,周期为T=0.2s。

实战

读取音频文件1800.wav 里面的数据并画出时域图(波形图)

音频可以放在代码 .m 文件的路径下

[data,fs]=audioread('1800.wav');%读取函数 读取到音频文件的采样数据数组data和采样率fslen=length(data);%求出数据长度,即采样数据量t1=(len-1)/fs;%采样结束的时间点,采集了len个数据,对应len-1个时间间隔(1/fs),时间从0秒开始,则结束时间为0+(len-1)/fs秒%每秒采样fs个数据,共len个数据t=0:1/fs:t1;% 求出时间数组plot(t,data);%绘图 时间数组和采样数据数组一一对应title('wav文件时域图');xlabel('时间/s');ylabel('振幅');

效果图4

分析:这是一个音频的时域图,通过分析可以看出这个音频是20s的音频,因为我们画出了他所有的采样点数据,这也是一个多个频率声音混合的音频。音频较为稳定,没有突然的异响和声音减弱。(编不下去了,工程或者研究中从时域图很难分析出信号的信息,所以会用其他的信号处理手段,下篇会讲音频分析之时域分析)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。