exponenta event banner

vggishPreprocess

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

    Описание

    пример

    features = vggishPreprocess(audioIn,fs) генерирует спектрограммы из 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(Панель инструментов глубокого обучения).

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

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

    Использовать vggish для загрузки предварительно обученной сети VGGish. Продукция net является SeriesNetwork(Панель инструментов глубокого обучения).

    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 извлекают спектрограммы из звукового сигнала.

    melSpectVgg = vggishPreprocess(audioIn,fs);

    Создание сети VGGish (для этого требуется инструментарий глубокого обучения). Звонить predict для использования сети VGGish для извлечения аудиоприемников из предварительно обработанных изображений спектрограммы mel. Вложение элемента возвращается как 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

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

    свернуть все

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

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

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

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

      Примечание

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

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

    Ссылки

    [1] Gemmeke, Джорт Ф., и др. 2017 IEEE Международная конференция по акустике, обработке речи и сигналов (ICASSP), IEEE, 2017, стр. 776-80. DOI.org (Crossref), дой: 10.1109/ICASSP.2017.7952261.

    [2] Херши, Шон и др. Международная конференция IEEE 2017 по акустике, обработке речи и сигналов (ICASSP), IEEE, 2017, стр. 131-35. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952132.

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

    Создание кода C/C + +
    Создайте код C и C++ с помощью MATLAB ® Coder™

    .

    См. также

    |

    Представлен в R2021a