所需器材:PC,音频输出设备(耳机或者音响),含有 C 计权的分贝计

例如,需要产生 30dB ~ 80dB SPL 的 1kHz 正弦波

一、生成测试文件

先产生一个频率为 1kHz、最大幅值为 1 的正弦波 .wav 文件;

二、音量校准

播放该文件,然后增大或者减小系统音量,期间使用分贝计 C 计权不断测试,使当前音频输出设备实际产生的分贝值稳定在 80dB(所需最大音量);

三、标定验证

再产生幅值为频率为 1kHz、最大幅值为 0.1 的正弦波,实际分贝值为 60 dB,则验证通过;

四、生成任意分贝音频

此时产生的实际分贝数 n 和 .wav 文件中的最大幅值 a 的转换公式为:

a=10−(80−n)20a=10^{-\frac{(80 - n)}{20}}a=10−20(80−n)​

福利:送上自己制作的正弦音测试音频,正弦频率为 1kHz,采样率为 44.1 kHz,时长为 1 分钟,带有不同程度衰减;其中 test_1kHz_0dB.wav 最大幅值为 1,用于音量校准,test_1kHz_-20dB.wav 最大幅值为 0.1,用于标定验证。

链接:https://pan.baidu.com/s/1I66rQWj_bm9AdcyFTKViJQ
提取码:2333

Q & A

(1)为什么要先产生幅值为 1 的正弦波进行标定?

数字幅值为 1 时为音频文件允许的最大电平,更大则 .wav 文件不予记录,因此这时应该让系统达到所需的最大音量。

(2)为什么幅值为 0.1 时实际音量恰好减小 20 dB?

想要输出音量降低 20 分贝,则输出能量需要降低 100 倍,对应 .wav 文件中的数字幅值就要降低 10 倍。

(3)为何使用分贝计 C 计权?

分贝计的 A 计权参考了人耳频响曲线进行不同频段声音加权,并不利于系统标定,C 计权则更加平滑。

https://www.quora.com/Why-is-the-summing-op-amp-called-a-weighted-summing-amplifier

(4)理论上存不存在直接推导 .wav 数字幅值到 dB 的转换公式?

没有,因为从 .wav 文件出发,声音经过了系统音量控制、数模转换、放大电路、换能器的一系列处理,之后还会在空气中传播衰减,这个过程无法通过经验公式计算实现。

(5)一个频率标定好后,能不能直接用于其他频率的声音?

只有监听耳机或者监听音响可以,因为无论是娱乐用的耳机或者音响,还是价格昂贵的HIFI耳机,都会考虑人的喜好进行调音,从而使其对不同频率的响应衰减程度变得不均一,也就是所谓的频率响应曲线并不平整,而监听耳机或监听音响则为了方便统一标定,尽可能做到了一定频率范围内的平直响应,譬如 YAMAHA 的 MSP 系列(下图左为 MSP7),或者 GENELIC 的 80 系列(下图右为 8050B),如果要求精度较高则仍需要再次标定。

(6)复杂的声音如何标定?

如果声音有多个频率成分,那么只需要在第一步产生文件时,让数字幅值的最大值和最小值分别对应 1 和 -1 即可,随后的校验和生成步骤都同样适配,这是因为 C 计权时所有频率成分等权重,所有频率成分单独衰减 a 则等效于时域信号衰减 a ,因此转换公式仍然成立。

如何让电脑产生和输出特定分贝值的声音相关推荐

  1. 生成特定分贝的音频波形

    生成特定分贝的音频波形 https://www.cnblogs.com/wangguchangqing/p/6197590.html 在处理音频的时候的有时候需要特定分贝(如-10dB)的音频波形,本 ...

  2. java编程300例:4.输出特定的表情符号

    package com.haoran.test; /** * * @author haora *描述:输出特定的表情符号 * 生命是彩色的! * */ public class test4 { pub ...

  3. 信息学奥赛一本通(1110:查找特定的值)

    1110:查找特定的值 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 40528     通过数: 19953 [题目描述] 在一个序列(下标从1开始)中查找一个 ...

  4. android pcm 音量_Android中实时获取音量分贝值详解

    基础知识 度量声音强度,大家最熟悉的单位就是分贝(decibel,缩写为dB).这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压(20微帕,人类所能听到的最小声压).因 ...

  5. php读音量大小,Android_Android中实时获取音量分贝值详解,基础知识 度量声音强度,大 - phpStudy...

    Android中实时获取音量分贝值详解 基础知识 度量声音强度,大家最熟悉的单位就是分贝(decibel,缩写为dB).这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压 ...

  6. android 录音获取分贝变化,Android录音时获取分贝值的方法代码实例

    public class MediaRecorderDemo { private final String TAG = "MediaRecord"; private MediaRe ...

  7. 制作一个小工具:自动生成“将特定枚举值转换成字符串的C++函数”的代码

    需求 假设我有一种枚举类型: enum fruit_type {apple,banana,orange, }; 我时常会遇到需要将枚举值转换为字符串的情况,即我需要如下的函数: const char* ...

  8. 使用Arduino读取噪声传感器分贝值

    之前一直试图用树莓派读取噪声传感器的数据,然而我用的传感器只有模拟输出和电平输出,也就是说要是想检测噪声具体分贝值就只能使用AD转换模块,但是由于对AD转换模块的认识不深,所以遇到了一些困难,虽然那个 ...

  9. python 实现可以一直输入内容直到某个特定的值退出循环的操作

    使用while 循环这里记录 方法1 while True:msg = input("请输入内容 : ").replace(" ", "") ...

  10. R语言使用lm构建线性回归模型、并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型预测中系统误差的一个例子 、自定义函数计算R方指标和均方根误差RMSE

    R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型预测中系统误差的一个例子 .自定义函数计算R方指标和均方根误差RMSE 目 ...

最新文章

  1. Genomes correction and assembling - Present methods and tools
  2. gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架
  3. 京东的商品搜索功能是如何实现的_【干货小知识】京东商家如何优化搜索流量?...
  4. CVE(Common Vulnerabilities and Exposures通用漏洞披露)笔记
  5. C++11新特性之十:enable_shared_from_this
  6. linux下隐藏root进程,宝塔面板隐藏彩蛋 – btkill.py:Linux异常进程专杀
  7. [胡思乱想]网络游戏与社会资源公平分配
  8. C++学习008-delete与delete[]的差别
  9. 基于直流电机调速平台的PID参数整定心得
  10. 双卡双待的iPhone终于要来了?中国特供了解一下!
  11. 企业使用Windows Sysprep工具来封装Win10、Win11操作系统(最新最全)
  12. 借助栈实现单链表的原地逆置
  13. EasyUI学习笔记7:MIS开发利器_ datagrid插件(中)
  14. 用python获取指定路径下的所有目录路径和文件路径
  15. Firebase埋点
  16. h5物体拖动_【点我解锁】11种网易爆款H5交互手势及案例
  17. 关于业财税一体化的思考
  18. [Luogu P2057] 善意的投票
  19. 【电源设计】12电源芯片详细选型攻略
  20. 计算机毕设(附源码)JAVA-SSM教务排课管理系统

热门文章

  1. 浅谈利用强化学习A3C玩转超级玛丽奥
  2. 机器学习----深刻理解高斯过程回归
  3. jmeter使用.jmx脚本
  4. oracle10g 杨忠民,开题报告 基于J2EE的DRP系统设计
  5. 【vue手写图片预览组件】在vue2.0项目中手写图片预览组件,旋转、放大、滚动、下载等功能
  6. 实对称矩阵可对角化的证明
  7. python 让电脑发出声音代码,用python录制输出声音
  8. 数据产品-广告投放数据打通
  9. 西门子1200plc与施耐德变频器modbus通讯程序
  10. 玲珑3D与几何画板的比较