程序设置说明.md 2.8 KB

ACA服务设计说明

程序架构说明

整体流程

读取数据(录音)-> 调用动态库分析数据-> 将结果通过TCP或者MQTT发送出去
  1. 原始采集数据存放在采集类中,由采集类管理
  2. 可以再创建一个生成wav文件的类,用于生成wav文件,管理wav文件
  3. 比对类获取wav文件数据,调用比对动态库进行比对

数据形式

  1. 从声卡读取出的原始数据是char[]数组,存储在一个环形队列中
  2. 对比时要从环形队列中取出,转换成wav文件,传入动态库API中进行比对

其他功能

噪音对比功能

老代码中的东西

使用到的文件和类

  1. Old代码中使用到的文件和类说明 |文件|类、结构体|说明| |---|---|---| |Road.h|CRoad类|录音功能| |||生成wav小文件功能| ||DBCalcThread|计算出音量和反相,存储在缓存中,给外部线程使用| |||调用动态库计算噪音功能,计算噪音使用的是原始文件| ||DBCalcRealTimeThread|计算实时音量,貌似只是为了写日志,不向外发送| ||SendForListenThread|发送原始数据| |Channel.h|CompareNewThread()|对比线程| ||CChannel类|对比类,在里面实现对比的相关操作| |SecondData.h|CCacheDataListOfSecond类|维护一个环形队列,存储180秒的音频缓存| ||OneSecondData结构体|环形队列的元素,一秒的录音数据| |ChannelList.h|CChannelList类|开启录制进程,开启对比进程| |TCPServer.h|SendInfo()函数|发送客户端请求的信息|

功能流程

初始化一些数据

录音功能

  1. 录音到原始文件
  2. 原始文件拷贝一份到计算比对线程,存储到一个环形队列中,队列中的每个单元包含一秒或者几秒的音频数据,计算时取出一定的时间长度,计算出音量,生成wav小文件,进行比对
  3. 原始文件拷贝一份到记录线程,记录到录音文件,1小时一个文件,可以用于发送给客户端
  4. 比对报警时记录报警的时间长度,单独生成一个小的音频文件,单独存放到一个文件夹中。

录音功能处理流程(线程设计)

  1. 获取原始音频的线程,在这里进行数据分发
  2. 一个缓存到环形队列中,生成wav小文件
  3. 一个记录原始音频到文件的线程,每1小时一个wav文件
  4. 一个线程,计算出音量和反相,保存到缓存中
  5. 一个线程,实时向外发送原始音频数据
  6. 一个线程,计算实时音量,写日志,这个貌似不重要,可以合并到其他线程中

对比功能

  1. 取出相同时间的两个wav小文件,传入动态库进行比对,获取结果,进行其他操作

其他功能(TCP监听服务,UDP发送服务)