当前位置:   article > 正文

信号与系统实验———语音信号处理_语音信号处理实验

语音信号处理实验

实验内容大致如下:

        1、语音信号的获取;

        2、语音信号的运算,包括平移和反褶、相加、相乘;

        3、周期信号的有限项傅里叶级数合成;

        4、语音信号的频谱分析

        5、连续时间信号的抽样;

        6、语音信号的抽样。

注:本文中matlab中所用来存储的位置为D:\M(D盘中一个名叫M的文件夹中);

        matlab版本为2021。

一、语音信号波形

        1、语音录制

        录制一个wav格式的录音文件

  1. fs=44100; %录制频率
  2. recobj=audiorecorder(fs,16,1);
  3. disp('Start speaking.');
  4. recordblocking(recobj,5); % 时间为5秒
  5. disp('End speaking.');
  6. myrecording=getaudiodata(recobj);
  7. filename='D:\M\1.wav'; %录音的地址和名字
  8. audiowrite(filename,myrecording,fs);

        2、显示原始语音信号波形

  1. [y1,fs] = audioread('D:\M\1.wav'); %读取语音信号
  2. plot( y1 ); %绘制波形
  3. title( '原语音信号时域波形图' ); %标题
  4. xlabel( '单位' ); %横坐标
  5. ylabel( '幅度' ); %纵坐标

        3、反褶与平移

  1. [m,Fs]=audioread('D:\M\1.wav'); %读取语音信号
  2. L=size(m,1); %语音信号的长度
  3. t0=(L-1)/Fs; %语音信号的持续时间,等于总点数除以采样率
  4. ts=1/Fs; %语音信号时间采样间隔,等于信号抽样频率的倒数
  5. k=(0:ts:t0); % k 为向量 m 的时间自变量的取值范围
  6. n=1:L;
  7. Q=m(L-n+1,1); %实现语音信号的反褶和平移
  8. audiowrite('D:\M\1fan.wav',Q,Fs); %将平移反褶后的信号输出为wav格式--如果没有要去可以不写这行
  9. plot(k,Q); %绘制
  10. title('反褶和平移后语音的波形图'); %标题
  11. xlabel('时间/s'); %横坐标

        4、与正弦信号相加波形图

  1. [m,Fs]=audioread('D:\M\1.wav');
  2. L=size(m,1);
  3. t0=(L-1)/Fs;
  4. ts=1/Fs;
  5. k=(0:ts:t0);
  6. n=1:L;
  7. f=10;
  8. W=m(n)+sin(2*pi*f*k); %与正弦相加
  9. audiowrite('D:\M\1jia.wav',W,Fs);
  10. plot(k,W);
  11. title('与正弦信号相加的波形图');
  12. xlabel('时间/s');

        5、与正弦信号相乘波形图

  1. [m,Fs]=audioread('D:\M\1.wav');
  2. L=size(m,1);
  3. t0=(L-1)/Fs;
  4. ts=1/Fs;
  5. k=(0:ts:t0);
  6. n=1:L;
  7. f=10;
  8. E=m(n).*sin(2*pi*f*k);
  9. audiowrite('D:\M\1cheng.wav',E,Fs);
  10. plot(k,E);
  11. title('与正弦信号相乘的波形图');
  12. xlabel('时间/s');

注:如果在波形相乘与相加时出现超出数组的问题,建议改一改频率或是录制其他格式的录音文件改为wav格式不进行第一个步骤。

二、频谱

        1、方波信号

  1. t=-2:0.001:2; % 信号的时间取值范围
  2. E=1; % 方波的峰峰值
  3. T=2; % 方波的周期
  4. N=input('N='); % 输入级数的项数
  5. sn=zeros(1,length(t)); % 定义级数求和向量,初始值为零向量,长度等于时间长度
  6. for n=1:N
  7. sn=sn+2*E/pi*(1/n)*sin(n*pi/2)*cos(n*2*pi/T*t); %傅里叶求和
  8. end
  9. figure(1)
  10. plot(t,sn);%绘制有限项傅里叶基数合成图
  11. title('方波信号');

       注:格式简介

fft

        fft 是 MATLAB 中进行快速傅里叶变换的函数,具体调用格式如 下:
                        X=fft(x,N)
        其中,x 为 N 点的离散时间信号, X 为傅里叶变换的结果,也是 N 点的离散序列。
fftshift
        fftshift 的作用是将频谱的零频率分量平移至频谱中心。因为 fft 涉及的离散傅里叶变换运算过程有圆周移位和频谱截取过程(具体原 理详见“数字信号处理”课程),因此得到的频谱其中心并不对应于 零频率分量。采用 fftshift 命令可以将频谱平移为正常位置。具体调 用格式如下:
                                    Y=fftshift(X)
其中, X 是快速傅里叶变换的结果, Y 是进行频谱平移之后的结果。

         2、语音信号频谱

  1. [m,Fs]=audioread('D:\M\1.wav');
  2. L=size(m,1);
  3. f=[0:(L-1)]*Fs/L-Fs/2;
  4. X=fft(m(:,1),L);
  5. Y=fftshift(X);
  6. plot(f,abs(Y));
  7. title('原始语音信号的频谱图');
  8. xlabel('频率/Hz');

        3、与正弦信号相加的频谱

  1. [m,Fs]=audioread('D:\M\1jia.wav');
  2. L=size(m,1);
  3. f=[0:(L-1)]*Fs/L-Fs/2;
  4. X=fft(m(:,1),L);
  5. Y=fftshift(X);
  6. plot(f,abs(Y));
  7. title('原始语音正弦加信号的频谱图');
  8. xlabel('频率/Hz');

        4、与正弦信号相乘

  1. [m,Fs]=audioread('D:\M\1cheng.wav');
  2. L=size(m,1);
  3. f=[0:(L-1)]*Fs/L-Fs/2;
  4. X=fft(m(:,1),L);
  5. Y=fftshift(X);
  6. plot(f,abs(Y));
  7. title('原始语音正弦乘信号的频谱图');
  8. xlabel('频率/Hz');

三、抽样

        1、余弦信号抽样

  1. t0 = 0:0.001:0.1; % 信号持续的时间范围
  2. x0 = cos(2*pi*40*t0); % 连续余弦信号,频率为 40Hz
  3. L0 = length(t0); % 信号在 MATLAB 中存储的点数
  4. f=80; % 抽样频率 更改来控制频率
  5. Fs =4* f; % 抽样信号的离散时间定义域和抽样间隔
  6. t = 0:1/Fs:0.1; % 抽样信号的离散时间定义域和抽样间隔
  7. x = cos(2*pi*40*t);
  8. plot(t0,x0,'r'),hold on % 绘制连续时间信号的图形
  9. stem(t,x),hold off % 绘制抽样后的离散时间信号的图形
  10. title('连续时间信号及其抽样信号');

        2、门信号抽样

  1. t0 = -10:0.001:10; %门信号持续时间 起始结束时间
  2. x0 = rectpuls(t0,5);
  3. f=1/5; %可以更改来控制抽样频率
  4. Fs = 4*f; %抽样频率
  5. t = -10:Fs:10;
  6. x = rectpuls(t,5);
  7. stem(t,x);
  8. title('抽样信号 抽样频率为4*fHz')

        3、语音信号的抽样

  1. [m,Fs]=audioread('D:\M\1.wav'); %读取信号
  2. y=m(:,1);
  3. L=size(y);
  4. fs1=Fs/8; %更改此处控制抽样间隔
  5. y1=y(1:8:L); %同上
  6. audiowrite('D:\M\1chou8.wav',y1,fs1);
  7. plot(y1);
  8. title('抽样间隔为8的语音信号的波形');

        仅供参考,如有错误麻烦各位帮忙指正一下,谢谢。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/101237
推荐阅读
相关标签
  

闽ICP备14008679号