美文网首页matlab有趣的程序和命令
数字信号处理课设:matlab音频重低音处理

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

作者: 小Bill | 来源:发表于2019-06-21 21:53 被阅读0次

    实验结果

    重低音效果处理结果图:


    实验要求

    (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音频重低音处理

        本文链接:https://www.haomeiwen.com/subject/nbcpqctx.html