首先,我需要理清一下自己的思路
1.转化格式为wav——下载软件
2.将声音信号放到matlab里面,那些特征如何显示分析?——
2.FFT变换是什么?——看其他人代码
3.能量分布情况又是什么?——看其他人代码
知识盲点
老实讲,这一个要实现,代码很简单,但是因为理论知识跟不上,导致我分析起来有些吃力。
阐述一下问题:
1.y是指采集数据,指的是发出的振幅值,可是为什么是在-1~1呢?(图形上就是这样显示的)
2.如何看一段音频的数据位数和数据格式?
3.双声道变成单声道,是将y作为一组向量数组,‘y(:,1)’和‘y(:,2)’分别取第一个声道和第二个声道,但是怎么确定哪个是左声道呢?
4.利用plot画图,当我画plot(t,y)的时候,会因为内存不足而停止,可是为什么呢?(t一样的,只是y是双声道的而已。)t=(0:ylength-1)/fs是什么意思?
那么这种方式画图和plot(y)有什么区别吗?
一、输入原始信号的时域图和频域图
clear;
clc;
[y,fs]=audioread('E:\son\dudu.wav'); #将声音放于matlab中
info=audioinfo('E:\son\dudu.wav') #得到声音的格式、位数、频率等
%sound(y,fs);
T=1/fs; #采样时间
t=(0:length(y)-1)*T;#时间
f=(0:length(y)-1)*fs/length(y);
figure(1);
yz=y(:,1);#左声道
subplot(2,1,1);
plot(t,yz);#输入信号时域曲线
title('原始信号时域');
xlabel('时间');
ylabel('振幅');
subplot(2,1,2);
n=length(yz);#进行变换的点数
y1=fft(yz,n); #对n点进行傅里叶变换到频域
F=fs/length(yz); #谱分辨率,频谱间隔
subplot(212)
plot(f,abs(y1));#左声道频谱图
title('原始信号频谱');
xlabel('F(Hz)');
ylabel('H(jw)');
grid on
1.jpg
声音的相关数据.PNG
二、能量分布图
figure(2)
subplot(211);
Pyy=y1(1:1100+1);#按照处理向量的方式得到所需声音信号的范围
f=(1:1100+1);
plot(f, 20*log10(abs(Pyy))) %能量频谱图
xlabel('Frequency (Hz)')
ylabel('Power (dB)')
subplot(212)
bar(f,abs(Pyy)) %能量坐标图
能量.jpg