文章目录

  • 一、实验目的
  • 二、实验过程与结果
    • 1、数字音频信号的频谱分析
    • 2、 数字音频信号的频谱分析
    • 3、 数字和弦音频信号的生成
  • 三、结果分析与实验结论
    • 1、读数字音频信号的频谱分析
    • 2、数字和弦音频信号的生成

一、实验目的

  1. 熟悉 MATLAB 编程环境和编程特点;掌握数字音频信号的读取、存储和播放方 法,以及波形绘制和标注方法。

  2. 掌握数字音频信号的频谱(包括幅度谱和相位谱)计算方法,以及幅度谱和相 位谱的主要特点。

  3. 掌握数字和弦音频信号的基本概念和生成方法;掌握时间延迟对生成数字和弦 音频信号的影响。

二、实验过程与结果

1、数字音频信号的频谱分析

(1)数字音频信号读取 MATLAB 软件提供了数字音频信号的读取函数 audioread(),利用该函数可以读取常 见格式(如 MP3、WAV 格式等)的数字语音信号(包括单声道和双声道),并以数组形 式返回音频序列值及其采样频率。

(2)数字音频信号存储: MATLAB 软件提供了数字音频信号的存储函数 audiowrite(),利用该函数可以将数字 语音信号(包括单声道和双声道)保存为常见格式(如 MP3、WAV 等)的音频文件, 注意:在保存数字语音信号时需要采样频率值。

(3)数字音频信号绘制: 数字语音信号的采样频率比较高,为了显示清晰,可以用绘制连续变量的函数 plot() 替换绘制离散序列的函数 stem();在绘制数字音频信号时需要用函数 xlabel()和 ylabel()标注横坐标和纵坐标。

(4)数字音频信号播放: MATLAB 软件提供了常见数字音频信号的播放函数audioplayer(),它的输入参数包 括数字音频信号和采样频率。另外,可以使用函数 sound()替代 audioplayer(),它的默认 采样频率值为 8192 赫兹。

2、 数字音频信号的频谱分析

(1)读取数字音频信号并绘制频谱 双声道数字音频信号文件为 Hello.wav,在 MATLAB 环境下读取前 16s 的数字音频 数据,绘制其时域波形并播放该数字音频。调用 MATLAB 提供的快速傅里叶变换 fft() 函数,计算数字音频信号的幅度谱和相位谱(使用一个声道的音频序列即可),数字频 率的转换方法见实验原理部分。

(2)翻转数字音频信号并绘制频谱 将第(1)步读取的 16s 单通道数字音频信号的时域波形翻转(下标从 0 到 N −1 转 化为从 N −1 到 0),绘制翻转后的数字音频信号;调用 MATLAB 提供的计算快速傅里 叶变换的函数 fft(),计算翻转数字音频信号的幅度谱和相位谱(使用一个声道的音频序 列即可)。 比较原始数字音频信号和翻转数字音频信号的幅度谱,比较原始数字音频信号和翻 转数字音频信号相位谱。为了使比较结果更加清晰,可以使用函数 unwrap()对相位谱进 行解缠绕处理,已获得连续的相位形式。与此同时,为了使比较结果更加清晰,可以仅 显示数字音频信号的局部频谱,如将频率范围设定为 [0,0.2π] )。

3、 数字和弦音频信号的生成

和弦是指在音程上满足特定先后关系的一组音频信号,由可以由三个或以上的相同 音频在时间轴上依次叠加得到。

(1) 读取数字音频信号并绘制频谱

数字音频信号文件为 Intro.mp3,采集频率为 Fs = 32 kHz。在 MATLAB 环境下读取 数字音频文件 Intro.mp3,并绘制前 12s 的音频波形并播放音频信号。调用计算快速傅里 叶变换 fft()函数,得到数字音频信号的幅度谱及其分贝表示形式(数字频率的转换方法 见实验原理部分)。

(2)生成数字和弦音频信号并绘制频谱 利用第(1)步读取的数字音频信号,构造出包含五个和弦分量的数字和弦音频信 号(第 k 个和弦分量是将原始音频信号延时 F k s ´ − ( 1) /10 个采样单位、对应的序列值变 为原来的 ( 1) 1/ 2 k − ,其中 k = ¼ 1, 2, ,5。绘制数字和弦音频信号的波形,并调用函数 fft() 计算数字音频信号的幅度谱,并用函数 plot()绘制幅度谱及其分贝表示形式。调整延时 时间并再次生成数字和弦音频信号,通过播放来辨别与原来的合成结果的异同。

三、结果分析与实验结论

1、读数字音频信号的频谱分析

(1) 读取数字音频信号并绘制频谱

%% 读取和储存
clear;clc;
[y,Fs] = audioread('hello.wav');
figure(1);
plot(y);
xlabel('n');ylabel('y');
title("读取音频并绘制时域信息");
x = fft(y);
k = 0:length(x)-1;
wk = 2*pi*k/length(x);
figure(2)
subplot(3,1,1);
plot(wk,abs(x));
xlabel('w/pi');ylabel('angle(y)');
title("幅度");
subplot(3,1,2);
unwx = unwrap(angle(x));
plot(wk,unwx);
xlabel('w/pi');ylabel('angle(y)');
title("相位");
subplot(3,1,3);
plot(wk,angle(x));
suptitle("读取音频并绘制频谱");
xlabel('w/pi');ylabel('angle(y)');
title("未解缠相位");


实验结果分析:

可以发现没有解缠绕之后的图像非常的密集,这是因为解缠绕之前的相位只限制在正负π之间,会导致变化的特别快,所以显得非常地密集,解缠绕可以更好地观察相位情况。

(2) 翻转数字音频信号并绘制频谱

%% 反转分析
figure(3);
y = flip(y);
plot(y);
xlabel('n');ylabel('y');
title("读取音频反转并绘制时域信息");
x = fft(y);
k = 0:length(x)-1;
wk = 2*pi*k/length(x);
figure(4)
subplot(2,1,1);
suptitle("读取音频反转并绘制频谱");
plot(wk,abs(x));
xlabel('w/pi');ylabel('angle(y)');
title("幅度");
subplot(2,1,2);
unwx = unwrap(angle(x));
plot(wk,unwx);
xlabel('w/pi');ylabel('angle(y)');
title("相位");

实验结果分析:

明显发现反转之后的时域图和原来的时域图呈现对称关系,但是幅度图没有发现变换,因为整段信号在频率上的投影关系没有变,正的变换和逆的变换对幅度图影响不大,相位图与原来呈对称关系。

2、数字和弦音频信号的生成

(1)读取数字音频信号并绘制频谱:

%% 读取和弦
clear;clc;
[y2,Fs2]=audioread('Intro.mp3',[1,32000*12]); %采前12s的音频
audioplayer(y2,Fs2);audiowrite('work2.wav',y2,Fs2)
figure(1);plot(y2)
xlabel('n');ylabel('y2')
title('Intro原始数字音频信号')
x2=fft(y2);
n2=length(y2);k2=0:n2-1;wk2=2*pi*k2/n2;
ax2=abs(x2);
figure(2);subplot(2,1,1);plot(wk2,ax2)
xlabel('w/pi');ylabel('|y2|');title('Intro音频幅度谱')
subplot(2,1,2);plot(wk2,20*log10(ax2)) %分贝形式表示
xlabel('w/pi');ylabel('20log10|y2|');title('Intro音频幅度谱分贝形式')

(2)生成数字和弦音频信号并绘制频谱

%% 生成和弦
yy=y2;
for kk=2:5z=[zeros((Fs2*(kk-1)/10),1);y2];yy=[yy;zeros((Fs2/10),1)];z=z.*((1/2^(kk-1)));yy=yy+z;
end
figure(3);plot(yy)
xlabel('n');ylabel('ychord');title('混响后数字音频信号')
xc=fft(yy);nc=length(yy);kc=0:nc-1;wkc=2*pi*kc/nc;
axc=abs(xc);
figure(4);subplot(2,1,1);plot(wkc,axc)
xlabel('w/pi');ylabel('|xchord|')
title('Intro混响后音频幅度谱')
subplot(2,1,2);plot(wkc,20*log10(axc))
xlabel('w/pi');ylabel('20log10|xchord|')
title('Intro混响后音频幅度谱分贝形式')
yy=yy./2; %防止写入文件时被裁剪
audiowrite('chord.wav',yy,Fs2)


实验结果分析:

​可以看出由于取的和弦延迟不是很多所以变换不是特别大,但是信号变得平滑了,延迟作用于频域上就相当于整体加了一个斜率为-π/2的直线。

数字信号处理实验二:数字语音信号与频谱分析相关推荐

  1. matlab数字信号处理实验报告,数字信号处理实验报告一 离散信号及其MATLAB实验...

    数字信号处理 离散信号及其MATLAB实验 南昌航空大学实验报告 2012 年 04 月 06 日 课程名称: 数字信号处理 实验名称: 离散信号及其MATLAB实现 班级: 090423班 学号: ...

  2. 数字信号处理-基于matlab的语音信号的加密解密

    在数字信号处理的课程设计期间,在老师建议下,笔者额外做了语音信号的加密解密,由于课上基本没有介绍,自己接触也很少,从零开始.本想从网上找一个合适的例程改改,无奈在网上查找半天也没有找到自己想要的简单例 ...

  3. 数字信号处理实验(二)

    实验目的 音频信号实验 产生两段音频信号,将声音信号进行傅立叶变换,将时域信号转为频域信号,并分别查看两段信号变化后的幅频特性,然后将两段频域信号线性叠加,合成新的频域信号,最后将此频域信号进行反傅立 ...

  4. 数字信号处理课程设计:语音信号采集与滤波处理系统设计与实现 (MATLAB)——(一)

    语音信号采集与滤波处理系统设计与实现 任务要求 利用MATLAB 设计实现语音信号采集处理软件,通过MIC 实时录制并分析语音信号,包括实时显示信号波形.时域统计特征值.计算信号的频谱等: 采集并录制 ...

  5. 基于MATLAB的数字信号处理(3) 用FFT对信号作频谱分析

    文章目录 一.实验目的 二.实验原理与方法 三.实验内容及步骤 1. 有限长序列 2. 周期序列 3. 模拟周期信号 四.回答思考题 五.实验总结 一.实验目的 学习用 FFT 对连续信号和时域离散信 ...

  6. matlab数字信号处理实验报告,数字信号处理实验报告(Matlab与数字信号处理基础).doc...

    西华大学实验报告(理工类) 开课学院及实验室:电气信息学院 6A-205实验时间 :年月日学 生 姓 名学号成 绩学生所在学院电气信息学院年级/专业/班课 程 名 称数字信号处理课 程 代 码实验项目 ...

  7. 音频信号处理(二)语音信号采集处理与基音周期

    语音信号采集与处理 语音信号采集 根据自相关估计基音周期 语音信号采集 先创建用于录制音频的对象,在创建时确定录制音频的采样率.位数.通道数,分别录制,各录一段5秒钟的音频,并保存 r1=audior ...

  8. 东南大学数字信号处理实验_数字与信号处理实验1 离散时间信号分析

    实验一 离散时间信号分析 一.实验目的 掌握两个序列的相加.相乘.移位.反褶.卷积等基本运算. 二.实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列来表示,其中代表序列的第n个数字,n代 ...

  9. 数字信号处理实验二:DFT的共轭对称性及应用

    实验目的 1.掌握实序列的DFT共轭对称性的特点: 2.学习应用实序列DFT的共轭对称性构建频域序列以保证时域序列为实数的方法: 实验原理 1.DFT的共轭对称性 其中: 2.有限长实序列的DFT的共 ...

最新文章

  1. Java 接受reactjs数据_[Java教程]react.js 父子组件数据绑定实时通讯
  2. 9月份国外最佳WordPress主机提供商Top12
  3. 2019款新iPhone发布时间曝光:依旧9月12日亮相?
  4. win7 mysql8.0.11安装教程_mysql8.0.13下载与安装图文教程(示例代码)
  5. 注意程序的[error]log
  6. MEF 编程指南(二):定义可组合部件和契约
  7. 省A类竞赛二等奖--村先游项目VUE前端重构
  8. pyautogui的两天坑moveto图像识别
  9. android生成kml和kmz
  10. 微信小程序顶部tab切换
  11. 2021宿州市地区高考成绩排名查询,2021年宿州所有小学名单及排名,宿州最好的小学有哪些...
  12. Vista 自动激活工具(最新 最权威 所有版本 可升级)
  13. Jenkins用户权限
  14. 前端开发中PC端和移动端网站的区别
  15. 教大家看懂安卓build.prop文件详情
  16. 论一个优秀的小牛论坛管理员(转:五只鹳狸猿进笼观猴,各留一只爪)
  17. C语言二级题库(卷一)
  18. MYSQL的REPEATABLE-READ解决不可重复读和幻读
  19. Ethereum Architecture : 以太坊架构
  20. 高斯计校准与计量的区别

热门文章

  1. Python_2048核心算法
  2. 《生活多美好》-观后感
  3. 国网信通产业集团*IoTDB | 三平台管理百亿级累计数据,构建端边云全周期电力数据高效解决方案...
  4. 关于 groovy.lang.MissingMethodException: No signature of method的一个报错
  5. java smi s开发指导_【存储入门系列】SMI-S协议简介
  6. W5500EVB开8个TCP Client
  7. 数据库表之间关系与实体类的对应
  8. 不良资产处置(六):不良资产处置案例二
  9. double保留小数位
  10. 谷粒商城-品牌管理-JSR303数据校验