解决方案

语音信号处理基础知识之频谱、相位谱、幅度谱、功率谱及语谱图

seo靠我 2023-09-23 21:19:33

1,语音信号处理

一段音频信号在时域上,可以用一个实数向量来表示。这个数组的大小=采样率*音频时长。举个例子:一段采样率为8000,长15.6s的音频在matlab中表示为:15.6x8000=1248SEO靠我00大小的实数向量

下面是利用matlab读取.wav文件和.pcm文件的两种方法

1.1 读取wav

[x1, fs_n] = audioread(test\Far_common.wav);

1.2 读取pSEO靠我cm

fid_far = fopen("test\Far_common.pcm",r); x_far = fread(fid_far,inf,int16);

从上图可以看出,音频信号在maSEO靠我tlab中就是用一个向量来表示。

2,语音信号处理基础知识

2.1, 频谱图

概念: 表示信号频率与能量的关系。频谱图一般由相位频谱图和幅度频谱图两部分构成。

绘制方法:对一段时域音频做傅里叶变换,得到的就是频SEO靠我谱图。但是由于其包含两部的信息,因此不能直接绘制。其可以作为相位频谱图和幅度频谱图分别进行绘制。

[x1, fs_n] = audioread(D:\blog\新建文件夹\Far_common.wav)SEO靠我; xi_fd = fft(x1);

观察结果可以发现,一维向量做傅里叶变化后得到一个同样的大小的复数向量。

2.1.1 相位频谱图

概念:在傅里叶分析中,将各个分量的相位随频率的变化成为信SEO靠我号的相位谱。

绘制方法: 将频谱中的幅值部分换成相角,这里利用matlab中的angle函数进行绘制。

[x1, fs_n] = audioread(test\Far_common.wav); %频域信息 SEO靠我 x1_fd = fft(x1);%求相位谱 n=0:length(x1)-1; f=n*fs_n/length(x1); x1_abs SEO靠我= abs(x1_fd); ph= 2*angle(x1_fd(1:length(x1)/2)); ph= ph *180/pi; plot(f(1:lSEO靠我ength(x1)/2),ph(1:length(x1)/2)); xlabel(频率/hz),ylabel(相角),title(相位谱);

这里由于选取音频的问题,导致相位谱太过密集。SEO靠我

2.1.2 幅度频谱图

概念: 在傅里叶分析中,将各个分量的幅度随频率的变化成为信号的幅度谱。

绘制方法: 对信号进行fft后的复数向量进行取模操作,得到的就是幅度谱。

%求幅度谱 x1_fd_SEO靠我abs = abs(x1_fd); plot(f(1:length(x1)/2),x1_fd_abs(1:length(x1)/2)); xlabel(频率/hz),ySEO靠我label(幅度),title(幅度谱);

2.2,功率谱(能量谱):

概念: 功率谱是功率谱密度函数的简称,它定义为单位频带内的信号功率。它表示了信号功率随着频率的变化情况,即信号功率在频域的分布状况。

SEO靠我制方法: 对信号进行fft后的复数向量进行求实部和虚部的平方和操作,得到的就是功率谱。(即幅度谱的平方)

%求功率谱 for i=1:length(x1_fd)x1_power(i)=poSEO靠我wer(real(x1_fd(i)),2)+power(imag(x1_fd(i)),2); end

2.3,语谱图:

概念:语谱图的横坐标是时间,纵坐标是频率,坐标点值为语音数据能量。由SEO靠我于是采用二维平面表达三维信息,所以能量值的大小是通过颜色来表示的,颜色深,表示该点的语音能量越强。其可以理解为利用二维坐标表示三维信息。

绘制方法:这里利用了matlab中Voicebox资源包下的enSEO靠我frame函数。

%求语谱图 clear all; clc; close all; [x,Fs]=audioread(test\Far_common.wav); %读入数SEO靠我据文件 wlen=800; inc=80; win=hanning(wlen);% 设置帧长,帧移和窗函数 N=length(x); time=(0:N-1)/Fs; SEO靠我% 计算时间 y=enframe(x,win,inc); % 分帧 fn=size(y,2); % 帧数 frameTime=(((1:fn)-1)*iSEO靠我nc+wlen/2)/Fs; % 计算每帧对应的时间 W2=wlen/2+1; n2=1:W2; freq=(n2-1)*Fs/wlen; % 计算FFT后的频率刻度 SEO靠我 Y=fft(y); % 短时傅里叶变换 clf % 初始化图形 % 画出语谱图 set(gcf,Position,[20 100 600SEO靠我 500]); axes(Position,[0.1 0.1 0.85 0.5]); imagesc(frameTime,freq,abs(Y(n2,:))); % 画SEO靠我出Y的图像 axis xy; ylabel(频率/Hz);xlabel(时间/s); title(语谱图); % 画出语音信号的波形 aSEO靠我xes(Position,[0.07 0.72 0.9 0.22]); plot(time,x,k); xlim([0 max(time)]); xlaSEO靠我bel(时间/s); ylabel(幅值); title(语音信号波形);

以上就是我对音频信号处理分析过程中遇到的幅度谱、相位谱、能量谱等基础知识的总结,如有错误,欢迎指正。

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2