gpt4 book ai didi

python - 返回Numpys FFT数据并在音频文件中查找每秒的幅度和频率

转载 作者:行者123 更新时间:2023-12-02 23:26:54 25 4
gpt4 key购买 nike

在过去的几天里,我一直在学习如何在python中为一个音频可视化项目读取wav文件。该项目进展顺利,但是我对读取wavfile返回的数据以及np.fft.fft()的复数数组的返回有一些疑问

那么,从复数开始代表什么呢?真实和虚构的部分?

我的真实问题在这里:
我还被告知,频率是复数的索引位置,这是真的吗?

例如,在加载音频文件并通过FFT运行它之后,我可以得到长度为10591232的arrray,这是一个很大的数字,我的思维过程是将其取为该数字并将其除以音频采样率,以获得一个每秒使用的频率列表

这个想法错了吗?如果是这样,应该怎么做?我还将在下面发布我的代码,以表达我的想法,对不起,我一直在搜索无数StackOverflow帖子时遇到这么多加载的问题,并得到了很多不同的答案。再次感谢您的阅读!

sample_rate, data = wavfile.read(sound_file)

channel_num = data.shape[1]
audio_length = data.shape[0] / sample_rate
time = np.linspace(0., audio_length, data.shape[0])

frequencies = np.fft.fft(time)
frequencies_per_second = np.array_split(frequencies, len(frequencies) / sample_rate)

pprint(len(frequencies_per_second[1]))
print(len(frequencies))

最佳答案

之所以使用complex number,是因为这是一种数学上优雅的方式,可以表示每个DFT结果的幅度和相位。

FFT结果 vector 的bin或元素索引与变换基础 vector 的频率相关。通常,对于FFT结果 vector 的前半部分:

basis_vector_frequency = index * sample_rate / FFT_length

然而,由于开窗效应,每个变换基 vector 的频率可能或可能不完全匹配输入信号的某些组成部分的频率。

关于python - 返回Numpys FFT数据并在音频文件中查找每秒的幅度和频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61447852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com