当前位置: 首页 > article >正文

VAD监测(一)

麦克风的采样率是16000,代表一秒钟采集16000个数据点

我们每次拿1024个采样点作为一个buffer,buffer是一个b''类型,也就是字节类型。 这一个buffer的长度不一定是1024,取决于每个采样点的采样点的位深度,如果音频数据是 16 位(2 字节)的采样,那么 buffer 将包含 1024 个采样点,每个采样点占用 2 个字节,因此 buffer 的总长度将是 2048 字节,如果是双声道的话,那就要再翻上一杯。 

一个采样点占用两个字节,那在计算机内存中是如何存储的呢?

一般使用大端方法或者小端方法进行存储。

两个字节的排列顺序取决于系统的字节顺序。在“大端(Big-Endian)”系统中,高位字节(更有意义的部分)存储在低地址处,而在“小端(Little-Endian)”系统中,高位字节存储在高地址处。例如,16位采样值0x1234在大端系统中存储为0x12 0x34,而在小端系统中存储为0x34 0x12。

举个例子,假设你有两个16位采样值,0x1234和0x5678。在小端系统中,它们可能在内存中这样排列(假设从地址0x00开始):

对于十六进制数0x1234:

  • 高位字节(Most Significant Byte,MSB)是0x12。
  • 低位字节(Least Significant Byte,LSB)是0x34。
地址   内容
0x00(低地址处)  0x34(低位字节)
0x01(高地址处)  0x12(高位字节)
0x02   0x78
0x03   0x56

高位字节比低位字节保留的信息更多,所以我们需要保留高位字节。

那就需要判断是用大端方法还是小端方案呢?如果是小端方案,那我们就保留高地址处的高位字节,也就是保留奇数下标。 如果是大端方案,我们需要保留低地址处的高位字节,那就保留偶数下标。 

如何判断是用大端方法还是小端方案呢?

既然一个采样点占用两个字节,然后依次向后排列。 我们判断一下偶数下标的字节和奇数下标的字节那个分布的更均匀。 

Counter之后发现奇数下标分布的比较离散,说明奇数下标是高位,那我们就保留奇数下标,同时说明这是大端方法存储。 


http://www.kler.cn/a/135798.html

相关文章:

  • vue3 如何使用 mounted
  • 反射探针.
  • 使用Vue的props进行组件传递校验时出现 Extraneous non-props attributes的解决方案
  • es 3期 第18节-分页查询使用避坑的一些事
  • C++23新特性解析:[[assume]]属性
  • 石岩基督教福音堂
  • 最全HTTP/HTTPS面试题整理(二)
  • 【开源】基于JAVA的快递管理系统
  • Uniapp连接iBeacon设备——实现无线定位与互动体验(实现篇)
  • 基础组件-流量回放(全链路流量回放预研)
  • 论文-分布式-拜占庭将军问题
  • 免疫微环境、免疫细胞浸润分析、免疫功能分析
  • 解决在pycharm中使用matplotlib画图问题
  • SpringBean的配置详解 --中
  • UnitTest框架
  • 图像处理01 小波变换
  • uni-app开发微信小程序 vue3写法添加pinia
  • 云桌面 node_modules 切换艰辛历程记录 rebuild失败记录
  • Positive Technologies 利用 PT Cloud Application Firewall 保护中小型企业的网络资源
  • (八)、基于 LangChain 实现大模型应用程序开发 | 基于知识库的个性化问答 (检索 Retrieval)
  • 实用篇-ES-RestClient查询文档
  • 使用Lychee搭建个人图片存储系统并进行远程访问设置实现公网访问本地私人图床
  • 拼图游游戏代码
  • Vatee万腾携手Wiki EXPO 2023悉尼峰会 共谱辉煌未来
  • Java code auditing
  • 力扣刷题-二叉树-完全二叉树的节点个数