vggishPreprocess

Предварительно обработайте аудио для извлечения признаков VGGish

    Описание

    пример

    features = vggishPreprocess(audioIn,fs) генерирует mel спектрограммы от audioIn это может питаться предварительно обученную сеть VGGish.

    features = vggishPreprocess(audioIn,fs,'OverlapPercentage',OP) задает процент перекрытия между последовательными аудио системами координат.

    Например, vggishPreprocess(audioIn,fs,'OverlapPercentage',75) применяется 75%-е перекрытие между последовательными системами координат раньше генерировало спектрограммы.

    Примеры

    свернуть все

    Загрузите и разархивируйте модель Audio Toolbox™ для VGGish.

    Введите vggish в Командном окне. Если модель Audio Toolbox для VGGish не установлена, то функция обеспечивает ссылку на местоположение сетевых весов. Чтобы загрузить модель, щелкните по ссылке. Разархивируйте файл к местоположению на пути MATLAB.

    В качестве альтернативы выполните эти команды, чтобы загрузить и разархивировать модель VGGish к вашей временной директории.

    downloadFolder = fullfile(tempdir,'VGGishDownload');
    loc = websave(downloadFolder,'https://ssd.mathworks.com/supportfiles/audio/vggish.zip');
    VGGishLocation = tempdir;
    unzip(loc,VGGishLocation)
    addpath(fullfile(VGGishLocation,'vggish'))

    Проверяйте, что установка успешна путем ввода vggish в Командном окне. Если сеть установлена, то функция возвращает SeriesNetwork Объект (Deep Learning Toolbox).

    vggish
    ans = 
      SeriesNetwork with properties:
    
             Layers: [24×1 nnet.cnn.layer.Layer]
         InputNames: {'InputBatch'}
        OutputNames: {'regressionoutput'}
    
    

    Загрузите предварительно обученную сверточную нейронную сеть VGGish и исследуйте слои и классы.

    Используйте vggish загружать предварительно обученную сеть VGGish. Выход net SeriesNetwork Объект (Deep Learning Toolbox).

    net = vggish
    net = 
      SeriesNetwork with properties:
    
             Layers: [24×1 nnet.cnn.layer.Layer]
         InputNames: {'InputBatch'}
        OutputNames: {'regressionoutput'}
    
    

    Просмотрите сетевую архитектуру с помощью Layers свойство. Сеть имеет 24 слоя. Существует девять слоев с learnable весами, из которых шесть сверточные слои, и три полносвязные слоя.

    net.Layers
    ans = 
      24×1 Layer array with layers:
    
         1   'InputBatch'         Image Input         96×64×1 images
         2   'conv1'              Convolution         64 3×3×1 convolutions with stride [1  1] and padding 'same'
         3   'relu'               ReLU                ReLU
         4   'pool1'              Max Pooling         2×2 max pooling with stride [2  2] and padding 'same'
         5   'conv2'              Convolution         128 3×3×64 convolutions with stride [1  1] and padding 'same'
         6   'relu2'              ReLU                ReLU
         7   'pool2'              Max Pooling         2×2 max pooling with stride [2  2] and padding 'same'
         8   'conv3_1'            Convolution         256 3×3×128 convolutions with stride [1  1] and padding 'same'
         9   'relu3_1'            ReLU                ReLU
        10   'conv3_2'            Convolution         256 3×3×256 convolutions with stride [1  1] and padding 'same'
        11   'relu3_2'            ReLU                ReLU
        12   'pool3'              Max Pooling         2×2 max pooling with stride [2  2] and padding 'same'
        13   'conv4_1'            Convolution         512 3×3×256 convolutions with stride [1  1] and padding 'same'
        14   'relu4_1'            ReLU                ReLU
        15   'conv4_2'            Convolution         512 3×3×512 convolutions with stride [1  1] and padding 'same'
        16   'relu4_2'            ReLU                ReLU
        17   'pool4'              Max Pooling         2×2 max pooling with stride [2  2] and padding 'same'
        18   'fc1_1'              Fully Connected     4096 fully connected layer
        19   'relu5_1'            ReLU                ReLU
        20   'fc1_2'              Fully Connected     4096 fully connected layer
        21   'relu5_2'            ReLU                ReLU
        22   'fc2'                Fully Connected     128 fully connected layer
        23   'EmbeddingBatch'     ReLU                ReLU
        24   'regressionoutput'   Regression Output   mean-squared-error
    

    Используйте analyzeNetwork (Deep Learning Toolbox), чтобы визуально исследовать сеть.

    analyzeNetwork(net)

    Читайте в звуковом сигнале.

    [audioIn,fs] = audioread('SpeechDFT-16-8-mono-5secs.wav');

    Постройте и слушайте звуковой сигнал.

    T = 1/fs;
    t = 0:T:(length(audioIn)*T) - T;
    plot(t,audioIn);
    grid on
    xlabel('Time (t)')
    ylabel('Ampltiude')

    soundsc(audioIn,fs)

    Используйте vggishPreprocess извлекать mel спектрограммы из звукового сигнала.

    melSpectVgg = vggishPreprocess(audioIn,fs);

    Создайте сеть VGGish (Это требует Deep Learning Toolbox). Вызовите predict использовать вашу сеть VGGish для экстракции встраивания функции аудио от предварительно обработанных mel изображений спектрограммы. Вложения функции возвращены как numFrames- 128 матриц, где numFrames количество отдельных спектрограмм, и 128 число элементов в каждом характеристическом векторе.

    net = vggish;
    embeddings = predict(net,melSpectVgg);
    [numFrames,numFeatures] = size(embeddings)
    numFrames = 9
    
    numFeatures = 128
    

    Визуализируйте вложения функции VGGish.

    surf(embeddings,'EdgeColor','none')
    view([90,-90])
    axis([1 numFeatures 1 numFrames])
    xlabel('Feature')
    ylabel('Frame')
    title('VGGish Audio Feature Embeddings')

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

    свернуть все

    Входной сигнал в виде вектор-столбца или матрицы. Если вы задаете матрицу, vggishPreprocess обрабатывает столбцы матрицы как отдельные звуковые каналы.

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

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

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

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

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

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

    свернуть все

    Спектрограммы Мэла сгенерированы от audioIn, возвращенный как 96- 64- 1- K массив, где:

    • 96 – Представляет количество систем координат на 25 мс в каждой mel спектрограмме.

    • 64 – Представляет количество mel полос, охватывающих от 125 Гц до 7,5 кГц.

    • K Представляет количество mel спектрограмм и зависит от длины audioIn, количество каналов в audioIn, а также OverlapPercentage.

      Примечание

      Каждый 96- 64- 1 закрашенная фигура представляет одно mel изображение спектрограммы. Для многоканальных входных параметров, mel спектрограммы сложены по 4-му измерению.

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

    Ссылки

    [1] Gemmeke, Джорт Ф., и др. “Аудио Набор: Онтология и Помеченный Человеком Набор данных для Аудио Событий”. 2 017 Международных конференций IEEE по вопросам Акустики, Речи и Обработки сигналов (ICASSP), IEEE, 2017, стр 776–80. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952261.

    [2] Херши, Шон, и др. “Архитектуры CNN для Крупномасштабной Аудио Классификации”. 2 017 Международных конференций IEEE по вопросам Акустики, Речи и Обработки сигналов (ICASSP), IEEE, 2017, стр 131–35. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952132.

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

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

    Смотрите также

    Приложения

    Блоки

    Функции

    Введенный в R2021a