版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章音频分析系统Linux开发案例
2.2 音频分析系统开发音频分析系统Linux开发案例时域描述数学函数或物理信号对时间的关系,例如一个信号的时域波形可以表达信号随着时间的变化,是真实世界,是惟一实际存在的域。频域是描述信号在频率方面特性时用到的一种坐标系。波从时域到频域的转换可以通过傅里叶变换实现。傅里叶级数的本质是将一个周期的信号分解成无限多分开的(离散的)正弦波,这种变换是通过一组特殊的正交基来实现。一段波形图可以分解成不同频率的波形图,也就是由时域到频域的转换,转换原理如图所示。2.2.1频谱分析显示功能开发2.2.1.1音频频谱分析原理音频分析系统Linux开发案例音频分析显示系统的主程序的功能是通过多线程实现,这样每个线程可以独立的处理自己功能,如图所示。2.2.1频谱分析显示功能开发2.2.1.2软件功能设计(程序源码详细请查看文档)音频分析系统Linux开发案例ALSA是AdvancedLinuxSoundArchitecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(MusicalInstrumentDigitalInterface,音乐设备数字化接口)的支持。ALSA的主要特性包括:高效地支持从消费类入门级声卡到专业级音频设备所有类型的音频接口,完全模块化的设计,支持对称多处理(SMP)和线程安全,对OSS的向后兼容,以及提供了用户空间的alsa-lib库来简化应用程序的开发。ALSA是kernel中的一个声音驱动程序,它包括ALSA核心和其他声卡的驱动。alsa-utils是ALSA的一个工具包,里面包含有声卡测试和音频编辑的工具。arecord,aplay是命令行的ALSA声卡驱动的录音和播放工具。arecord是命令行ALSA声卡驱动的录音程序,支持多种文件格式和多个声卡。aplay是命令行播放工具,支持多种文件格式。2.2.2音频处理功能开发2.2.2.1Linux声卡驱动与调试方法arecord[flags][filename]aplay[flags][filename[filename]]...音频分析系统Linux开发案例通过运行arecord命令录音时,录音数据可以输出到文件,本项目主要功能是对录制的音频数据进行分析,如果数据保存文件再从文件读取效率很低,这样采用直接通过本机回环网络通信的机制高效读取数据,通过udpfw程序进行网络输出udpfw.c程序录音线程程序源码:2.2.2音频处理功能开发2.2.2.2音频数据处理功能分析//arecord命令录音,通过udpfw程序进行网络输出void*threadRecoder(void*arg){ intpid; charcmd[64]; snprintf(cmd,64,"arecord-r%d-fU8-traw|./udpfw&",SAMPLE); system(cmd);}(完整源码详细请查看文档)2.2.2.3音频数据转发程序分析音频分析系统Linux开发案例根据系统要实现的功能,通信协议设计如表所示。2.2.3上位机控制应用开发2.2.3.1通信协议设计0x5A命令cmd参数param0xA51个字节1个字节0-n个字节1个字节收发方向命令参数说明上位机
设备1无设备发现命令2kv按键模拟指令,kv取值1,23x切换到相应的功能,x取值0,1,24yled8x8涂鸦功能y对应led8x8缓存设备
上位机0x81v1,v2设备发现命令响应,v1设备硬件版本版本,v2设备软件版本音频分析系统Linux开发案例网络通信处理线程主要实现的功能是同Android应用程序进行通信,收发处理通信命令,程序源码如下:2.2.3上位机控制应用开发2.2.3.2网关网络程序开发staticvoid*threadUdp(void*arg){ int*parg=arg; structsockaddr_inserver_addr; structsockaddr_inclient_addr; intclient_len; charrcv_buff[1024]; charsend_buff[1024]; intrcv_num; intsock_fd;
if((sock_fd=socket(AF_INET,SOCK_DGRAM,0))<0){perror("socketcreateerror\n");exit(1);}memset(&server_addr,0,sizeof(structsockaddr_in));
server_addr.sin_family=AF_INET;server_addr.sin_port=htons(27351);server_addr.sin_addr.s_addr=htonl(INADDR_ANY);client_len=sizeof(structsockaddr_in);if(bind(sock_fd,(structsockaddr*)&server_addr,sizeof(structsockaddr_in))<0){perror("binderror.\n");exit(1);}
(完整源码详细请查看文档)音频分析系统Linux开发案例Android应用程序主要是提供一个操作界面,通过Android的网络功能查找局域网中运行音频分析系统应用的智能网关设备,搜索到设备后显示IP地址,用户点击IP址址进入音频分析设备控制界面。AndroidStudio开发环境中看到的本项目的工程目录如图所示。2.2.3上位机控制应用开发2.2.3.3Android应用开发(完整源码详细请查看文档)音频分析系统Linux开发案例音频分析设备控制界面主要有两大功能,一个是频谱分析显示,一个是设备测试功能。点击界面上的“功能”按钮可以在频谱与测试功能间切换。1)在频谱功能下,点击“样式”可以切换线条、雪花、块状不同的显示样式。2)进入测试功能时,OLED屏幕会显示当前软件版本号,单击软件界面上的8x8模拟点阵屏中的某个小点,扩展板点阵屏可以同步操作。2.2.3上位机控制应用开发2.2.3.3Android应用开发(完整源码详细请查看文档)包名(类名)说明com.zonesion.udp.demo应用包DeviceActivity.java主界面类MainActivity.java创建Socket,向服务端发送请求音频分析系统Linux开发案例1、ARM扩展模块硬件连接2.2.4开发实践:音频分析显示2、声卡驱动与测试网关驱动程序开发与测试需要ARM扩展模块,参考“1.1.5开发实践:显示模块驱动开发与测试”。通过Moba应用程序的SSH功能登录边缘计算网关,输入录音命令:arecord-r22000-fU8-trawtest.raw-r22000设置采样率,-fU8设置格式,-traw文件类型,test.raw录音文件名称。打开边缘计算网关的声音设置,如果录音程序启动成功,在录音选项可以看到录音设备,对着边缘网关大声说话,可以看到采集的音量大小变化,如图所示。音频分析系统Linux开发案例3、音频分析应用程序测试2.2.4开发实践:音频分析显示1)通过Moba软件将“FFTDriver”目录下的fft-test文件夹复制到边缘计算网关。fft-test文件夹中是音频分析应用程序的全部源码与编译规则文件,如图2.24所示。音频分析系统Linux开发案例3、音频分析应用程序测试2.2.4开发实践:音频分析显示2)在应用程序源码目录通过make命令进行编译,make命令会使用当前目录下的Makefile文件中编译规则对程序进行编译。test@rk3399:~/work/fft-test$makegcc-c-outils.outils.cgcc-c-ofont.ofont.cgcc-c-offt.offt.cgcc-c-oled8x8.oled8x8.cgcc-c-ooled.ooled.cgcc-c-oaudioTest.oaudioTest.cgccutils.ofont.offt.oled8x8.ooled.oaudioTest.o-lm-lpthread-offtAppgcc-c-oudpfw.oudpfw.cgcc-oudpfwudpfw.o音频分析系统Linux开发案例3、音频分析应用程序测试2.2.4开发实践:音频分析显示3)因为程序中要调用录音功能,在SSH远程登录中运行会有权限问题,需要直接在网关上运行或通过Moba软件的VNC远程桌面中去运行。在远程桌面的终端中输入命令sudo./fftApp运行测试,如图所示。音频分析系统Linux开发案例3、音频分析应用程序测试2.2.4开发实践:音频分析显示4)Android应用测试。在Android终端(手机与平板)上安装“FFTDriver”目录下的demo.apk应用程序。边缘计算网关与Android终端接入同一个局域网中,打开Android终端中应用程序,会搜索当前网络中的网关设备,显示其IP地址与软硬件版本号,点击IP址进入网关设备控制界面,如图所示。音频分析系统Linux开发案例3、音频分析应用程序测试2.2.4开发实践:音频分析显示4)Android应用测试。点击“功能”按钮可以在频谱与测试功能间切换,进入“测试”功能时,OLED屏幕会显示当前软件版本号,单击软件界面上的8x8模拟点阵屏中的某个小点,扩展板点阵屏可以同步操作,如图所示。音频分析系统Linux开发案例
2.2.5小结本节学习了项目中的核心功能音频频谱分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年房产认购专项协议范本
- 2024年成品油销售协议模板
- 2023-2024学年珠海市全国大联考(江苏卷)高三第二次数学试题试卷
- 2024年高效代理合作招募协议模板
- 2024年幼教岗位聘用协议范本
- 彩钢瓦安装工程协议模板2024年
- 2024年海水产品长期供应协议模板
- 2024年度润滑油分销协议范本
- 文书模板-《硬件设计合同》
- 2024房产居间服务协议模板
- 微积分方法建模12传染病模型数学建模案例分析
- 卫浴产品世界各国认证介绍
- 江苏省职工代表大会操作办法.doc
- 湘教版小学音乐五年级上册教学计划
- sch壁厚等级对照表
- 高新技术企业认定自我评价表
- 药物分类目录
- 中石油-细节管理手册 03
- 柿子品种介绍PPT课件
- 全国重点文物保护单位保护项目安防消防防雷计划书
- 护士对预防患者跌倒的问卷调查表
评论
0/150
提交评论