Предварительно обработайте аудио для классификации YAMNet
задает процент перекрытия между последовательными аудио системами координат.features
= yamnetPreprocess(audioIn
,fs
,'OverlapPercentage'
,OP
)
Например, features = yamnetPreprocess(audioIn,fs,'OverlapPercentage',75)
применяется 75%-е перекрытие между последовательными системами координат раньше генерировало спектрограммы.
Загрузите и разархивируйте модель Audio Toolbox™ для YAMNet.
Введите yamnet
в Командном окне. Если модель Audio Toolbox для YAMNet не установлена, то функция обеспечивает ссылку на местоположение сетевых весов. Чтобы загрузить модель, щелкните по ссылке. Разархивируйте файл к местоположению на пути MATLAB.
В качестве альтернативы выполните следующие команды, чтобы загрузить и разархивировать модель YAMNet к вашей временной директории.
downloadFolder = fullfile(tempdir,'YAMNetDownload'); loc = websave(downloadFolder,'https://ssd.mathworks.com/supportfiles/audio/yamnet.zip'); YAMNetLocation = tempdir; unzip(loc,YAMNetLocation) addpath(fullfile(YAMNetLocation,'yamnet'))
Проверяйте, что установка успешна путем ввода yamnet
в Командном окне. Если сеть установлена, то функция возвращает SeriesNetwork
Объект (Deep Learning Toolbox).
yamnet
ans = SeriesNetwork with properties: Layers: [86×1 nnet.cnn.layer.Layer] InputNames: {'input_1'} OutputNames: {'Sound'}
Загрузите предварительно обученную сверточную нейронную сеть YAMNet и исследуйте слои и классы.
Используйте yamnet
загружать предварительно обученную сеть YAMNet. Сетевым выходом является SeriesNetwork
Объект (Deep Learning Toolbox).
net = yamnet
net = SeriesNetwork with properties: Layers: [86×1 nnet.cnn.layer.Layer] InputNames: {'input_1'} OutputNames: {'Sound'}
Просмотрите сетевую архитектуру с помощью Layers
свойство. Сеть имеет 86 слоев. Существует 28 слоев с learnable весами: 27 сверточных слоев и 1 полносвязный слой.
net.Layers
ans = 86x1 Layer array with layers: 1 'input_1' Image Input 96×64×1 images 2 'conv2d' Convolution 32 3×3×1 convolutions with stride [2 2] and padding 'same' 3 'b' Batch Normalization Batch normalization with 32 channels 4 'activation' ReLU ReLU 5 'depthwise_conv2d' Grouped Convolution 32 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 6 'L11' Batch Normalization Batch normalization with 32 channels 7 'activation_1' ReLU ReLU 8 'conv2d_1' Convolution 64 1×1×32 convolutions with stride [1 1] and padding 'same' 9 'L12' Batch Normalization Batch normalization with 64 channels 10 'activation_2' ReLU ReLU 11 'depthwise_conv2d_1' Grouped Convolution 64 groups of 1 3×3×1 convolutions with stride [2 2] and padding 'same' 12 'L21' Batch Normalization Batch normalization with 64 channels 13 'activation_3' ReLU ReLU 14 'conv2d_2' Convolution 128 1×1×64 convolutions with stride [1 1] and padding 'same' 15 'L22' Batch Normalization Batch normalization with 128 channels 16 'activation_4' ReLU ReLU 17 'depthwise_conv2d_2' Grouped Convolution 128 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 18 'L31' Batch Normalization Batch normalization with 128 channels 19 'activation_5' ReLU ReLU 20 'conv2d_3' Convolution 128 1×1×128 convolutions with stride [1 1] and padding 'same' 21 'L32' Batch Normalization Batch normalization with 128 channels 22 'activation_6' ReLU ReLU 23 'depthwise_conv2d_3' Grouped Convolution 128 groups of 1 3×3×1 convolutions with stride [2 2] and padding 'same' 24 'L41' Batch Normalization Batch normalization with 128 channels 25 'activation_7' ReLU ReLU 26 'conv2d_4' Convolution 256 1×1×128 convolutions with stride [1 1] and padding 'same' 27 'L42' Batch Normalization Batch normalization with 256 channels 28 'activation_8' ReLU ReLU 29 'depthwise_conv2d_4' Grouped Convolution 256 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 30 'L51' Batch Normalization Batch normalization with 256 channels 31 'activation_9' ReLU ReLU 32 'conv2d_5' Convolution 256 1×1×256 convolutions with stride [1 1] and padding 'same' 33 'L52' Batch Normalization Batch normalization with 256 channels 34 'activation_10' ReLU ReLU 35 'depthwise_conv2d_5' Grouped Convolution 256 groups of 1 3×3×1 convolutions with stride [2 2] and padding 'same' 36 'L61' Batch Normalization Batch normalization with 256 channels 37 'activation_11' ReLU ReLU 38 'conv2d_6' Convolution 512 1×1×256 convolutions with stride [1 1] and padding 'same' 39 'L62' Batch Normalization Batch normalization with 512 channels 40 'activation_12' ReLU ReLU 41 'depthwise_conv2d_6' Grouped Convolution 512 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 42 'L71' Batch Normalization Batch normalization with 512 channels 43 'activation_13' ReLU ReLU 44 'conv2d_7' Convolution 512 1×1×512 convolutions with stride [1 1] and padding 'same' 45 'L72' Batch Normalization Batch normalization with 512 channels 46 'activation_14' ReLU ReLU 47 'depthwise_conv2d_7' Grouped Convolution 512 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 48 'L81' Batch Normalization Batch normalization with 512 channels 49 'activation_15' ReLU ReLU 50 'conv2d_8' Convolution 512 1×1×512 convolutions with stride [1 1] and padding 'same' 51 'L82' Batch Normalization Batch normalization with 512 channels 52 'activation_16' ReLU ReLU 53 'depthwise_conv2d_8' Grouped Convolution 512 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 54 'L91' Batch Normalization Batch normalization with 512 channels 55 'activation_17' ReLU ReLU 56 'conv2d_9' Convolution 512 1×1×512 convolutions with stride [1 1] and padding 'same' 57 'L92' Batch Normalization Batch normalization with 512 channels 58 'activation_18' ReLU ReLU 59 'depthwise_conv2d_9' Grouped Convolution 512 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 60 'L101' Batch Normalization Batch normalization with 512 channels 61 'activation_19' ReLU ReLU 62 'conv2d_10' Convolution 512 1×1×512 convolutions with stride [1 1] and padding 'same' 63 'L102' Batch Normalization Batch normalization with 512 channels 64 'activation_20' ReLU ReLU 65 'depthwise_conv2d_10' Grouped Convolution 512 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 66 'L111' Batch Normalization Batch normalization with 512 channels 67 'activation_21' ReLU ReLU 68 'conv2d_11' Convolution 512 1×1×512 convolutions with stride [1 1] and padding 'same' 69 'L112' Batch Normalization Batch normalization with 512 channels 70 'activation_22' ReLU ReLU 71 'depthwise_conv2d_11' Grouped Convolution 512 groups of 1 3×3×1 convolutions with stride [2 2] and padding 'same' 72 'L121' Batch Normalization Batch normalization with 512 channels 73 'activation_23' ReLU ReLU 74 'conv2d_12' Convolution 1024 1×1×512 convolutions with stride [1 1] and padding 'same' 75 'L122' Batch Normalization Batch normalization with 1024 channels 76 'activation_24' ReLU ReLU 77 'depthwise_conv2d_12' Grouped Convolution 1024 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same' 78 'L131' Batch Normalization Batch normalization with 1024 channels 79 'activation_25' ReLU ReLU 80 'conv2d_13' Convolution 1024 1×1×1024 convolutions with stride [1 1] and padding 'same' 81 'L132' Batch Normalization Batch normalization with 1024 channels 82 'activation_26' ReLU ReLU 83 'global_average_pooling2d' Global Average Pooling Global average pooling 84 'dense' Fully Connected 521 fully connected layer 85 'softmax' Softmax softmax 86 'Sound' Classification Output crossentropyex with 'Speech' and 520 other classes
Чтобы просмотреть имена классов, изученных сетью, можно просмотреть Classes
свойство классификации вывело слой (последний слой). Просмотрите первые 10 классов путем указывания первых 10 элементов.
net.Layers(end).Classes(1:10)
ans = 10×1 categorical
Speech
Child speech, kid speaking
Conversation
Narration, monologue
Babbling
Speech synthesizer
Shout
Bellow
Whoop
Yell
Используйте analyzeNetwork
(Deep Learning Toolbox), чтобы визуально исследовать сеть.
analyzeNetwork(net)
YAMNet был выпущен с соответствующей звуковой онтологией класса, которая можно исследовать использование yamnetGraph
объект.
ygraph = yamnetGraph;
p = plot(ygraph);
layout(p,'layered')
График онтологии строит весь 521 возможный звуковой класс. Постройте подграф звуков, связанных с дыхательными звуками.
allRespiratorySounds = dfsearch(ygraph,"Respiratory sounds");
ygraphSpeech = subgraph(ygraph,allRespiratorySounds);
plot(ygraphSpeech)
Читайте в звуковом сигнале.
[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)
Используйте yamnetPreprocess
извлекать mel спектрограммы из звукового сигнала. Визуализируйте произвольную спектрограмму из массива.
melSpectYam = yamnetPreprocess(audioIn,fs); arbSpect = melSpectYam(:,:,1,randi(size(melSpectYam,4))); surf(arbSpect,'EdgeColor','none') view([90,-90]) axis([1 size(arbSpect,1) 1 size(arbSpect,2)]) xlabel('Mel Band') ylabel('Frame') title('Mel Spectrogram for YAMNet') axis tight
Создайте нейронную сеть YAMNet (Это требует Deep Learning Toolbox). Вызовите classify
с вашей сетью YAMNet и предварительно обработанными mel изображениями спектрограммы.
net = yamnet; classes = classify(net,melSpectYam);
Классифицируйте звуковой сигнал как наиболее часто происходящий звук.
mySound = mode(classes)
mySound = categorical
Speech
audioIn
— Входной сигналВходной сигнал в виде вектор-столбца или матрицы. Если вы задаете матрицу, yamnetPreprocess
обрабатывает столбцы матрицы как отдельные звуковые каналы.
Типы данных: single
| double
fs
— Частота дискретизации (Гц)Частота дискретизации входного сигнала в Гц в виде положительной скалярной величины.
Типы данных: single
| double
OP
— Перекройте процент между последовательными mel спектрограммами
(значение по умолчанию) | скаляр в области значений [0,100)Перекрытие процента между последовательными mel спектрограммами в виде скаляра в области значений [0,100).
Типы данных: single
| double
features
— Спектрограммы Мэла, которые могут питаться предварительно обученную сеть YAMNet
- 64
- 1
- K массивСпектрограммы Мэла сгенерированы от audioIn
, возвращенный как 96
- 64
- 1
- K массив, где:
96 – Представляет количество систем координат на 25 мс в каждой mel спектрограмме
64 – Представляет количество mel полос, охватывающих от 125 Гц до 7,5 кГц
K Представляет количество mel спектрограмм и зависит от длины audioIn
, количество каналов в audioIn
, а также OverlapPercentage
Примечание
Каждый 96
- 64
- 1
закрашенная фигура представляет одно mel изображение спектрограммы. Для многоканальных входных параметров, mel спектрограммы сложены по четвертому измерению.
Типы данных: 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.
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.