Python:实时或从 wav 文件获取音量分贝级别

2023-12-01

对于项目工作,我需要从录制的音频文件或使用麦克风实时录制来测量音量。经过初步研究,我尝试使用声音文件库。该文件是使用 soundfile 读取的并使用20*np.log10(np.sqrt(np.mean(np.absolute(a)**2))),我已经计算了dB值。我得到的声音文件为负值。但正常的声音可能在 50-70 dB 范围内,而我得到的是负值。有人能帮我解决这个问题吗?


简短回答:dB 与 dB 不同。您的结果可能是正确的。

长答案:dB 级别总是定义与某个参考值的关系。对于音频/声学来说,有很多参考价值,并且您需要指定要使用哪个 dB 值才有意义。 dB 值计算如下

20*log10(value/reference)dB

(假设它是一个根功率量,对于功率量,该系数为 10,而不是 20)。需要注意的一件重要事情是,除以参考值会按预期删除单位。

所以,当你说

正常声音可能在 50-70 分贝范围内

这并不是一个准确的说法,你可能的意思是

正常声音可能在 50-70 dB SPL 范围内

您给出的值相对于参考声压级 20 µPa.

在数字系统中,声音文件通常由浮点数表示< 1,然后我们谈到dB FS(dB 满量程)参考值1(无单位)。根据数学定律,dB FS 值为负值。

同样清楚的是,您不能直接将 dB FS 值与 dB SPL 值联系起来:如果您播放同一个音频文件(即取一些 dB FS 值)并播放两次,但调高扬声器的音量旋钮,则会导致到两个不同的 dB SPL 值(您听到的声音)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:实时或从 wav 文件获取音量分贝级别 的相关文章

随机推荐

  • 如何在本机应用程序中处理 chrome.runtime.sendNativeMessage()

    我正在本地消息传递主机上工作 我可以使用 api 启动我的自定义应用程序 var port chrome runtime connectNative com my company my application 我可以使用 api 将消息发布
  • 通过插件命令替换 Eclipse 编辑器中选定的代码

    如何在 Eclipse 编辑器中替换选定的代码部分 通过鼠标选择选择 并仅在 selected text 通过插件 我已经设计了一个插件来在工具栏中创建一个按钮 当我单击它时 我需要它来更改所选的文本并将其放入 尝试这个片段 它应该给你足够
  • C++ 标准是否要求升级为 int?

    采取以下代码片段 short int a b 30001 c 30002 d 30003 a b c d 假设short int是16位 int是32位 这是 C 中未定义的行为吗 我对C标准的解读是b和c都必须提升为int 因此整个计算必
  • 在 VSCode 中自动在列处硬换行

    如何在 VSCode 中自动换行 我的意思是 如果一行到达指定的列 则会自动在最接近该列的单词边界处插入换行符 而不会越过 Vim 有一个设置叫做文本宽度我在编辑 Markdown 时喜欢使用它 据我所知 VSCode 似乎没有这样做 它只
  • 如何禁用 WPF 图像?

    我需要一个禁用时呈灰色的图像 IsEnabled False 可以通过将 BitmapImage 读入 FormatConvertedBitmap 来生成图像的灰色版本 如下所示here 我已经能够使用 UserControl 来实现此功能
  • 我应该如何在 Perl 中使用“my”关键字?

    我不断看到my在线示例 Perl 脚本中变量名前面的关键字 但我不知道它的含义 我尝试阅读手册页和其他在线网站 但鉴于我所看到的使用方式与手册之间的差异 我很难辨别它的用途 例如本文中用于获取数组长度的 在 Perl 中查找数组的大小 但说
  • 如何在 SQL Server 2008 中查看事务日志 [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要查看数据库的事务日志SQL Server 2008为了找到删除事务并希望将其回滚 不幸的是 我不知道从哪里开始 而且我发现很难确定哪些是goo
  • 在鼠标悬停时显示 DIV

    On mouseover这个 div 可以附加到鼠标指针 以便其内容在鼠标悬停时显示吗 div style display none div 如果是的话 这是如何完成的 div abc div div that s abc div
  • UIView 动画期间的键值观察

    我正在程序中为视图的中心属性设置动画 在动画过程中 当中心达到特定值时我需要通知 我尝试将自己添加为视图中心属性的键值观察者 但是 我只有在动画开始时才会收到通知 所以我无法检测物体是否 何时通过我的兴趣点 有没有办法通过 KVO 或任何其
  • 当键盘处于活动状态时,UITextView 自动大写功能不起作用

    目前 我正在像这样的按钮目标中设置自动大写 This method is fired when keyboard is still active IBAction changeAutoCapitalization id sender sel
  • 在 Excel VBA 中解析 JSON

    我有同样的问题Excel VBA 解析的 JSON 对象循环但找不到任何解决方案 我的 JSON 具有嵌套对象 因此建议的解决方案 如 VBJSON 和 vba json 对我不起作用 我还修复了其中一个使其正常工作 但结果是由于 doPr
  • 构建淘汰模型并动态查看,未设置单选按钮

    我正在制作其中之一我之前的问题完全动态 因为模型是根据服务器数据构建的 并且视图通过淘汰赛循环遍历视图模型ko foreach功能 我面临的问题是 单选选项不会保留设置的值 即我单击操作系统 然后选择数据库选项 然后操作系统设置消失 当从属
  • 正则表达式替换浮点数中的多个句点

    如果我输入这样的内容 a1 b22 333 我希望它输出 1 22333 或 122 333 它去掉了非数字字符和任何超过 1 的句点 我对此的最佳猜测是 obj value obj value replace 0 9 1 g obj va
  • C# 处理信息时表单冻结

    我为自己编写了一个个人网络抓取工具 用于抓取艺术家信息 代码可以工作 但是当我按下按钮并开始处理 while 循环时 GUI 冻结了 我将文本框设置为 refresh 但我无法移动表格 取消程序的唯一方法就是强制退出 我正在重写这个 所以我
  • 如何使用 ARKit 和 RealityKit 检测 2D 图像

    我想使用检测二维图像ARKit and 现实套件 我不想使用 SceneKit 因为许多实现都是基于 RealityKit 的 我在 RealityKit 上找不到任何检测图像的示例 我提到https developer apple com
  • 如何使用 javascript 添加新的
  • 如何使用 onclick 中的函数将列表元素添加到现有 ul 我需要它添加到此类列表中 ul li One li li Two li li Three li ul 另一个列表项 其 id 为 element4 其下为文本 Four 我尝试了
  • shell 错误地读取在 Windows 中创建的文件

    这是我的 shell 脚本和属性文件 test sh bin bash source default properties echo app name echo app name 默认属性 app name TestApplication
  • 如何更快地读取/遍历/切片 Scipy 稀疏矩阵(LIL、CSR、COO、DOK)?

    为了操作 Scipy 矩阵 通常使用内置方法 但有时您需要读取矩阵数据以将其分配给非稀疏数据类型 为了演示 我创建了一个随机 LIL 稀疏矩阵 并使用不同的方法将其转换为 Numpy 数组 纯 Python 数据类型会更有意义 from f
  • 在 Websphere 中跟踪 HTTP 请求

    我有以下要求 我想跟踪通过我们的 WebSphere 服务器的所有请求 我们有一些 Web 应用程序和一些 Web 服务部署到我们的服务器上 但是 我不想将跟踪机制添加到每个应用程序中 是否有可能添加一些插件或为WebSphere服务器创建
  • Python:实时或从 wav 文件获取音量分贝级别

    对于项目工作 我需要从录制的音频文件或使用麦克风实时录制来测量音量 经过初步研究 我尝试使用声音文件库 该文件是使用 soundfile 读取的并使用20 np log10 np sqrt np mean np absolute a 2 我