2 信号与系统---录制和播放采样率关系对于声音信号的影响

本博文是“信号与系统”系列博文的第二篇,主要依托于“信号与系统”课程设计,后续还会继续推出第三篇,希望大家持续关注!!
文章目录4.现象原理说明 总结
前言上篇博文介绍了采样率对于声音信号采集的影响,并且从声音信号播放和时频域波形分析两个角度阐释了采样率对于声音信号采集具体会产生哪些影响 。本博文继续以“采样率”为抓手,研究采样率的另外一个问题---“录制和播放采样率关系对于声音信号的影响” 。下面开始我们的正文部分,由于在上篇的博文中已经介绍过采样的相关知识以及“奈奎斯特采样定理”,因此本篇博文直接从代码入手研究“录制和播放采样率关系对于声音信号影响” 。一、特定采样率声音信号录制研究“录制和播放采样率关系对声音信号影响”前提条件是以特定采样率录制声音信号 。
recorder = audiorecorder;Fs2 = 44100;%设置特定的采样率为44100Hz(生活中常见的采样频率) nBits = 16;NumChannels = 1;recorder = audiorecorder(Fs2,nBits,NumChannels);% 调用电脑麦克风,开始声音录制disp('strat speaking:');recordblocking(recorder,7);% 录制7s的声音信号disp('stop speaking');
二、特定采样率声音信号播放前面代码实现以特定采样率 Fs =采集一段时长为7秒的语音信号,接下来实现以特定的采样率播放该录制的声音文件 。项目研究的目的在于探讨录制和播放采样率对于声音信号的影响,因此在播放采样率设置时设置“一半”“两倍”“相同”三种情况进行研究 。
myrecording = getaudiodata(recorder);%getaudiodata--读取声音信号信息audiowrite('data_record.wav',myrecording,44100)info = audioinfo('data_record.wav')audiowrite('data_record1.wav',myrecording,22050)info1 = audioinfo('data_record1.wav')audiowrite('data_record2.wav',myrecording,88200)info2 = audioinfo('data_record2.wav')% sound(myrecording,44100) % 播放时采样率设置为与录制时相同% sound(myrecording,22050) % 播放时采样率设置为录制时的一半% sound(myrecording,88200) % 播放时采样率设置为录制时的二倍

2  信号与系统---录制和播放采样率关系对于声音信号的影响

文章插图
3.结果分析针对于结果分析板块,与上篇博文相同,从两个不同的角度进行结果的分析,首先便是从声音信号播放的角度直观感受录制和播放采样率关系对于声音信号的影响,另外便是借助时频域分析更加清晰深刻的分析其对声音信号的影响 。(1)声音信号播放角度在中,借助于sound命令即可以特定的频率播放声音信号,本项目中分别设置“相同”“一半”“二倍”三种情况分析采样率关系对于声音信号的影响 。
声音信号录制的采样率为 Fs = ,如果播放时采样率为,即录制和播放时采样率相同,此时,播放录音文件,听到的为正常声音信号,清晰洪亮 。
但此时如果将播放时的采样率设置为Fs = ,即录制和播放采样率关系为“一半”,此时声音信号播放速度变缓,声音变得更加低沉;此时如果将播放时的采样频率设置为Fs = ,即录制和播放采样率的关系为二倍,此时声音信号播放速度加快,声音音调变高,略显刺耳 。(2)时频域分析角度上面是从声音信号播放的角度借助于人耳直观感受录制和播放采样率关系对于声音信号的影响,接下来借助于时频域波形进行可视化分析,以另外的方式阐释其对于声音信号的影响 。时频域可视化代码:
% 数据可视化代码[y,f] = audioread('data_record.wav');t = 0:seconds(1/f):seconds(info.Duration);t = t(1:end-1);subplot(1,3,1)plot(t,y)title('采样频率相同')[y1,f1] = audioread('data_record1.wav');t1 = 0:seconds(1/f1):seconds(info1.Duration);t1 = t1(1:end-1);subplot(1,3,2)plot(t1,y1)title('采样频率变为“一半”')[y2,f2] = audioread('data_record2.wav');t2 = 0:seconds(1/f2):seconds(info2.Duration);t2 = t2(1:end-1);subplot(1,3,3)plot(t2,y2)title('采样频率变为“二倍”')