exponenta event banner

melSpectrogram

Спектрограмма Мэла

Описание

пример

S = melSpectrogram(audioIn,fs) возвращает mel-спектрограмму звукового входа с частотой дискретизации fs. Функция обрабатывает столбцы входных данных как отдельные каналы.

пример

S = melSpectrogram(audioIn,fs,Name,Value) указывает параметры, использующие один или несколько Name,Value аргументы пары.

пример

[S,F,T] = melSpectrogram(___) возвращает центральные частоты полос в Гц и местоположение каждого окна данных в секундах. Местоположение соответствует центру каждого окна. Этот выходной синтаксис можно использовать с любым из предыдущих входных синтаксисов.

пример

melSpectrogram(___) строит график спектрограммы на поверхности на текущем рисунке.

Примеры

свернуть все

Используйте настройки по умолчанию для вычисления спектрограммы mel для всего аудиофайла. Распечатайте количество полосовых фильтров в банке фильтров и количество кадров в спектрограмме mel.

[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');

S = melSpectrogram(audioIn,fs);

[numBands,numFrames] = size(S);
fprintf("Number of bandpass filters in filterbank: %d\n",numBands)
Number of bandpass filters in filterbank: 32
fprintf("Number of frames in spectrogram: %d\n",numFrames)
Number of frames in spectrogram: 1551

Постройте график спектрограммы mel.

melSpectrogram(audioIn,fs)

Figure contains an axes. The axes contains an object of type image.

Вычислите спектры mel 2048-точечных периодических окон Ганна с 1024-точечным перекрытием. Преобразование в частотную область с помощью 4096-точечного БПФ. Пропускайте представление в частотной области через 64 полуперекрывающихся треугольных полосовых фильтра, которые охватывают диапазон от 62,5 Гц до 8 кГц.

[audioIn,fs] = audioread('FunkyDrums-44p1-stereo-25secs.mp3');

S = melSpectrogram(audioIn,fs, ...
                   'Window',hann(2048,'periodic'), ...
                   'OverlapLength',1024, ...
                   'FFTLength',4096, ...
                   'NumBands',64, ...
                   'FrequencyRange',[62.5,8e3]);

Звонить melSpectrogram опять же, на этот раз без выходных аргументов, чтобы можно было визуализировать спектрограмму mel. Входной звук является многоканальным сигналом. При звонке melSpectrogram с многоканальным входом и без выходных аргументов строится только первый канал.

melSpectrogram(audioIn,fs, ...
               'Window',hann(2048,'periodic'), ...
               'OverlapLength',1024, ...
               'FFTLength',4096, ...
               'NumBands',64, ...
               'FrequencyRange',[62.5,8e3])

Figure contains an axes. The axes contains an object of type image.

melSpectrogram применяет банк фильтров частотной области к звуковым сигналам, которые являются окнами во времени. Можно получить центральные частоты фильтров и моменты времени, соответствующие окнам анализа, как второй и третий выходные аргументы из melSpectrogram.

Получить mel спектрограмму, фильтровать центральные частоты банка и время окна анализа многоканального аудиосигнала. Используйте центральные частоты и моменты времени, чтобы построить график mel-спектрограммы для каждого канала.

[audioIn,fs] = audioread('AudioArray-16-16-4channels-20secs.wav');

[S,cF,t] = melSpectrogram(audioIn,fs);

S = 10*log10(S+eps); % Convert to dB for plotting

for i = 1:size(S,3)
    figure(i)
    surf(t,cF,S(:,:,i),'EdgeColor','none');
    xlabel('Time (s)')
    ylabel('Frequency (Hz)')
    view([0,90])
    title(sprintf('Channel %d',i))
    axis([t(1) t(end) cF(1) cF(end)])
end

Figure contains an axes. The axes with title Channel 1 contains an object of type surface.

Figure contains an axes. The axes with title Channel 2 contains an object of type surface.

Figure contains an axes. The axes with title Channel 3 contains an object of type surface.

Figure contains an axes. The axes with title Channel 4 contains an object of type surface.

Входные аргументы

свернуть все

Звуковой вход, заданный как вектор столбца или матрица. Если указано как матрица, функция обрабатывает столбцы как независимые аудиоканалы.

Типы данных: single | double

Частота входных выборок в Гц, заданная как положительный скаляр.

Типы данных: single | double

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'WindowLength',1024

Окно, примененное во временной области, указанное как разделенная запятыми пара, состоящая из 'Window' и реальный вектор. Число элементов в векторе должно находиться в диапазоне [1,size(audioIn,1)]. Число элементов в векторе также должно быть больше OverlapLength.

Типы данных: single | double

Длина перекрытия окна анализа в выборках, указанная как разделенная запятыми пара, состоящая из 'OverlapLength' и целое число в диапазоне [0, (WindowLength - 1)].

Типы данных: single | double

Количество точек, используемых для вычисления DFT, указанных как разделенная запятыми пара, состоящая из 'FFTLength' и положительное целое число, большее или равное WindowLength. Если не указано, FFTLength по умолчанию: WindowLength.

Типы данных: single | double

Количество полосовых фильтров, указанных как разделенная запятыми пара, состоящая из 'NumBands' и положительное целое число.

Типы данных: single | double

Диапазон частот, по которому вычисляется спектрограмма mel в Гц, определяемый как разделенная запятыми пара, состоящая из: 'FrequencyRange' и двухэлементный вектор строк монотонно возрастающих значений в диапазоне [0, fs/2].

Типы данных: single | double

Тип спектрограммы mel, определяемый как разделенная запятыми пара, состоящая из 'SpectrumType' и 'power' или 'magnitude'.

Типы данных: char | string

Применить нормализацию окна, заданную как разделенная запятыми пара, состоящая из 'WindowNormalization' и true или false. Когда WindowNormalization имеет значение true, мощность (или величина) в спектрограмме mel нормализуется для удаления мощности (или величины) временной области Window.

Типы данных: char | string

Тип нормализации банка фильтров, указанный как разделенная запятыми пара, состоящая из 'FilterBankNormalization' и 'bandwidth', 'area', или 'none'.

Типы данных: char | string

Выходные аргументы

свернуть все

Mel-спектрограмма, возвращаемая в виде вектора столбца, матрицы или массива 3-D. Размеры S являются L-by-M-by-N, где:

  • L - количество частотных ячеек в каждом спектре mel. NumBands и fs определить Л.

  • M - количество кадров, на которые разделен звуковой сигнал. size(audioIn,1), WindowLength, и OverlapLength определить М.

  • N - количество каналов, такое, что N = size(audioIn,2).

Конечные одиночные размеры удаляются из выходных данных S.

Типы данных: single | double

Центральные частоты полосовых фильтров в Гц, возвращаемые в виде вектора строки длиной size(S,1).

Типы данных: single | double

Местоположение каждого окна анализа звука в секундах, возвращаемое как длина вектора строки size(S,2). Местоположение соответствует центру каждого окна.

Типы данных: single | double

Алгоритмы

свернуть все

melSpectrogram функция следует общему алгоритму для вычисления спектрограммы mel, как описано в [1].

В этом алгоритме вход звука сначала буферизуется в кадры numel(Window) количество выборок. Кадры перекрываются OverlapLength количество выборок. Указанное Window применяется к каждому кадру, а затем кадр преобразуется в представление частотной области с FFTLength количество точек. Представление в частотной области может быть либо величиной, либо мощностью, определяемой SpectrumType. Если WindowNormalization имеет значение trueспектр нормализуется окном. Каждый кадр представления частотной области проходит через набор фильтров mel. Спектральные значения, выводимые из набора фильтров, суммируются, и затем каналы объединяются так, что каждый кадр преобразуется в NumBands- вектор столбца элемента.

Конструкция банка фильтров

Набор фильтров mel выполнен в виде половинно перекрывающихся треугольных фильтров, равноудаленных по шкале mel. NumBands управляет количеством полосовых фильтров. FrequencyRange управляет краями полосы первого и последнего фильтров в наборе фильтров mel. FilterBankNormalization определяет тип нормализации, применяемой к отдельным полосам данных.

Вопросы совместимости

развернуть все

Изменение поведения в будущем выпуске

Ссылки

[1] Рабинер, Лоуренс Р. и Рональд В. Шефер. Теория и применение цифровой обработки речи. Река Верхнее Седло, Нью-Джерси: Пирсон, 2010.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

Создание кода графического процессора
Создание кода CUDA ® для графических процессоров NVIDIA ® с помощью Coder™ графических процессоров

.

Массивы графических процессоров
Ускорьте выполнение кода с помощью графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Представлен в R2019a