不同音频振幅dBFS计算方法
1. 振幅的基本概念
振幅是描述音频信号强度的一个重要参数。它通常表示为信号的幅度值,幅度越大,声音听起来就越响。为了更好地理解和处理音频信号,通常会将振幅转换为分贝(dB)单位。分贝是一个对数单位,能够更好地反映人耳对声音强度变化的感知。
2. 振幅计算方法
2.1 总 RMS(Total RMS)
总 RMS 是一种常用的振幅计算方法,表示整个音频信号的平均能量。其计算公式为:
RMS = 20 ⋅ log 10 ( 1 N ∑ i = 1 N x i 2 + 1.0 × 1 0 − 9 ) \text{RMS} = 20 \cdot \log_{10}(\sqrt{\frac{1}{N} \sum_{i=1}^{N} x_i^2} + 1.0 \times 10^{-9}) RMS=20⋅log10(N1i=1∑Nxi2+1.0×10−9)
其中, x i x_i xi是音频信号的样本值, N N N 是样本总数。总 RMS 提供了音频信号的整体响度感知。
2.2 最大 RMS(Max RMS)
最大 RMS 是通过将音频信号分成多个窗口,计算每个窗口的 RMS 值,并返回这些值中的最大值。其计算公式为:
Max RMS = max ( 20 ⋅ log 10 ( 1 N ∑ i = 1 N x i 2 + 1.0 × 1 0 − 9 ) ) \text{Max RMS} = \max \left( 20 \cdot \log_{10} \left( \sqrt{\frac{1}{N} \sum_{i=1}^{N} x_i^2} + 1.0 \times 10^{-9} \right) \right) Max RMS=max 20⋅log10 N1i=1∑Nxi2+1.0×10−9
其中:
- x i x_i xi 是窗口内的音频样本值。
- N N N是窗口内样本的总数。
2.3 最小 RMS(Min RMS)
最小 RMS 与最大 RMS 类似,但它返回的是每个窗口中计算出的最小 RMS 值。其计算公式为:
Min RMS = min ( 20 ⋅ log 10 ( 1 N ∑ i = 1 N x i 2 + 1.0 × 1 0 − 9 ) ) \text{Min RMS} = \min \left( 20 \cdot \log_{10} \left( \sqrt{\frac{1}{N} \sum_{i=1}^{N} x_i^2} + 1.0 \times 10^{-9} \right) \right) Min RMS=min 20⋅log10 N1i=1∑Nxi2+1.0×10−9
其中:
- x i x_i xi 是窗口内的音频样本值。
- N N N 是窗口内样本的总数。
2.4 平均 RMS(Avg RMS)
平均 RMS 是所有窗口 RMS 值的平均值,提供了音频信号的整体响度水平。其计算公式为:
Avg RMS = 1 M ∑ j = 1 M ( 20 ⋅ log 10 ( 1 N ∑ i = 1 N x i j 2 + 1.0 × 1 0 − 9 ) ) \text{Avg RMS} = \frac{1}{M} \sum_{j=1}^{M} \left( 20 \cdot \log_{10} \left( \sqrt{\frac{1}{N} \sum_{i=1}^{N} x_{ij}^2} + 1.0 \times 10^{-9} \right) \right) Avg RMS=M1j=1∑M 20⋅log10 N1i=1∑Nxij2+1.0×10−9
其中:
- x i j x_{ij} xij 是第 j j j 个窗口内的音频样本值。
- N N N 是每个窗口内样本的总数。
- M M M 是窗口的总数。
2.5 峰值幅度(Peak Amplitude)
峰值幅度是音频信号中最大绝对值的幅度,通常用于表示信号的瞬时强度。其计算公式为:
Peak = 20 ⋅ log 10 ( max ( ∣ x ∣ ) + 1.0 × 1 0 − 9 ) \text{Peak} = 20 \cdot \log_{10}(\max(|x|) + 1.0 \times 10^{-9}) Peak=20⋅log10(max(∣x∣)+1.0×10−9)
峰值幅度能够快速反映音频信号的瞬时响度,但不一定能准确表示人耳的感知。
3. 听觉结果的一致性
人耳对声音的感知是非线性的,通常对响度变化的感知与实际的物理振幅变化不成正比。使用 RMS 和分贝单位进行计算,可以更好地模拟人耳的感知特性。以下是不同计算方法与听觉结果的一致性分析:
- 总 RMS:提供了整体响度的良好估计,通常与听觉感知一致。
- 最大 RMS:能够捕捉到音频信号中的最强响度部分,适合用于动态范围分析。
- 最小 RMS:有助于识别音频信号中的弱响度部分,适合用于音频修复和增强。
- 平均 RMS:提供了稳定的响度水平,适合用于音频混音和母带处理。
- 峰值幅度:虽然能够快速反映瞬时响度,但由于其瞬时特性,可能与人耳的感知不完全一致。
4. 程序实现
import os
import numpy as np
import librosa
def calculate_total_rms_dbfs(audio_data):rms_level = 20 * np.log10(np.sqrt(np.mean(audio_data ** 2)) + 1.0e-9) # 计算总 RMS 并转换为 dBFSreturn rms_level
def calculate_max_rms_dbfs(audio_data, window_size):rms_values = []for start in range(0, len(audio_data), window_size):end = min(start + window_size, len(audio_data))window = audio_data[start:end]if len(window) > 0:rms = 20 * np.log10(np.sqrt(np.mean(window ** 2)) + 1.0e-9)rms_values.append(rms)return np.max(rms_values) if rms_values else -np.inf # 返回 -inf 如果没有 RMS 值
def calculate_min_rms_dbfs(audio_data, window_size):rms_values = []for start in range(0, len(audio_data), window_size):end = min(start + window_size, len(audio_data))window = audio_data[start:end]if len(window) > 0:rms = 20 * np.log10(np.sqrt(np.mean(window ** 2)) + 1.0e-9)rms_values.append(rms)return np.min(rms_values) if rms_values else -np.inf # 返回 -inf 如果没有 RMS 值
def calculate_avg_rms_dbfs(audio_data, window_size):rms_values = []for start in range(0, len(audio_data), window_size):end = min(start + window_size, len(audio_data))window = audio_data[start:end]if len(window) > 0:rms = 20 * np.log10(np.sqrt(np.mean(window ** 2)) + 1.0e-9)rms_values.append(rms)return np.mean(rms_values) if rms_values else -np.inf # 返回 -inf 如果没有 RMS 值
def calculate_peak_amplitude(audio_data):return 20 * np.log10(np.max(np.abs(audio_data)) + 1.0e-9)
def analyze_audio_file(audio_path, window_duration=0.05):audio_data, sr = librosa.load(audio_path, sr=None)window_size = int(window_duration * sr)total_rms_dbfs = calculate_total_rms_dbfs(audio_data)max_rms_dbfs = calculate_max_rms_dbfs(audio_data, window_size)min_rms_dbfs = calculate_min_rms_dbfs(audio_data, window_size)avg_rms_dbfs = calculate_avg_rms_dbfs(audio_data, window_size)peak_amplitude = calculate_peak_amplitude(audio_data)print(f"File: {audio_path}")print(f"Total RMS (dBFS): {total_rms_dbfs:.2f}")print(f"Max RMS (dBFS): {max_rms_dbfs:.2f}")print(f"Min RMS (dBFS): {min_rms_dbfs:.2f}")print(f"Avg RMS (dBFS): {avg_rms_dbfs:.2f}")print(f"Peak Amplitude(dBFS): {peak_amplitude:.2f}")
if __name__ == "__main__":audio_path = '/Volumes/T9/DATA/构建数据集/SELE/real_echo/0011217_echo.wav'analyze_audio_file(audio_path)

计算结果与Audition一致。
相关文章:
不同音频振幅dBFS计算方法
1. 振幅的基本概念 振幅是描述音频信号强度的一个重要参数。它通常表示为信号的幅度值,幅度越大,声音听起来就越响。为了更好地理解和处理音频信号,通常会将振幅转换为分贝(dB)单位。分贝是一个对数单位,能…...
【17. 电话号码的字母组合 中等】
题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23”…...
数据结构初阶---排序
一、排序相关概念与运用 1.排序相关概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的…...
【从0-1实现一个前端脚手架】
目录 介绍为什么需要脚手架?一个脚手架应该具备哪些功能? 脚手架实现初始化项目相关依赖实现脚手架 发布 介绍 为什么需要脚手架? 脚手架本质就是一个工具,作用是能够让使用者专注于写代码,它可以让我们只用一个命令…...
AI文章管理系统(自动生成图文分发到分站)
最近帮一个网上的朋友做了一套AI文章生成系统。他的需求是这样: 1、做一个服务端转接百度文心一言的生成文章的API接口。 2、服务端能注册用户,用户在服务端注册充值后可以获取一个令牌,这个令牌填写到客户端,客户端就可以根据客…...
【Leetcode 每日一题】3270. 求出数字答案
问题背景 给你三个 正 整数 n u m 1 num_1 num1, n u m 2 num_2 num2 和 n u m 3 num_3 num3。 数字 n u m 1 num_1 num1, n u m 2 num_2 num2 和 n u m 3 num_3 num3 的数字答案 k e y key key 是一个四位数,定义如下&…...
基于单片机的无线气象仪系统设计(论文+源码)
1系统方案设计 如图2.1所示为无线气象仪系统设计框架。系统设计采用STM32单片机作为主控制器,结合DHT11温湿度传感器、光敏传感器、BMP180气压传感器、PR-3000-FS-N01风速传感器实现气象环境的温度、湿度、光照、气压、风速等环境数据的检测,并通过OLED1…...
【数据库】Mysql精简回顾复习
一、概念 数据库(DB):数据存储的仓库数据库管理系统(DBMS):操纵和管理数据库的大型软件SQL:操作关系型数据库的编程语言,是一套标准关系型数据库(RDBMS)&…...
深入理解 HTTP 的 GET、POST 方法与 Request 和 Response
HTTP 协议是构建 Web 应用的基石,GET 和 POST 是其中最常用的请求方法。无论是前端开发、后端开发,还是接口测试,对它们的深入理解都显得尤为重要。在本文中,我们将介绍 GET 和 POST 方法,以及 Request 和 Response 的…...
MySQL 中联合索引相比单索引性能提升在哪?
首先我们要清楚所以也是要占用磁盘空间的,随着表中数据量越来越多,索引的空间也是随之提升的,因而单表不建议定义过多的索引,所以使用联合索引可以在一定程度上可以减少索引的空间占用其次,使用联合索引的情况下&#…...
第34天:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法
时间轴: Java反射相关类图解: 反射: 1、什么是 Java 反射 参考: https://xz.aliyun.com/t/9117 Java 提供了一套反射 API ,该 API 由 Class 类与 java.lang.reflect 类库组成。 该类库包含了 Field 、 Me…...
C++笔记之数据单位与C语言变量类型和范围
C++笔记之数据单位与C语言变量类型和范围 code review! 文章目录 C++笔记之数据单位与C语言变量类型和范围一、数据单位1. 数据单位表:按单位的递增顺序排列2. 关于换算关系的说明3. 一般用法及注意事项4. 扩展内容5. 理解和使用建议二、C 语言变量类型和范围基本数据类型标准…...
算法-拆分数位后四位数字的最小和
力扣题目2160. 拆分数位后四位数字的最小和 - 力扣(LeetCode) 给你一个四位 正 整数 num 。请你使用 num 中的 数位 ,将 num 拆成两个新的整数 new1 和 new2 。new1 和 new2 中可以有 前导 0 ,且 num 中 所有 数位都必须使用。 …...
Python 管理 GitHub Secrets 和 Workflows
在现代软件开发中,自动化配置管理变得越来越重要。本文将介绍如何使用 Python 脚本来管理 GitHub 仓库的 Secrets 和 Workflows,这对于需要频繁更新配置或管理多个仓库的团队来说尤为有用。我们将分三个部分进行讨论:设置 GitHub 权限、创建 GitHub Secret 和创建 GitHub Wo…...
指令的修饰符
指令的修饰符 参考文献: Vue的快速上手 Vue指令上 Vue指令下 Vue指令的综合案例 文章目录 指令的修饰符指令修饰符 结语 博客主页: He guolin-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力&…...
C# 正则表达式完全指南
C# 正则表达式完全指南 C#通过 System.Text.RegularExpressions 命名空间提供强大的正则表达式支持。本指南将详细介绍C#中正则表达式的使用方法、性能优化和最佳实践。 1. 基础知识 1.1 命名空间导入 using System.Text.RegularExpressions;1.2 基本使用 public class Re…...
【笔记整理】记录参加骁龙AIPC开发者技术沙龙的笔记
AIoT 首先了解了一个概念叫AIoT,我的理解就是AI IoT 5G,通过AI的发展使得边缘计算、数据整合和处理变得快捷方便,不仅限于传统的云端数据处理,在边缘的IoT设备上也可以进行智能化打造,通过5G的通信能力扩展可以实现…...
论文解析 | 基于语言模型的自主代理调查
论文 《A Survey on Large Language Model-based Autonomous Agents》 对基于大型语言模型(LLM)的自主智能体(Autonomous Agents)进行了全面调查。随着大型语言模型(如 GPT 系列、BERT、T5 等)的快速发展&a…...
面试加分项:Android Framework AMS 全面概述和知识要点
第一章:AMS 的架构与组件 1.1 AMS 整体架构 在 Android 系统的庞大体系中,AMS(Activity Manager Service)就如同一个中枢神经系统,是整个系统的核心服务之一,对应用的性能和用户体验有着直接且关键的影响 。它的整体架构由 Client 端和 Service 端两大部分组成,这两端相…...
EasyCVR视频汇聚平台如何配置webrtc播放地址?
EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。平台支持多协议接入,能将接入到视频流转码为多格式进行分发,包括RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、W…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...
