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 слоя. Существует девять слоев с усвояемыми весами, из которых шесть являются сверточными слоями и три являются полносвязными слоями.

    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 spectrogram. Вложения функции возвращаются как numFrames-by-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, заданное как разделенная разделенными запятой парами, состоящая из 'OverlapPercentage' и скаляр в области значений [0,100).

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

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

    свернуть все

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

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

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

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

      Примечание

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

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

    Ссылки

    [1] Gemmeke, Jort F., et al. «Audio Set: An Ontology and Human-Labeled Dataset for Audio Events». 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), IEEE, 2017, pp. 776-80. DOI.org (Crossref), doi: 10.1109/ICASSP.2017.7952261.

    [2] Hershey, Shawn, et al. «Архитектуры CNN для Крупномасштабной Аудио Классификации». Международная конференция IEEE 2017 года по вопросам Акустики, Речи и Сигнала, Обрабатывающего (ICASSP), IEEE, 2017, стр 131-35. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952132.

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

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

    .

    См. также

    |

    Введенный в R2021a