给定指定的分贝级别,如何在 R 中创建波浪声音?

Posted

技术标签:

【中文标题】给定指定的分贝级别,如何在 R 中创建波浪声音?【英文标题】:How to create a wave sound, in R, given a specified deciBel level? 【发布时间】:2011-12-02 12:38:46 【问题描述】:

我 R,感谢库 sound,我们能够创建正弦波:

s1 <- Sine(650, 1, 44100, 16, 2)

绘制波形我们得到这样的图像:

plot(s1[1:100])

波形在区间 [-1, +1] 内移动。如果我播放它,它对应于多少分贝?

如何生成波声(参数相同),指定分贝级别(即波声,频率650Hz,持续时间1秒,采样率44100,16位,2通道,55dB)?

提前致谢!

【问题讨论】:

这不取决于播放器吗?我不是音频专家,但如果媒体播放器(或其他)或您的 PC 中的音量控制发生了变化,那么分贝也会发生变化。 【参考方案1】:

所以我猜你想改变幅度对吧?没有直接的方法可以按照您想要的方式更改sound 中的幅度,因为它是非常基本的包。尝试tuneRseewave 包以获得更高级的选项和控制(例如seewave 中的afilter 可能是一个很好的解决方案,但不幸的是我无法在R 2.14 中运行它 - 不兼容)。

您可以做的一个简单的方法是使用normalize 来改变音量,但它不适用于sound 包中的“默认”幅度。例如,如果你产生这个正弦波

 s1 <- .6*Sine(650, 1, 44100, 16, 2)  

你可以把它标准化

 s2 <- normalize(s1) 

您可以听到(并在图上看到)s2 的声音更大。

【讨论】:

那么范围 [-1, +1] 是我的音调幅度吗?我是否需要将 55 dB 转换为幅度,才能找到一个常数,例如您示例中的 0.6?我是否还需要考虑耳机的特性,以确保产生的声音恰好是 55dB? Tommaso -- 你需要学习很多关于音响和音频设备的知识。这不是 R 问题,甚至不是软件问题。一方面,“dB”不是一个绝对值:它是一个相对值。例如,谷歌“dBa”。 @CarlWitthoft 你说得对,根据定义,分贝是一个相对值。我用谷歌搜索了一些东西,但没有找到任何答案:我需要考虑哪些参数,才能在我的耳机上创建一种听起来像 55dB 音调的声音?感谢您的帮助。

以上是关于给定指定的分贝级别,如何在 R 中创建波浪声音?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vuejs 中创建动画“波浪”效果?

转载:声音分贝的概念,dBSPL.dBFS

耳朵听力检测dB是分贝吗

如何在 R 中创建显示预测模型、数据和残差的图表

如何在 Eclipse 中创建区域,如 Visual Studio

我如何找到当前的分贝级别并将其设置为变量?