Python:对音乐文件进行FFT处理

2024-05-28 23:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对一首歌(wav格式的音频文件,大约3分钟长)执行FFT,我创建了如下,以防万一。

ffmpeg -i "$1" -vn -ab 128k -ar 44100 -y -ac 1 "${1%.webm}.wav"

其中$1是webm文件的名称。

这是用于显示给定文件的FFT的代码:

import numpy as np
import matplotlib.pyplot as plt

# presume file already converted to wav.
file = os.path.join(temp_folder, file_name)

rate, aud_data = scipy.io.wavfile.read(file)

# wav file is mono.
channel_1 = aud_data[:]

fourier = np.fft.fft(channel_1)

plt.figure(1)
plt.plot(fourier)
plt.xlabel('n')
plt.ylabel('amplitude')
plt.show()

问题是,它需要永远。花了很长时间,我甚至不能显示输出,因为我有足够的时间来研究和写这篇文章,它仍然没有完成。

我想文件太长了,因为

print (aud_data.shape)

输出(9218368,),但这看起来像是一个现实世界的问题,所以我希望有一种方法以某种方式获得音频文件的FFT。

我做错什么了?谢谢您。

编辑

这个问题的一个更好的表述是:FFT在音乐处理中有什么好处吗?例如两件的相似性。

正如评论中指出的,我的简单方法太慢了。

谢谢你。


Tags: 文件importfftdataasnpchannelplt

热门问题