Python:从 Python 中的 wav 文件计算随时间变化的频率?

Python: Calculating frequency over time from a wav file in Python?

我正在使用 scipy 的 wavfile 库来读取 wavfile。

rate, data = scipy.io.wavfile.read(filename)

这将 return 给定 wav 文件名的速率和 RAW 数据。

我需要对数据数组进行哪些转换才能将 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可以读一波。如果您想获得音频块的频率,只需将您的数组分成几部分并将每个单独传递给函数。