声音信号采集与播放
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
声音信号采集与播放
实验报告
目录
一、实验概述
二、实验程序及介绍
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 编程技能得到了提高。