首先,我需要理清我的想法。
[En]
First of all, I need to sort out my thoughts.
1.转化格式为wav——下载软件
2.将声音信号放到matlab里面,那些特征如何显示分析?——
2.FFT变换是什么?——看其他人代码
3.能量分布情况又是什么?——看其他人代码
知识盲点
老实说,要实现这一点,代码很简单,但因为理论知识跟不上,我很难分析。
[En]
To be honest, to implement this one, the code is very simple, but because the theoretical knowledge can not keep up, it is difficult for me to analyze.
阐述一下问题:
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)有什么区别吗?
首先,输入原始信号的时域图和频域图
[En]
First, input the time domain diagram and frequency domain diagram of the original signal
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
Original: https://blog.csdn.net/weixin_26824207/article/details/112808969
Author: 天蓝草
Title: matlab怎么把音频变成信号_matlab实现声音信号的频谱分析
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/525185/
转载文章受原作者版权保护。转载请注明原作者出处!