Labview声音采集系统
摘要:本项目参考加油小林哥bilibili视频教程,设计的声音采集系统以LabVIEW官方给出的例程——同步声音的输入输出和官方例程给定的设计模板——消息队列事件处理模板为基础,设计完成了对声音的实时采集与输出,并能够显示分析声音的幅度频谱,具有美观的UI设计界面,并且具备强大的可拓展性。项目具备很多子VI封装设计部分,使整体设计简洁明了,极大的增加了项目的可读性。
一、Labview声音采集原理
LabVIEW声音采集的基本原理是通过连接麦克风或其他声音传感器到数据采集设备(如DAQ卡),然后利用LabVIEW的图形化编程环境设计程序,配置数据采集参数,包括采样率、增益等。通过相应的DAQ函数和工具箱进行声音信号采集,并使用LabVIEW进行数据处理、分析和可视化展示。工程师和科学家能够以直观的方式获取、处理和展示声音数据。
二、前面板设计
在图示的左上部显示了原始声音的幅度时间图像,波形图表设计清晰,左侧对应刻度复制自动调节。在UI的左下角是声音的频谱,是信号处理的频谱分析,可以提供关于声音信号性质、源和环境的详细信息,对音频处理、音乐分析、语音识别的后续处理提供帮助。在右侧是设备ID选择,可根据不同的设备进行选择,右侧是启动按钮并且具有运行状态的提示,下面是声音波形预览,整体设计美观,简洁。
三、后面板程序设计
3.1 程序整体设计架构
后面板的设计框架采用消息队列事件处理模板,在事件处理循环中接收前面板触发的事件,在消息处理循环中完成相应的任务,是典型的前后台服务程序。
3.2 声音的采集与输出
上图为官方的例程程序,在whille循环外左半边为声音采集、输出的初始化部分,while循环里为采集,输出程序,一但退出while循环则取消声音的输入输出。
本项目将输入输出分为两个消息处理循环,分别将初始化、执行以及取消执行放在条件结构中,一但消息队列给出相应的指示将执行相应的代码。如上图Start对应初始化,Action1对应开始采集与输出,Close则对应关闭输出与输入设备程序。
3.3 程序的子VI设计
Queue Clear.vi:清空队列内容
Queue Create.vi:创建一个队列
Queue In.vi:向队列插入内容
Queue Out.vi:读取队列内容
Queue Release.vi:删除队列
程序的子VI主要对消息队列系统的封装取代原本的函数使用较少的元素替代,使的程序看起来简单易读。采用项目文件树进行管理是良好的编程方式和编程习惯。
四、系统演示
……
此为视频,双击运行演示程序,完整程序演示在软件包内。