声音信号采集与播放实验报告目录一、实验概述二、实验程序及介绍1、录制声音文件2、播放声音文件三、实验结果及分析四、实验总结一、实验概述本实验在LABVIEW平台上构建了一个声音信号采集和播放的程序。用这个程序可以通过麦克风将音乐、声响或语音录制下来,保存在文件中,并通过播放程序部分将保存的声音文件播放出来。二、实验程序1、录制声音文件图1录制声音程序流程图图2录制声音程序前面板录制声音的程序由一系列声音VI和一系列文件VI并列组成,程序框图如图1所示。下面按照图中各个VI的序号,介绍程序的构成。(1)读取并打开声音文件VI:这是一个多态VI,此处选取“写入”。它创建一个声音文件,用于写入“.wav”格式的声音文件。它要求输入文件路径和声音文件格式。“声音格式”参数是一个簇,其中包含采样率、通道数、没采样比特数。程序中把这3个参数分别设置为22050、2、16,这样可以把麦克风输入的声音存储为16位立体声数据文件。它输出一个声音文件引用句柄。(2)写入声音文件VI:将输入的声音数据写入声音文件。声音数据是一个簇数组,共两个元素;每个元素是一个波形簇,包括采样开始时间t0、采样时间间隔dt和声音数据y。t0和td被忽略,y可以是DBL、SGL、U8、I16、I32几种数据类型。这是一个多态VI,要根据y输入的数据类型手工选择相应的子VI。(3)关闭声音VI:根据输入的声音文件引用句柄将“.wav”声音文件关闭。(4)配置声音输入VI:配置声音输入设备以采集声音数据。“每通道采样数”参数配置内存缓存中每个通道的采样数,连续录音时要用大一些的数值,本例配置为“10000”;“采样模式”参数在事前不清楚录制数据量大小时配置为“连续采样”;“设备ID”参数指定使用的声音设备;“声音格式”参数前面已经介绍过;“任务ID”参数输出一个关于指定设备配置信息的标识。(5)读取声音输入VI:根据输入的任务ID从声音输入设备读取数据。“每通道采样数”的参数要和配置声音输入VI中的配置相同。这是一个多态VI,要根据需要的声音数据类型手工选择相应的子VI。(6)声音输入清零VI:根据输入的任务ID结束声音采集、清空内存缓冲区、释放相关设备资源。(7)简易错误处理器VI:报告整个程序执行过程中是否有错误。2、播放声音文件图3播放声音程序流程图图4播放声音程序前面板下面按照图3中各个VI的序号,介绍程序的构成。(1)打开声音文件VI:前面已经介绍过。此处选取“读取”。(2)读取声音文件VI:根据输入的声音文件引用句柄从“.wav”文件读取一个波形数组。“每通道采样总数”参数指定这个VI每次被调用时读出的采样数据量,尽量和“配置声音输入VI”的“每通道采样数”参数一致;“位置模式”和“位置偏移量”两个参数确定文件当前位置加上偏移量的位置开始读数据,默认值为“相对”;输出的”数据“类型与写入时一样,每次输出一次采样的数据;输出的”偏移量“参数是输入的偏移量加上本次读文件产生的偏移量之和;”文件结束?”参数“T”时达到文件末尾。这是一个多态VI,要根据声音文件的数据类型手工选择相应的子VI。(3)关闭声音文件VI:前面已经介绍。(4)配置声音输出VI:和“配置声音输入VI”的配置参数相同。(5)配置声音输出音量VI:调节输出声音音量大小用。(6)写入声音输出VI:将输入数据写入声音输出设备。这是一个多态VI,要根据声音文件的数据类型手工选择相应的子VI。(7)声音输入清零VI:前面已经介绍。(8)简易错误处理器VI:前面已经介绍。三、实验结果及分析经测试,本程序可以较好地实现声音信号的录制和播放功能,且输出声音质量尚可。四、实验总结本次试验中,我通过编程实现了声音信号的采集与播放功能,对数据采集与处理技术这门课程得到了更深的体会。同时,LABVIEW编程技能得到了提高。