Имеется wav файл. Из него я получаю байтовый массив, затем получаю float64 массив сэмплов и передаю его ДПФ.
Использую библиотеку github.com/mjibson/go-dsp/fft.
func main() {
file, err := os.ReadFile("/home/aleksey/temp/ideal/7.wav_8k_stereo_s16_128kb.wav")
if err != nil {
log.Fatal(err)
}
rr := bytes.NewReader(file)
wav, err := wavdsp.New(rr)
if err != nil {
log.Fatal(err)
}
wavTemp, _ := wav.ReadFloats(wav.Samples)
wavResult := make([]float64, 0)
for _, v := range wavTemp {
wavResult = append(wavResult, float64(v))
}
fftWindowSize := 1024
complexArray := make([]complex128, 0)
blocksCount := len(wavResult) / fftWindowSize
for i := 0; i < blocksCount; i++ {
complexArray = fft.FFTReal(wavResult[i*fftWindowSize : i*fftWindowSize+fftWindowSize])
}
В массиве complexArray находятся комплексные числа с действительной и мнимой часть float64.
Пример элемента массива: (512.5040206313133+0i) (0.5936806295286904-0.01702782107152339i)
1) Я правильно понимаю что это представление частоты и амплитуды первого сэмпла?
Мне необходимо в дальнейшем получить аудиоотпечаток из этого массива, но текущий complexArray я так понимаю не подходит, его необходимо дополнительно обработать.
2) Собственно вопрос как обработать каждый элемент массива, чтобы получить более грубые данные о каждом сэмпле?