MATLAB语音信号处理

您所在的位置:网站首页 windows中的录音机录制的声音文件格式 MATLAB语音信号处理

MATLAB语音信号处理

2024-01-18 13:22| 来源: 网络整理| 查看: 265

数字信号处理课设,我们使用MATLAB对语音信号进行了一系列处理,并将其所有功能集中于下图界面中:

这个界面涉及功能众多,其中包括语音信号的观察分析、音色变换、AM调制解调、减抽样、加噪去噪、相频分析和幅频滤波等,最重要的是对MATLAB中函数的掌握,通过不同函数的组合实现你想要实现的功能。

本篇不会给出整个界面的程序,下面会分块给出每个功能的程序,整个界面只需GUI设计界面文件、定义结构体并把对应键程序打进去即可。

1、语音信号的采集 1.1题目要求

使用windows下的录音机录制一段语音信号、音乐信号或者采用其他软件截取一段音乐信号(要求:时间不超过5s,文件格式为WAV。)

① 请每位同学都参与录音,内容自定。

② 使用wavread语句读取语音/音乐信号获取抽样率;(注意:读取的信号是双声道信号,即为双列向量,需要分列处理);

③ 输出时域语音/音乐信号的波形。

④ 实现对录音信号的声音大小的调节。

⑤ 实现对两种语音/音乐信号的混音音效。

⑥ 实现音乐信号的回音音效。

1.2设计内容及方案

① 读取音频信号:我是通过wavread函数读取.wav文件的方式来获得,当然首先要自己创建一个.wav音频,我是通过电脑录音生成.mp3然后格式工厂转成.wav的,需保存到同一文件夹下。

② 分声道处理:一般音乐和语音信号都是双声道信号,时域和频谱图会有两个颜色,所以要取单列来分析,通过x1=x(:,1)语句来实现。

③ 画时域波形图:用plot函数来画图,注意横坐标为时间t。

④ 音量大小调节:通过将音频直接乘一个系数来实现调音量。

⑤ 混音和回声:混音即将两个音频相加,要相加就得保证矩阵一样,所以要通过截取并补零矩阵来实现;回声是把三个信号叠加,这三个信号在不同位置补零音量也逐渐变小,就可以实现回声。

⑥ 播放声音:本题我使用wavplay来播放声音,会有警告,后面的题我用sound比较好。

1.3程序源码及注释 clear [x,fs] = wavread('beautiful.wav');%音乐信号 [y,fs1]= wavread('1.wav');%女生声音 [z,fs2]= wavread('2.wav');%男生声音 %输出频率 fs fs1 fs2 %音乐语音信号分声道处理 x1=x(:,1); y1=y(:,1); z1=z(:,1); %画音乐信号时域图 n1=length(x1);%length取数列长度即元素个数 figure(1) t1=(0:(n1-1))/fs; plot(t1,x1); axis([0,5,-1,1]); xlabel('时间t'); ylabel('幅度'); title('音乐信号时域波形'); %画语音信号时域图 n2=length(y1); figure(2) subplot(2,1,1); t2=(0:(n2-1))/fs1; plot(t2,y1);%女生 axis([0,4,-0.5,0.5]); xlabel('时间t'); ylabel('幅度'); title('女生语音信号时域波形'); n3=length(z1); subplot(2,1,2); t3=(0:(n3-1))/fs2; plot(t3,z1);%男生 axis([0,4,-0.5,0.5]); xlabel('时间t'); ylabel('幅度'); title('男生语音信号时域波形'); %对语音信号声音大小调节 wavplay(y,fs1); %播放原语音 y11=10*y; wavplay(y11,fs1); %加大音量播放 y22=0.5*y; wavplay(y22,fs1); %减小音量播放 %两种语音信号的混音 [m,n]=size(y1);%size取矩阵的行列数 [m0,n0]=size(z1); a=zeros(abs(m-m0),n);%两矩阵行数差为零矩阵行数 if length(y1)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3