melSpectrogram

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

Описание

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

Используйте настройки по умолчанию, чтобы вычислить 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 спектры периодических окон Hann с 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, размер (audioIn,1)]. Число элементов в векторе должно также быть больше OverlapLength.

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

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

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

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

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

Количество mel полосовых фильтров в виде разделенной запятой пары, состоящей из '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'область, или 'none'.

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

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

свернуть все

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

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

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

  • N является количеством каналов, таким образом что N = размер (audioIn,2).

Запаздывающие одноэлементные размерности удалены из выхода S.

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

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

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

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

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

Алгоритмы

свернуть все

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

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

Проект набора фильтров

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

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

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

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

Ссылки

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

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

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

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

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

Введенный в R2019a