我正在尝试对一首歌(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在音乐处理中有什么好处吗?例如两件的相似性。
正如评论中指出的,我的简单方法太慢了。
谢谢你。
目前没有回答
相关问题 更多 >
编程相关推荐