- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我使用的是声音库Beads(此问题并非专门针对该库)。
在库中有一个WavePlayer
类。它需要一个Buffer
,并通过遍历Buffer
来产生声波。Buffer
只需包装float[]
即可。
例如,这是缓冲区的开头:
0.0 0.0015339801 0.0030679568 0.004601926 0.0061358847 0.007669829 0.009203754 0.010737659 0.012271538 0.0138053885 0.015339206 0.016872987 0.01840673 0.019940428 0.02147408 ...
float
值。
WavePlayer
对其进行迭代会创建平滑的“正弦波”声音。 (此缓冲区实际上是
Buffer
类中的现成的“预设”,即
Buffer.SINE
)。
最佳答案
阅读这篇文章What's the actual data in a WAV file?
声音只是一个曲线。您可以使用整数或浮点数表示此曲线。
有两个重要方面:位深度和采样率。首先让我们讨论一下深度。列表中的每个数字(整数/浮点数)都表示在给定时间点声音曲线的高度。为简单起见,当使用浮点数时,值通常在-1.0至+1.0之间变化,而整数则可能在0至2 ^ 16之间变化。重要的是,这些数字中的每一个都必须存储在内存中的声音文件或音频缓冲区中-分辨率/保真度您选择代表该曲线的每个点都会影响音频质量和最终的声音文件大小。低保真记录每个曲线高度测量可能使用8位信息。当您浏览保真度频谱时,会分别存储16位,24位...来存储每个曲线高度测量值。更多的位等于更大的有效位数或更大范围的整数(16位表示您有2 ^ 16个整数(0到65535)来表示任何给定曲线点的高度)。
现在到第二方面。除了测量曲线高度以外,在捕获/合成声音时,还必须确定测量(采样)曲线高度的频率。典型的CD质量记录(采样)的曲线高度为每秒44100次,因此采样率将为44.1kHz。较低的保真度将减少采样频率,而超保真度将以96kHz或更高的频率采样。因此,曲线高度测量保真度(位深度)与您执行此测量的频率(采样率)的组合共同定义了声音合成/录音的质量
与许多事物一样,这两个属性应该保持平衡……如果更改一个属性,则应更改另一个属性……因此,如果降低采样率,则将减少信息负载,从而降低音频保真度……完成此操作后,您还可以降低位深,而不会进一步降低保真度
关于audio - 怎样用一长串的 float 来表示声波?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25941986/
我是一名优秀的程序员,十分优秀!