数字信号处理课设:matlab音频重低音处理

实验结果

重低音效果处理结果图:


实验要求

(1)利用 NI 公司的 myDAQ“书包实验室”硬件和 LabVIEW 软件平台,采集语音 信号或从网络上下载数字语音信号,得到一段语音数字信号; (2)设计适当的处理算法,对数字语音信号进行数字处理,已达到对语音信号进 行快速、慢速、倒序、拼接等回放的效果。采用 LabVIEW 或 MATLAB 软件平台处 理语音信号,并利用 myDAQ 的 D/A 模拟输出端口,外接音响设备验证处理结 果; (3)对语音信号进行数字低通和高通滤波处理,分别提取语音信号的低频和高频 分量。提出滤波器的设计指标,并设计数字低通和高通滤波器。采用 LabVIEW 或 MATLAB 软件平台,对语音信号分别进行低通、高通滤波和低音加重处理,并利用 myDAQ 的 D/A 模拟输出端口,外接音响设备验证处理后的低音、高音和重低音效 果。

实验分析

傅里叶变换fft函数那里纵坐标取值有些失真,有时间仔细研究fft函数,横坐标没问题。最后实现对高频低频的分开并且加重低频分量权重实现matlab重低音处理音频。

实验代码

clear all;close all;clc
[y,fs]=audioread('[SHANA]张学友 _ 梅艳芳 - 相爱很难 .wav');%声音
读取
% sound(y,fs); %声音回放 handles.y1=y;%y1 为原声
handles.Fs=fs;%采样频率 %
%时域波形图
ft=y(:,1);%读取一个声道的音频
len=length(y); t=(0:len-1)/fs;%时间序列
%原始信号时域图
figure(1);
plot(t,ft);
title('time');
xlabel('time(s)');
ylabel('amplitude');
%频域波形图
plen=len/32;%改成 1 就是整个图谱,这里只看前一部分
yf=fft(y,len);
yff=yf.*conj(yf)/len;
tf=(0:len-1)*fs/len;
figure(2);
plot(tf(1:plen),yff(1:plen));
title('fft');
xlabel('Hz');
ylabel('amplitude');
%
% %加速
% fs1=handles.Fs;
% Y1=handles.y1;

% % sound(Y1,2*fs1);
%
%
% %慢放
% fs2=handles.Fs;
% Y2=handles.y1;
% Y2=Y2(:,1);
% % sound(Y2,0.5*fs);
%
% % 倒放
% fs3=handles.Fs;
% y3=handles.y1;
% M=length(y3):-1:1;
% N = 1:1:length(y3);
% y4=y3(M);
% sound(y4,fs);%反播 %
% %拼接
% y5 = y(N)
% Z = [y4,y5]
% % sound(Z,fs);
%%低通滤波

wp = 2*pi*300,ws = 2*pi*400;Rp = 2;As = 30;
[N,wc] = cheb1ord(wp,ws,Rp,As,'s');%计算滤波器阶数N和3dB截止频
率
[B,A] = cheby1(N,Rp,wc,'s');%计算滤波器系统函数分子分母多项式系数
[Bz,Az] = impinvar(B,A,fs);%脉冲响应不变法,这里 fs 是个高能坑??? x=filter(Bz,Az,y);
% sound(x,fs) %时域波形图
ft=x(:,1);%读取一个声道的音频 len=length(x); t=(0:len-1)/fs;%时间序列
%原始信号时域图
figure(3);
plot(t,ft);
title('time');
xlabel('time(s)');
ylabel('amplitude');
%频域波形图
plen=len/32;%改成 1 就是整个图谱,这里只看前一部分 yf=fft(x,len);

yff=yf.*conj(yf)/len;
tf=(0:len-1)*fs/len;
figure(4);
plot(tf(1:plen),yff(1:plen));
title('fft');
xlabel('Hz');
ylabel('amplitude');
%高通滤波
wpz=300/2000;wsz=600/2000;Rp = 5;As = 30;
[Nd,wdc] = cheb1ord(wpz,wsz,Rp,As);%计算滤波器阶数N和3dB截止频 率
[BHz,AHz] = cheby1(Nd,Rp,wdc,'high');%计算滤波器系统函数分子分母 多项式系数
xx=filter(BHz,AHz,y);
% sound(xx,fs)
% 时域波形图
ft=xx(:,1);%读取一个声道的音频 len=length(xx); t=(0:len-1)/fs;%时间序列

% 原始信号时域图
figure(5);
plot(t,ft);
title('time');
xlabel('time(s)');
ylabel('amplitude');
% 频域波形图
plen=len/32;%改成 1 就是整个图谱,这里只看前一部分
yf=fft(xx,len);
yff=yf.*conj(yf)/len;
tf=(0:len-1)*fs/len;
figure(6);
plot(tf(1:plen),yff(1:plen));
title('fft');
xlabel('Hz');
ylabel('amplitude');
%%重低音效果
% xx=filter([1,-0.9575],1,x); %预加重滤波器
xxx = 5*x + y;%加个系数增益 % sound(xxx,fs)

%时域波形图
ft=xxx(:,1);%读取一个声道的音频 len=length(xxx); t=(0:len-1)/fs;%时间序列
%原始信号时域图
figure(7);
plot(t,ft);
title('time');
xlabel('time(s)');
ylabel('amplitude');
%频域波形图
plen=len/32;%改成 1 就是整个图谱,这里只看前一部分
yf=fft(xxx,len);
yff=yf.*conj(yf)/len;
tf=(0:len-1)*fs/len;
figure(8);
plot(tf(1:plen),yff(1:plen));
title('fft');
xlabel('Hz');
ylabel('amplitude');

你可能感兴趣的:(数字信号处理课设:matlab音频重低音处理)