Я попытался преобразовать данные PCM из файла WAV и FFT в частотную диаграмму.Вот моя диаграмма. 0,00 с 512 отсчетов сэмплов 3,15 с 512 отсчетов сэмплов
Звуковой файл почти бесшумный и имеет некоторый стук, начинающийся с 3 с.
Я заметил около 0 значение очень высокое.Но как это может быть!Еще один странный момент: «значение равно 0, когда частота превышает примерно 16000».
Вот мой код:
import soundfile as sf
import numpy as np
import math
import matplotlib.pyplot as plt
_audio_path = 'source_normal.wav'
def plot_data(pcm_data, samplerate, current_time):
x_axis = np.arange(0, len(pcm_data) - 1) / len(pcm_data) * samplerate
complex_data = [x+0j for x in pcm_data]
result = np.fft.fft(complex_data)
length = len(pcm_data) // 2
amplitudes = [math.sqrt(x.imag * x.imag + x.real * x.real) for x in result[:length]]
plt.plot(x_axis[:length], amplitudes)
plt.title('{}s sample count: {}'.format(current_time, len(pcm_data)))
plt.xlabel('{}Hz'.format(samplerate))
plt.show()
def baz():
data, samplerate = sf.read(_audio_path, dtype='int16')
window = 512
total_number_of_data = len(data)
current_index = 0 # 144000
while current_index < total_number_of_data:
d = data[current_index:current_index+window]
current_time = current_index / samplerate
print('current time: {}'.format(current_index / samplerate))
plot_data(d, samplerate, current_time)
current_index += window
if __name__ == '__main__':
baz()
Я не знаком с DSP и никогда не пробовал раньше.Поэтому я думаю, что в моем коде есть какая-то ошибка, пожалуйста, помогите, спасибо.
вот мой звуковой файл звуковой файл