VAD监测(一)

news/2023/11/30 9:57:56

麦克风的采样率是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之后发现奇数下标分布的比较离散,说明奇数下标是高位,那我们就保留奇数下标,同时说明这是大端方法存储。 


https://www.xjx100.cn/news/3091664.html

相关文章

如果文件已经存在与git本地库中,配置gitignore能否将其从git库中删除

想把项目的前后台代码放到同一个git仓库管理,由于未设置.gitignore,就使用vscode做stage操作(相当于git add . 命令 其中【.】点表示全部文件),观察将要入库的文件发现,node_modules、target、.idea、log等…

MatrixOne完成与麒麟信安、欧拉的兼容互认

近日,超融合异构云原生数据库MatrixOne企业版软件V1.0完成了与欧拉开源操作系统(openEuler简称“欧拉”)、麒麟信安操作系统系列产品和虚拟化平台的相互兼容认证,通过了欧拉兼容性测评,获得了《openEuler技术测评证书》…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.20)

1.判断长按短按 u8 Mode_state_flag 0; u32 buttonPressTime 0; u8 longPressflag 0; u8 shortPressflag 0; // 普通认证 执行此处函数 void T_Key0_Func(void) {if (TKey_Signal.oneBit.b0 1){buttonPressTime;}if ((TKey_Signal.oneBit.b0 1) && (Pre_TKey_Re…

B站短视频如何去水印?一键解析下载B站视频!

在浏览B站视频时,我们有时会遇到带有水印的场景。这些水印可能会干扰我们对视频内容的观看体验,特别是在全屏观看时。此外,当我们想要保存或分享这些视频时,水印也会成为一种障碍。因此,去除水印的需求就变得非常迫切。…

计算机类编程课学生编写的代码应该如何管理

管理学生编写的代码是一个重要的任务,以下是几种常见的方式来有效地管理学生的代码: 版本控制系统:使用版本控制系统(如Git)来管理学生的代码。每个学生都可以在自己的分支上进行开发,并通过提交请求&#…

Java核心知识点整理大全7-笔记

目录 4.1.9. JAVA 锁 4.1.9.1. 乐观锁 4.1.9.2. 悲观锁 4.1.9.3. 自旋锁 4.1.9.4. Synchronized 同步锁 Synchronized 作用范围 Synchronized 核心组件 Synchronized 实现 4.1.9.5. ReentrantLock Lock 接口的主要方法 非公平锁 公平锁 ReentrantLock 与 synchronized …

Linux fork和vfork函数用法

fork和vfork是用于创建新进程的函数,在Linux的C语言编程中非常常见。 fork函数 fork函数是用于创建一个新的进程,新进程是调用进程的副本。新进程将包含调用进程的地址空间、文件描述符、栈和数据。在fork之后,父进程和子进程将并发执行。 …

国外客户要求免费样品?我来教你如何应对

这一次的问题对外贸业务员来说是非常重要。无论你是做什么行业,无论你是做什么产品我相信这个问题对你来说超级有用。 关于发样品给客户我有四个方案来跟大家分享,我希望你能够喜欢希望你很认真的思考一下: 方法一【样品费及运费一起收】&am…