matlab怎么把音频变成信号_matlab实现声音信号的频谱分析

首先,我需要理清我的想法。

[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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球