本博文依托于“信号与系统”课程设计,分为三部分,本博文涉及第一部分:“采样率对声音信号采集的影响”。未来会做成一个系列,欢迎大家持续关注!!

文章目录

  • 前言
  • 一、奈奎斯特采样定理
  • 二、matlab编程
    • 1.声音信号采集、存储
    • 2.结果可视化
  • 总结

前言

信号作为信息的一种载体形式,包含有诸多具体形式,如图片,声音等等。而信号的采集,传输,接收是我们日常生活中时时刻刻都在进行的活动,而信号处理的先决条件是信号的采集。因此,了解和掌握信号采集的方法以及相关知识对于信号领域的研究是非常重要的。


本博文以“信号与系统”课程设计为依托,研究采样率对于声音信号采集的影响。

一、奈奎斯特采样定理

奈奎斯特采样定理,又称香农采样定理,是信号处理领域最重要的基本定理之一。它是连续时间信号(“模拟信号”)和离散时间信号(“数字信号”)之间的桥梁。至于对信号进行抽样的原因,是由于计算机只能处理离散数字信息,而对于连续时间信号是没有办法进行处理的,因此,为使得信号可以输入至计算机中进行处理,必须对信号进行抽样处理。
奈奎斯特采样定理揭示了采样率和所测信号频率之间的关系。 阐述了采样率Fs必须大于被测信号最高频率分量的两倍。只有满足奈奎斯特采样定理,才能从抽样后的信号的中恢复出原完整信号。

借助于图像阐释“奈奎斯特采样定理”---
(1)假设Fs = Fn:

(2)假设Fs = (4/3)*Fn:

(3)假设Fs = 2*Fn

图片来源于https://www.cnblogs.com/zoneofmine/p/10853096.html,侵删
由上述三种情况对比可知:只有满足采样频率大于原信号最大频率的二倍,才能不失真的从抽样后的信号中恢复出原信号。

二、matlab编程

1.声音信号采集、存储

代码如下(示例):

% 采样率对于声音信号采集的影响:
recorder = audiorecorder;Fs = 1000;
Fs1 = 8000;
Fs2 = 40000;      % 设置三种不同的采样频率
nBits = 16;       % 设置采样位数
NumChannels = 1;  % 设置采样通道数recorder = audiorecorder(Fs,nBits,NumChannels)     %以不同的采样频率采集音频信号
% recorder = audiorecorder(Fs1,nBits,NumChannels);
% recorder = audiorecorder(Fs2,nBits,NumChannels);disp('strat speaking:');
recordblocking(recorder,5);    % 录制5s的音频信号
disp('stop speaking');myrecording = getaudiodata(recorder);             % 获取声音信号信息--数学形式
audiowrite('re_co.wav',myrecording,1000);         % 以对应的采样率完成声音信号存储
% audiowrite('re_co1.wav',myrecording,8000);
% audiowrite('re_co2.wav',myrecording,40000);
play(recorder)                                    % play对应声音信号的播放

2.结果可视化

代码如下(示例):

%数据可视化(声音信号时频域波形绘制)
[x,Fs]=audioread('re_co.wav')
x = x(:,1);
x = x';
N = length(x);%求取抽样点数
t = (0:N-1)/Fs;%显示实际时间
y = fft(x);%对信号进行傅里叶变换
f = Fs/N*(0:round(N/2)-1);%显示实际频点的一半,频域映射,转化为HZ
figure(1)
subplot(211);
plot(t,x,'g');%绘制时域波形
xlabel('Time/s');ylabel('Amplitude');
title('信号的波形');
grid;
subplot(212);
plot(f,abs(y(1:round(N/2))));
xlabel('Frequency/Hz');ylabel('Amplitude');
title('信号的频谱');
grid;% [x1,Fs1]=audioread('re_co1.wav')
% x1 = x1(:,1);
% x1 = x1';
% N = length(x1);%求取抽样点数
% t = (0:N-1)/Fs1;%显示实际时间
% y = fft(x1);%对信号进行傅里叶变换
% f = Fs1/N*(0:round(N/2)-1);%显示实际频点的一半,频域映射,转化为HZ
% figure(2)
% subplot(221);
% plot(t,x1,'g');%绘制时域波形
% xlabel('Time/s');ylabel('Amplitude');
% title('信号的波形');
% grid;
% subplot(223);
% plot(f,abs(y(1:round(N/2))));
% xlabel('Frequency/Hz');ylabel('Amplitude');
% title('信号的频谱');
% grid;% [x2,Fs2]=audioread('re_co2.wav')
% x2 = x2(:,1);
% x2 = x2';
% N = length(x2);%求取抽样点数
% t = (0:N-1)/Fs2;%显示实际时间
% y = fft(x2);%对信号进行傅里叶变换
% f = Fs2/N*(0:round(N/2)-1);%显示实际频点的一半,频域映射,转化为HZ
% subplot(222);
% plot(t,x2,'g');%绘制时域波形
% xlabel('Time/s');ylabel('Amplitude');
% title('信号的波形');
% grid;
% subplot(224);
% plot(f,abs(y(1:round(N/2))));
% xlabel('Frequency/Hz');ylabel('Amplitude');
% title('信号的频谱');
% grid;

三段声音信号分别是在不同的采样频率下获得的,无论从录音文件的播放,还是声音信号时频域分析,均可以看出采样频率对于声音信号采集的影响:

(1)录制声音播放角度---
在本实验项目中,Fs = 1000Hz时,录音文件播放声音浑浊不清,相比于Fs = 1000Hz时,采样频率Fs = 8000Hz 或者Fs = 40000Hz时声音播放清晰洪亮,在录制声音播放的角度可以总结出采样率对于声音信号采集的影响,只有满足奈奎斯特采样定理才能从采样后的声音信号中将原始信号恢复出来,一般情况下,采样率越高,声音信号越清晰,采样率较低时,明显声音信号声音浑浊,不清晰。
(2)时频域波形分析角度---
采样率Fs = 1000Hz----时频域分析:

图一:采样频率1000Hz时的时频域波形
采样频率Fs = 8000Hz和40000Hz----时频域分析:

图二:采样频率8000、40000Hz时的时频域波形 时频域波形分析更能清晰直观显示出采样率对于声音信号采集的影响---
从图二采样频率8000和40000Hz的时频域对比分析可以看出,采样频率处于该频段时,声音信号的时域波形基本相同,但仔细观察仍然可以看出40000Hz比8000Hz可以采集到更加完整的声音信号。
如果将图一和图二进行对比可以发现,1000Hz的时域波形明显没有后两种波形完整和丰富,这也恰好解释在此采样频率下声音信号播放浑浊不清的原因。


总结

简单的总结下,采样频率的不同会影响采集到声音信号的质量,甚至于无法从采样后信号中将原始信号恢复出来。本课程设计实验从音频文件播放和时频域分析两个角度阐释采样率对声音信号采集的影响,在某种程度上验证奈奎斯特采样定理。
理论上讲,只要满足奈奎斯特采样定理,就可以从采集到的声音信号中将原始信号恢复出来,但是在实际工程应用中,为保证采集到信号的丰富性以及声音文件的质量,一般不采用2倍频率作为采样率,而采用数倍甚至于数十倍采样频率进行声音信号的采集,我们平时听到的声音文件的采样频率为44100Hz,这是远远高出声音频率的。
总体上来讲,理论研究和工程实践之间还有很长的一段鸿沟需要跨越,然而理论研究作为工程实践的基础,只有掌握理论研究,才能更好的服务于我们的工程实践。

项目已上传至GitHub,GitHub地址:
https://github.com/booue/signals-processing

信号与系统(1)---采样率对声音信号采集的影响相关推荐

  1. 信号与系统_第1章 信号与系统

    本文章内容来源于书本.课件与自己的理解. 目录 1.1 绪论 1.1.1 信号 1.1.2 系统 1.1.3 信号与系统的关系 1.2 信号 1.2.1 信号的描述(见本章的"1.1信号&q ...

  2. 信号与系统陈后金matlab,信号与系统(陈后金)_MATLAB.ppt

    信号与系统(陈后金)_MATLAB 信号与系统 Signals and Systems 利用MATLAB进行信号与系统分析 MATLAB简介 信号的MATLAB表示 利用MATLAB进行系统的时域分析 ...

  3. 信号与系统郑君里上册pdf_信号与系统(上册)

    信号与系统(上册)目录 第一章 绪论 1.1 信号与系统 1.2 信号的描述.分类和典型示例 1.3 信号的运算 1.4 阶跃信号与冲激信号 1.5 信号的分解 1.6 系统模型及其分类 1.7 线性 ...

  4. 信号与系统 徐亚宁 matlab程序,信号与系统(第4版)

    第1章绪论 11信号与系统 12信号的描述与分类 13系统的描述与分类 131连续时间LTI系统及其描述 132离散时间LTI系统及其描述 14系统的基本特性 15信号与系统分析方法 ...

  5. 中科大843信号与系统中国科学技术大学843信号与系统138,总分420+上岸经验帖

    中科大843信号与系统中国科学技术大学上岸经验帖 ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) ​ 数学:(多动手,多计算,多总结,打好基础) (1)3月中旬-6月底:(这段时间重点应 ...

  6. 信号与系统——典型的连续时间信号讲解

    什么是指数信号? 解释:我们在中学就知道指数函数  ,而我在这里所说的指数信号则是  当 a=0 时,信号不随时间变化,成为直流信号 当 a>0 时,信号将随时间增长.              ...

  7. 【信号与系统】(二)信号与系统概述——基本信号

    文章目录 第一章 信号与系统概述 1.2基本信号 1.2.1 阶跃函数 1.2.2 冲激函数 1.2.3 冲激函数的广义函数定义 1.2.4 冲激函数的取样性质 1.2.4.1 f ( t ) f(t ...

  8. 【信号与系统】(一 )信号与系统概述——信号的基本概念与分类

    文章目录 第一章 信号与系统概述 1.1 信号的基本概念与分类 1.1.1 消息.信息.信号 1.1.2 信号的描述 1.1.3 信号的分类 1.1.3.1 确定信号和随机信号 1.1.3.2 连续信 ...

  9. 《信号与系统学习笔记》—周期信号的博里叶级数表示(一)

    注:本博客是基于奥本海姆<信号与系统>第二版编写,主要是为了自己学习的复习与加深. 一.线性时不变系统对复指数信号的响应 1.在研究线性时不变系统时,将信号表示成基本信号的线性组合是很有利 ...

最新文章

  1. python 把字母转数字
  2. select三级联动 怎么删除前一个的_python测试开发django57.xadmin选项二级联动
  3. CodeForces 631D Messenger
  4. 网络管理员&MCSE2003之12:第7章 使用组策略管理用户环境(下)
  5. Spring之数据库操作
  6. 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...
  7. AI到底有多吃香?推荐一个斯坦福、CMU、清北学生都在上的AI课
  8. Erlang 的安装配置,编译和运行
  9. HTTP 2.0与HTTP 1.0的区别 ?
  10. 【传智播客】JavaWeb程序设计任务教程 第四章练习答案
  11. 全国教学交流研讨会“教学为本”主题总结
  12. php 调试 500,利用WordPress开发者调试模式解决PHP500内部服务器错误 | 骤雨打新荷...
  13. 【HTML】【简易电子相册】overflow:hidden;
  14. 弹出USB大容量存储设备时出问题“该设备正在使用中”
  15. Zigbee和WiFi的信道重叠
  16. Android锁屏勒索病毒分析(4)秒抢红包
  17. 基于java的网上鲜花销售系统,基于JAVA的鲜花销售管理系统MVC开发,免费分享
  18. java实现第七届蓝桥杯四平方和
  19. 少儿机器人编程学习指南
  20. Python 60 天 + 450 题,倾情奉献

热门文章

  1. oracle中字符串连接符||
  2. 数据库之SQL表列及语句
  3. springboot项目部署在阿里云,并且后台运行与关闭
  4. 【论文笔记】Digital Twin in Industry: State-of-the-Art——Tao Fei
  5. 蒙特卡洛法(Monte Carlo)电动汽车负荷预测matlab程序设计
  6. covariate(covariate是控制变量吗)
  7. 使用for循环打印直角三角形(实心/空心)、等腰三角形(实心/空心),菱形(实心/空心)
  8. 10 Confluent_Kafka权威指南 第十章:监控kafka
  9. 搭建神经网络基本构架
  10. loadrunner没有告诉你的