我正在使用scipy的wavfile库读取wav文件。
rate, data = scipy.io.wavfile.read(filename)
这将返回给定wav文件名的速率和RAW数据。
我需要对数据数组进行什么转换才能从原始数据到频率?
我了解使用FFT可以转换到频域,但我想转换到时域。
非常感谢任何帮助! :)
rate, data = scipy.io.wavfile.read(filename)
这将返回给定wav文件名的速率和RAW数据。
我需要对数据数组进行什么转换才能从原始数据到频率?
我了解使用FFT可以转换到频域,但我想转换到时域。
非常感谢任何帮助! :)
def spectral_statistics(y: np.ndarray, fs: int) -> float:
"""
Compute mean frequency
:param y: 1-d signal
:param fs: sampling frequency [Hz]
:return: mean frequency
"""
spec = np.abs(np.fft.rfft(y))
freq = np.fft.rfftfreq(len(y), d=1/fs)
amp = spec / spec.sum()
mean = (freq * amp).sum()
return mean
正如您所说,您可以使用scipy
读取波形。如果您想获得音频块的频率,只需将数组分成几部分,并将每个部分分别传递给函数。