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.mzph.cn/news/151698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天一道算法题(七)——求一个数组中最多能存储多少雨水(困难)

文章目录 1、问题2、示例3、解决方法(1)方法1——双指针 总结 1、问题 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 2、示例 示例 1: 输入:height [0,1…

庖丁解牛:NIO核心概念与机制详解 01 _ 入门篇

文章目录 Pre输入/输出Why NIO流与块的比较通道和缓冲区概述什么是缓冲区?缓冲区类型什么是通道?通道类型 NIO 中的读和写概述Demo : 从文件中读取1. 从FileInputStream中获取Channel2. 创建ByteBuffer缓冲区3. 将数据从Channle读取到Buffer中 Demo : 写…

算法-二叉树-简单-二叉树的最大和最小深度

记录一下算法题的学习7 二叉树的最大深度 题目:给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 输入:root [3,9,20,null,null,15,7] 输出:3 示例分析&#xff…

MATLAB 状态空间设计 —— LQG/LQR 和极点配置算法

系列文章目录 文章目录 系列文章目录前言一、相关函数 —— LQG/LQR 和极点配置算法1.1 LQR —— lqr 函数1.1.1 函数用法1.1.2 举例1.1.2.1 倒摆模型的 LQR 控制 1.2 LQG —— lqg() 函数1.2.1 函数用法1.2.2 举例 1.3 极点配置 —— place() 函数1.3.1 函数用法1.3.2 示例1.3…

Selenium安装WebDriver最新Chrome驱动(含116/117/118/119)

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

如何使用ffmpeg将FLAC格式转为MP3格式

以下是使用ffmpeg将FLAC格式转换为MP3的方法: 单个文件转换: ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3 其中,input.flac是要转换的FLAC文件名,output.mp3是转换后的MP3文件名。-ab 320k表示…

如何在虚拟机的Ubuntu22.04中设置静态IP地址

为了让Linux系统的IP地址在重新启动电脑之后IP地址不进行变更,所以将其IP地址设置为静态IP地址。 查看虚拟机中虚拟网络编辑器获取当前的子网IP端 修改文件/etc/netplan/00-installer-config.yaml文件,打开你会看到以下内容 # This is the network conf…

Vue中的组件间通信有哪些方式?

Vue中实现组件间通信的方式非常多样,以下是一些常用的方式: Props / $emit:这是最常用的组件通信方式,父组件通过属性向子组件传递数据,子组件通过事件向父组件传递数据。Ref / $refs:这是一种访问子组件或…

面向开发者的Android

Developerhttps://developer.android.google.cn/?hlzh-cn SDK 平台工具版本说明https://developer.android.google.cn/studio/releases/platform-tools?hlzh-cn#revisions Android SDK Platform-Tools 是 Android SDK 的一个组件。它包含与 Android 平台进行交互的工具…

【Redis】springboot整合redis(模拟短信注册)

要保证redis的服务器处于打开状态 上一篇: 基于session的模拟短信注册 https://blog.csdn.net/m0_67930426/article/details/134420531 整个流程是,前端点击获取验证码这个按钮,后端拿到这个请求,通过RandomUtil 工具类的方法生…

dm 聚合函数和group的总结

-- dm:select中只能为group字段,聚合函数;不能有其他内容 select id,user_id,role_id from assets_dm_test.user_role GROUP by role_id; -- mysql: ok 执行ok,但是语法有问题,多条时只显示了第一条 sel…

nginx得if语句内proxy_pass不允许携带url部分,如何处理

在nginx中,proxy_pass指令不能直接携带URL部分。但是,可以使用rewrite指令结合正则表达式来处理URL部分。 下面是一个示例配置,演示如何使用rewrite指令将URL中的某个部分进行替换后传递给后端服务器: location /v100/{proxy_…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven依赖管理,版本号管理,继承和聚合

第一章 Maven的依赖管理 1.1 依赖范围 依赖语法&#xff1a;<scope> compile【默认值】&#xff1a;在main、test、Tomcat【服务器】下均有效。test&#xff1a;只能在test目录下有效 junit provided&#xff1a;在main、test下均有效&#xff0c;Tomcat【服务器】无效…

Labview中for循环“无法终止”问题?即使添加了条线接线端,达到终止条件后,仍在持续运行?

关键&#xff1a; 搞清楚“运行”和“连续运行”两种运行模式的区别。 出现题目中所述问题&#xff0c;大概率是因为代码运行在“连续运行“模式下。 可以通过添加 探针 的方式&#xff0c;加深理解&#xff01;

拼图游游戏代码

一.创建新项目 二.插入图片 三.游戏的主界面 1.代码 package com.itheima.ui;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Random;import javax.swing…

pnpm : 无法加载文件 E:\Soft\PromSoft\nodejs\node_global\pnpm.ps1,

pnpm : 无法加载文件 E:\Soft\PromSoft\nodejs\node_global\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中 的 about_Execution_Policies。 所在位置 行:1 字符: 1pnpm -v~~~~ CategoryI…

数据结构【DS】栈的应用

描述一下如何实现括号匹配&#xff1f; 初始时栈为空。 从左往右遍历算术表达式中的每个括号元素&#xff1a; ①当遍历到左括号时&#xff0c;将其压入栈顶。 ②当遍历到右括号时&#xff0c;将栈顶元素出栈&#xff0c;并判断出栈的左括号与当前遍历的右括号是否匹配&…

杭电oj 2050 折线分割平面 C语言

#include<stdio.h>void main() {int c, n, i;long long sum;while (~scanf_s("%d", &c)){while (c--){scanf_s("%d", &n); sum 0;sum 2 * n * n - n 1;printf("%lld\n", sum);}} }

Django 入门学习总结6 - 测试

1、介绍自动化测试 测试的主要工作是检查代码的运行情况。测试有全覆盖和部分覆盖。 自动测试表示测试工作由系统自动完成。 在大型系统中&#xff0c;有许多组件有很复杂的交互。一个小的变化可能会带来意想不到的后果 测试能发现问题&#xff0c;并以此解决问题。 测试驱…