繁体   English   中英

Python:从Python中的wav文件计算一段时间的频率?

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

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

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

这将返回给定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阅读wave。 如果您想获得音频块的频率,只需将阵列分成几部分并分别传递给该功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM