melSpectrogram

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

Описание

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

Используйте настройки по умолчанию, чтобы вычислить mel spectrogram для всего аудио файла. Напечатайте количество полосно-пропускающих фильтров в группе фильтров и количество систем координат в спектрограмме 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 spectrogram.

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 spectrogram. Аудио входа является многоканальным сигналом. Если вы звоните 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 spectrogram для каждого канала.

[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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

Спектрограмма Меля, возвращенная как вектор-столбец, матрица или трехмерный массив. Размерности S L -by- M -by- N, где:

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

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

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

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

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

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

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

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

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

Алгоритмы

свернуть все

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

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

Фильтрация банковских Проектов

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

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

расширить все

Изменение поведения в будущем релизе

Ссылки

[1] Рабинер, Лоуренс Р. и Рональд У. Шафер. Теория и приложения цифровой обработки речи. Upper Saddle River, NJ: Pearson, 2010.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

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

.

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

Введенный в R2019a