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)

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

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

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

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

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

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

Входные параметры

свернуть все

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

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

Введите частоту дискретизации в Гц в виде положительной скалярной величины.

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

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

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

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

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

Типы данных: 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

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

свернуть все

Спектрограмма Мэла, возвращенная как вектор-столбец, матрица или трехмерный массив. Размерности 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].

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

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

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

Ссылки

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

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

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

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

Введенный в R2019a