给定指定的分贝级别,如何在 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
中的幅度,因为它是非常基本的包。尝试tuneR
或seewave
包以获得更高级的选项和控制(例如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 中创建波浪声音?的主要内容,如果未能解决你的问题,请参考以下文章