Matlab:处理音频信号

文章目录

    • 音频处理
      • 音频读写:
      • 声道合并
    • 数学变换
      • 傅里叶变换
      • 反傅里叶变换

音频处理

音频读写:

[y,Fs] = audioread('Audio.wav');    %读取音频
y1 = y(:,1);                        %截取左声道
y2 = y(:,2);                        %截取右声道

sigLen = length(y1);
t = 0 : 1/Fs : (sigLen-1)/Fs;
% 画时域图
figure;plot(t,y1);
xlabel('Time (seconds)');ylabel('Amplitude');title('源音频时域图');

Matlab:处理音频信号_第1张图片

audiowrite('HandledAudio.wav', y, Fs);  %写入音频y到HandledAudio.wav

声道合并

Y = y1 + y2;                                %矩阵变量合并
Y_m = max(max(Y), abs(min(Y)));             %求极值
Audio_my = Y./Y_m;                     %归一化

数学变换

傅里叶变换

Y1 = fft(y1);

fm = 22000 * length(Y1) / Fs;       %频谱图上限频率22k
f = (0 : fm) * (Fs / length(y1));   %频谱图频率刻度
ampli = abs(Y1(1:length(f)));       %幅度
figure;plot(f,ampli);
xlabel('Frequency (Hz)');ylabel('Amplitude');title('源音频频谱图');

ampli_dB = log(1 + ampli);          %对幅度做对数运算
figure;plot(f,ampli_dB);
xlabel('Frequency (Hz)');ylabel('Amplitude(dB)');title('源音频频谱图(对数运算后)');

Matlab:处理音频信号_第2张图片

反傅里叶变换

y_ifft1 = ifft(Y1);

ampli_i_y = real(y_ifft1);
ti = (0 : length(y_ifft1) - 1) / Fs;
figure;plot(ti,ampli_i_y);
xlabel('Time (seconds)');ylabel('Amplitude');title('反fft后音频时域图');

Matlab:处理音频信号_第3张图片

你可能感兴趣的:(算法)