求解 WAV 文件中的幅度和频率
本文关键字:频率 WAV 文件 求解 | 更新日期: 2023-09-27 18:34:26
我在声音设计论坛上也问过这个问题,但问题是计算机科学/数学的,所以它可能实际上属于这个论坛:
因此,通过读取文件中的二进制文件,我能够成功找到有关 WAV 文件的所有信息,除了大罪函数的振幅和频率(赫兹((不幸的是,这正是我正在寻找的(。只是为了验证我在说什么,该文件仅使用以下公式生成一个波:
F(s( = A * sin(T * s(
其中 s 是当前样本,A 是振幅,T 是周期。现在 T(周期(的等式是:
T = (2π * Hz(/(α * ω(
其中 Hz 是以赫兹为单位的频率,α 是每秒采样数,ω 是通道数。
现在我知道要求解振幅,我可以简单地找到 F(s( 的值,其中
s = (π/2(/T
因为这样正弦函数的值将是 1,最终值将等同于 A。问题是要除以 T,我必须知道赫兹(或赫兹(。
有什么方法可以读取 WAV 文件以从数据中发现赫兹,假设该文件只包含一个波。
只是为了澄清一些术语,您正在寻找的属性是频率,频率单位是赫兹(每秒一次(。按照惯例,典型的 A 音符的频率为 440 Hz。
实际上,你弄错了函数。现实中的正弦波的形式是F(s) = A * sin(2*pi*s/T + c)
- 你不知道它是什么时候开始的,所以你在那里得到一个常数c。另外,您需要除以 T,而不是乘以。
获得振幅实际上相当容易。该正弦波具有一系列的波峰和波谷。求出每个峰值(高于两个邻居(和每个谷值(更低(,计算平均峰值和平均谷值,振幅是两者之差的两倍。很简单。周期T可以通过计算从峰值到峰值以及从谷到谷的平均距离来估计。
有一点你需要小心。如果有轻微的噪音,您可能会在峰值附近出现轻微凹痕。而不是14 17 18 17 14
你可能会得到14 17 16 17 14
.那16不是山谷。一旦你对真实的峰值和谷值有了很好的估计,就扔掉所有扭曲的峰值。
问题不在于"什么频率? 如果你的函数不是一个简单的三角函数,它将是频率的组合,每个频率都有自己的振幅。
正确的方法是使用有限傅里叶变换进行数字信号处理。 你有很多挖掘工作要做。
如果您只想假设单个三角函数,则文件中只有 2 个(幅度和频率(或 3 个自由度(幅度、频率和相位角(和 N 个时间点。 这意味着最小二乘拟合假设为正弦或余弦函数。