我有一个音频信号,它有不同频率的音调,这些音调是通过静音分开的。我必须提取这些音调然后使用fft找到频率并转换为音调的赫兹并将它们保存在一个数组中。
我想使用scipy,numpy进行fft计算。以下是我正在尝试的代码。不确定我是否走在正确的道路上。
任何有关如何进行的建议都会有所帮助,或者您的任何其他想法都会受到赞赏。
import wave
import struct
import numpy as np
sound_file = wave.open('Audio_1.wav', 'r') ## Open Audio file
file_length = sound_file.getnframes() ## Find number of frames
print file_length
sound = np.zeros(file_length)
for i in range(file_length):
data = sound_file.readframes(1)
data = struct.unpack("<h", data)
sound[i] = int(data[0])
sound = np.divide(sound, float(2**15))
print sound
Ap = np.pad(sound, (0,int(np.ceil(len(sound) / 11874.)) * 11874 - len(sound)), 'constant', constant_values=0)
Apr = Ap.reshape((len(Ap) // 11874, 11874))
print Apr
Apr.shape
print Apr.shape
array1=(Apr ** 2).sum(axis=1)
print array1
#print len(array1)
threshold =4700
result= np.array(filter(lambda x: x>= threshold, array1))
print result
print len(result)
print np.where(array1>4700)
#print array1.shape
#print result.shape
#print sound.shape
#print Apr.shape
#fftoutput=np.fft.fft(result)
#print fftoutput
#print np.argsort(fftoutput)