Я пытаюсь построить правильную спектрограмму для звуковых данных в Qt. И теперь я могу построить красивую спектрограмму с длиной окна БПФ 1024 и перекрывающейся длиной данных 976. Но обычно для отображения спектрограммы, такой как 256, обычно используется небольшая длина окна, и это даст мне лучшее разрешение по времени. Но когда я уменьшаю длину окна до 256, я получаю пустые строки в спектрограмме. Я знаю, что уменьшение длины окна вызывает низкочастотное разрешение на БПФ, но почему в спектрограммах других программ нет пустых строк. Я делаю что-то не так или это нормально?
Вот основные шаги, которые я использую для получения спектрограммы:
-Получить данные из звукового файла.
-FFT на первом окне (Hanning).
-конвертировать сложный вывод БПФ в массив величин (величина = sqrt (re ^ 2 + im ^ 2))
-конвертировать величину в логарифмическую шкалу (дБ) magnitude_dB = 20 * log10 (величина)
-планируйте первый столбец спектрограммы, масштабируя данные спектра, чтобы зафиксировать его в столбце
-двиньте окно 48 образцов, для следующей операции ..
Вы можете увидеть проблему на следующих снимках экрана:
длина окна 1024
длина окна 256
(Кстати, моя цель — создать программу, которая распознает фонемы по речевым звуковым данным. Использование библиотеки FFTW)
Я действительно ценю любую помощь, которую вы можете оказать.
Более низкое разрешение более короткой длины БПФ также подразумевает более широкую полосу пропускания для каждого результирующего блока БПФ. Таким образом, графику спектрографа нужны более толстые линии строк, чтобы покрыть более широкую полосу пропускания каждой строки, чтобы заполнить промежутки между линиями на вашем графике.
Других решений пока нет …