收藏 分销(赏)

实验一:声音处理技术基础.doc

上传人:仙人****88 文档编号:9253667 上传时间:2025-03-18 格式:DOC 页数:7 大小:198.55KB 下载积分:10 金币
下载 相关 举报
实验一:声音处理技术基础.doc_第1页
第1页 / 共7页
实验一:声音处理技术基础.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
实验一:声音处理技术基础 实验目的: 1、 掌握声音录制的基本方法。 2、 掌握MATLAB波形声音操作的函数,可以对声音进行简单的处理。 实验环境: 硬件,P4计算机,软件,winxp操作系统,MATLAB软件。 实验知识准备: 一、声音的数字化过程:声音是连续信号,以连续波的形式传播。而计算机只能处理数字信号,为使计算机能处理音频信号,必须对音频信号数字化。模拟信号数字化的步骤:采样、量化、编码。采样将连续信号离散化,即按一定的时间间隔取值。 ADC (Analogue Digital Converter)。每秒钟的采样次数即采样频率与声音的质量关系最为紧密。采样频率越高,声音质量越接近原始声音,所需的存储量便越多。标准的采样频率有:44.1KHz,22.05kHz,11.025kHz,8KHz等。根据奈奎斯特理论(Nyquist Theory),数字采样频率的大小由声音信号本身的最高频率决定。进行无损的数字化转换,采样频率至少是所采信号所含最高频率的2倍。为了把采样序列存入计算机,必须将样值量化为一个有限个幅度值的集合。通常用二进制数字表示量化后的样值。量化的过程:先将整个幅度划分为有限个小幅度(量化阶距)的集合,把落入某个阶距内的样值归为一类,并赋予相同的量化值。量化位数/采样字长,表示采样值的二进制位数(比特数),决定了采样值的精度。例如,量化位数16 bit,可以表示65536个不同量化值,精度(阶距)1/ 65536。量化位数8 bit,可以表示256个不同量化值,精度(阶距)1/ 256。 二、声音文件大小的计算:数据量(字节/秒)=采样频率 * 采样字长 * 声道数)/8,如每秒CD音质所对应的数据量为:(44.1K*16*2/8) = 176400 Byte。 三、声音录制的几种类型:录制麦克风的声音,首先设置系统的录音属性,选择录音控制对话框中的“麦克风”选项。同时需要将麦克风插入声卡的输入接口。 录制CD播放的声音时选择CD唱机,如下图 可以是录制,播放器软件播放的声音,可选择“Mono Mix”(单声道)或“Stereo Mix”(双声道) 也可以是线路输入的声音。 四、MATLAB软件简介:MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为内容。在国际学术界,在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。MATLAB自问世起,就抱定一个宗旨,其所有数值计算算法都必须是国际公认的、最先进的、可靠算法;其程序由世界一流专家编制,并经高度优化;而执行算法的指令形式则必须简单、易读易用。MATLAB正是仰赖这些高质量的数值计算函数赢得了声誉。MATLAB数值计算函数库的另一特点是其内容的基础性和通用性。它正由于这一特点,而适应了诸如自动控制、信号处理、动力工程、电力系统等应用学科的需要,并进而开发出一系列应用工具包。我们今天使用了MATLAB中WAVE (.wav)格式声音文件的几个功能函数。 实验内容: 一、 使用winxp录音机:打开录音机程序,设置好录音属性,点击红色按钮即可。 录制声音的采样频率和量化位数可以选择,方法是执行菜单命令“文件”→“属性”,打开 如图所示对话框。可以在对话框中看到默认的录制格式,单击“开始转换”弹出录制格式对话框,在这个对话框中,“名称”下面的列表框中预置了几种声音格式可以选择,也可以从“属性”列表中选择一个合适的录制格式。录制完成后可以执行菜单“文件”→“保存”把 文件保存为WAV文件。选择不同的采样频率和量化位数,体验声音的质量。可以使用编辑菜单,对文件进行简单的编辑。 二、使用MATLAB进行操作。MATLAB提供的WAVE (.wav)格式声音文件操作的几个功能函数。如下: 1、wavread 读取微软 WAVE (.wav)音频文件。 语法: y = wavread('filename') [y,Fs,bits] = wavread('filename') [...] = wavread('filename',N) [...] = wavread('filename',[N1 N2]) [...] = wavread('filename','size') 描述: wavread支持读取多通道数据,每个采样数据可以是32位,并支持读取24位和32位wav 文件。 y = wavread('filename')加载文件名为filename的 WAVE文件,将采样数据获得给y. 如果在没有给出扩展名的情况下 以.wav 为扩展名。幅度值在[-1,+1]范围内。 [y,Fs,bits] = wavread('filename') 返回文件中数据编码的采样频率Fs(Hz)和每个样本值的位数。 [...] = wavread('filename',N) 只返回文件中每个通道的前N个样本值。 [...] = wavread('filename',[N1 N2]) 返回文件中每个通道的N1到N2样本值。 siz = wavread('filename','size')返回文件中音频数据的尺寸来替代实际的音频数据,返回向量 siz = [samples channels]. 2、Wavrecord:通过计算机上的音频输入设备来录制音频。 语法: y = wavrecord(n,Fs) y = wavrecord(...,ch) y = wavrecord(...,'dtype') 描述: y = wavrecord(n,Fs) 以采样频率为Fs(Hz)来录制音频信号的n个样本值。Fs 的缺省值大小为11025 Hz。 y = wavrecord(...,ch) 使用一品设备的ch输入通道来录制。Ch是1或2, 可以是单声道或双声道。Ch默认值是1.。 y = wavrecord(...,'dtype') 使用字符'dtype'定义的数据类型来录制声音。字符'dtype' 可以是下列之一: l 'double' (default value), 16 bits/sample l 'single', 16 bits/sample l 'int16', 16 bits/sample l 'uint8', 8 bits/sample 注释: PC机音频硬件的标准采样频率为 8000, 11025, 2250, and 44100 Hz。立体声信号返回包含两列数据的矩阵。第一列对应了左声道的数据, 第二列对应右声道数据。 例子: 采样频率大小为11025 Hz ,样本精度为16-bit 录制5秒钟音频数据. 然后可以使用wavplay命令进行回放。 在wavrecord命令运行时提供声音输入信号。示例代码如下: Fs = 11025; y = wavrecord(5*Fs,Fs,'int16'); wavplay(y,Fs); 3、wavplay : 通过PC输出设备播放已经录制的声音。 语法: wavplay(y,Fs) wavplay(...,'mode') 描述: wavplay(y,Fs) 通过PC输出设备播放向量y中的声音数据。可以指定Fs大小来确定声音信号的取样频率。默认值的大小为11025 Hz (samples per second)。Wavplay支持一个通道或两个通道(单声道或双声道)的声音信号。 wavplay(...,'mode')指定以'mode'方式播放。字符 'mode' 可以是:'async' (异步,默认值),'sync': 声音信号y 以下四种数据类型。 量化的位数播放样本数据依赖于数据类型。 数据类型 量化精度 Double-precision(default value) 16 bits/sample Single-precision 16 bits/sample 16-bit signed integer 16 bits/sample 8-bit unsigned integer 8 bits/sample 注释: 如果y 是两列矩阵可以立体声方式播放。 例子: 文件gong.mat and chirp.mat 都包含了声音数据y和采样频率Fs。载入播放铜锣和唧唧声。load chirp; y1 = y; Fs1 = Fs; load gong; wavplay(y1,Fs1,'sync') % The chirp signal finishes before the wavplay(y,Fs) % gong signal begins playing. 4、wavwrite : 写微软WAVE (.wav)格式声音文件。 语法: wavwrite(y,'filename') wavwrite(y,Fs,'filename') wavwrite(y,Fs,N,'filename') 描述: wavwrite 支持写多通道 WAVE数据, 每个采样数据可以是32位,并支持写24位和32位 .wav文件。wavwrite(y,'filename') 写一个以字符filename为文件名的WAVE文件。 数据以每列一个通道方式来组织。在写之前振幅值超出[-1,+1]的部分被忽略掉。 wavwrite(y,Fs,'filename') 定义数据采样频率为 Fs, . wavwrite(y,Fs,N,'filename') N <= 32.定义书写文件时每个样本的位数(精度)。 实验要求 1、 使用winxp录音机,进行文件的声音的录制,并保存成WAV文件。 2、 使用MATLAB提供的函数对该文件进行读取、观察波形信号、进行回放。 3、 使用MATLAB提供的函数进行声音的录制,并将其写成一个WAV文件。 4、 试分析一段语音的频谱分布 clear [y,Fs,bits] = wavread('E:\music.wav'); wavplay(y(1:100000),Fs) T = 1/Fs; L = 100000; t = (0:L-1)*T; plot(Fs*t(1:50),y(1:50)) NFFT = 2^nextpow2(L); Y = fft(y,NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2); plot(f,2*abs(Y(1:NFFT/2))) for n=1:L-99 y1(n)=sum(y(n:n+99))/100; end wavplay(y1,Fs) subplot(2,1,1,'r'),plot(y(1:L)) subplot(2,1,2,'r'),plot(y1)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服