Нейронная сеть OpenL3
возвращает предварительно обученную модель OpenL3.net
= openl3
Эта функция требует и Audio Toolbox™ и Deep Learning Toolbox™.
задает опции с помощью одного или нескольких Имя, аргументы Value. Например, net
= openl3(Name,Value
)net = openl3('EmbeddingLength',6144)
задает выходную продолжительность встраивания как 6 144.
Загрузите и разархивируйте модель Audio Toolbox™ для OpenL3.
Введите openl3
в Командном окне. Если модель Audio Toolbox для OpenL3 не установлена, функция обеспечивает ссылку на местоположение сетевых весов. Чтобы загрузить модель, щелкните по ссылке. Разархивируйте файл к местоположению на пути MATLAB.
В качестве альтернативы выполните эти команды, чтобы загрузить и разархивировать модель OpenL3 к вашей временной директории.
downloadFolder = fullfile(tempdir,'OpenL3Download'); loc = websave(downloadFolder,'https://ssd.mathworks.com/supportfiles/audio/openl3.zip'); OpenL3Location = tempdir; unzip(loc,OpenL3Location) addpath(fullfile(OpenL3Location,'openl3'))
Проверяйте, что установка успешна путем ввода openl3
в Командном окне. Если сеть установлена, то функция возвращает DAGNetwork
Объект (Deep Learning Toolbox).
openl3
ans = DAGNetwork with properties: Layers: [30×1 nnet.cnn.layer.Layer] Connections: [29×2 table] InputNames: {'in'} OutputNames: {'out'}
Загрузите предварительно обученную сверточную нейронную сеть OpenL3 и исследуйте слои и классы.
Используйте openl3
загружать предварительно обученную сеть OpenL3. Выход net
DAGNetwork
Объект (Deep Learning Toolbox).
net = openl3
net = DAGNetwork with properties: Layers: [30×1 nnet.cnn.layer.Layer] Connections: [29×2 table] InputNames: {'in'} OutputNames: {'out'}
Просмотрите сетевую архитектуру с помощью Layers
свойство. Сеть имеет 30 слоев. Существует 16 слоев с learnable весами, из которых восемь слои нормализации партии., и восемь сверточные слои.
net.Layers
ans = 30×1 Layer array with layers: 1 'in' Image Input 128×199×1 images 2 'batch_normalization_81' Batch Normalization Batch normalization with 1 channels 3 'conv2d_71' Convolution 64 3×3×1 convolutions with stride [1 1] and padding 'same' 4 'batch_normalization_82' Batch Normalization Batch normalization with 64 channels 5 'activation_71' ReLU ReLU 6 'conv2d_72' Convolution 64 3×3×64 convolutions with stride [1 1] and padding 'same' 7 'batch_normalization_83' Batch Normalization Batch normalization with 64 channels 8 'activation_72' ReLU ReLU 9 'max_pooling2d_41' Max Pooling 2×2 max pooling with stride [2 2] and padding [0 0 0 0] 10 'conv2d_73' Convolution 128 3×3×64 convolutions with stride [1 1] and padding 'same' 11 'batch_normalization_84' Batch Normalization Batch normalization with 128 channels 12 'activation_73' ReLU ReLU 13 'conv2d_74' Convolution 128 3×3×128 convolutions with stride [1 1] and padding 'same' 14 'batch_normalization_85' Batch Normalization Batch normalization with 128 channels 15 'activation_74' ReLU ReLU 16 'max_pooling2d_42' Max Pooling 2×2 max pooling with stride [2 2] and padding [0 0 0 0] 17 'conv2d_75' Convolution 256 3×3×128 convolutions with stride [1 1] and padding 'same' 18 'batch_normalization_86' Batch Normalization Batch normalization with 256 channels 19 'activation_75' ReLU ReLU 20 'conv2d_76' Convolution 256 3×3×256 convolutions with stride [1 1] and padding 'same' 21 'batch_normalization_87' Batch Normalization Batch normalization with 256 channels 22 'activation_76' ReLU ReLU 23 'max_pooling2d_43' Max Pooling 2×2 max pooling with stride [2 2] and padding [0 0 0 0] 24 'conv2d_77' Convolution 512 3×3×256 convolutions with stride [1 1] and padding 'same' 25 'batch_normalization_88' Batch Normalization Batch normalization with 512 channels 26 'activation_77' ReLU ReLU 27 'audio_embedding_layer' Convolution 512 3×3×512 convolutions with stride [1 1] and padding 'same' 28 'max_pooling2d_44' Max Pooling 16×24 max pooling with stride [16 24] and padding 'same' 29 'flatten' Keras Flatten Flatten activations into 1-D assuming C-style (row-major) order 30 'out' Regression Output mean-squared-error
Используйте analyzeNetwork
(Deep Learning Toolbox), чтобы визуально исследовать сеть.
analyzeNetwork(net)
Используйте openl3Preprocess
извлекать вложения из звукового сигнала.
Читайте в звуковом сигнале.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');
Чтобы извлечь спектрограммы из аудио, вызовите openl3Preprocess
функция с аудио и частотой дискретизации. Используйте 50%-е перекрытие и установите тип спектра на линейный. openl3Preprocess
функция возвращает массив 30 спектрограмм, произведенных с помощью длины БПФ 512.
features = openl3Preprocess(audioIn,fs,'OverlapPercentage',50,'SpectrumType','linear'); [posFFTbinsOvLap50,numHopsOvLap50,~,numSpectOvLap50] = size(features)
posFFTbinsOvLap50 = 257
numHopsOvLap50 = 197
numSpectOvLap50 = 30
Вызовите openl3Preprocess
снова, на этот раз с помощью перекрытия по умолчанию 90%. openl3Preprocess
функционируйте теперь возвращает массив 146 спектрограмм.
features = openl3Preprocess(audioIn,fs,'SpectrumType','linear'); [posFFTbinsOvLap90,numHopsOvLap90,~,numSpectOvLap90] = size(features)
posFFTbinsOvLap90 = 257
numHopsOvLap90 = 197
numSpectOvLap90 = 146
Визуализируйте одну из спектрограмм наугад.
randSpect = randi(numSpectOvLap90); viewRandSpect = features(:,:,:,randSpect); N = size(viewRandSpect,2); binsToHz = (0:N-1)*fs/N; nyquistBin = round(N/2); semilogx(binsToHz(1:nyquistBin),mag2db(abs(viewRandSpect(1:nyquistBin)))) xlabel('Frequency (Hz)') ylabel('Power (dB)'); title([num2str(randSpect),'th Spectrogram']) axis tight grid on
Создайте сеть OpenL3 (это требует Deep Learning Toolbox), использование того же 'SpectrumType'
.
net = openl3('SpectrumType','linear');
Извлеките и визуализируйте аудио вложения.
embeddings = predict(net,features); surf(embeddings,'EdgeColor','none') view([90,-90]) axis([1 numSpectOvLap90 1 numSpectOvLap90]) xlabel('Embedding Length') ylabel('Spectrum Number') title('OpenL3 Feature Embeddings') axis tight
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
openl3('EmbeddingLength',6144)
SpectrumType
— Тип спектра'mel128'
(значение по умолчанию) | 'mel256'
| 'linear'
Тип спектра сгенерирован от аудио и используемый в качестве входа к нейронной сети в виде 'mel128'
, 'mel256'
, или 'linear'
.
При использовании 'SpectrumType'
и:
'mel128'
– Сеть принимает mel спектрограммы с 128 mel полосами, как введено. Входными размерностями к сети является 128
- 199
- 1
- K, где 128
количество mel полос и 199
количество транзитных участков времени.
'mel256'
– Сеть принимает mel спектрограммы с 256 mel полосами, как введено. Входными размерностями к сети является 256
- 199
- 1
- K, где 256
количество mel полос и 199
количество транзитных участков времени.
'linear'
– Сеть принимает положительные односторонние спектрограммы с длиной БПФ 257. Входными размерностями к сети является 257
- 197
- 1
- K, где 257
положительная односторонняя длина БПФ и 197
количество транзитных участков времени.
K представляет количество спектрограмм. При предварительной обработке данных с openl3Preprocess
, необходимо использовать тот же 'SpectrumType'
.
Типы данных: char |
string
EmbeddingLength
— Встраивание длины
(значение по умолчанию) | 6144
Длина выходного аудио, встраивающего в виде 512
или 6144
.
Типы данных: single
| double
ContentType
— Тип звукового содержимого'env'
(значение по умолчанию) | 'music'
Тип звукового содержимого нейронная сеть обучен на в виде 'env'
или 'music'
.
Установите ContentType
к:
'env'
когда это необходимо, использовать модель, обученную на данных о состоянии окружающей среды.
'music'
когда это необходимо, использовать модель, обученную на музыкальных данных.
Типы данных: char |
string
net
— Предварительно обученная нейронная сеть OpenL3DAGNetwork
объектПредварительно обученная нейронная сеть OpenL3, возвращенная как DAGNetwork
Объект (Deep Learning Toolbox).
[1] Крамер, Джейсон, и др. "Посмотрите, Послушайте и Узнайте больше: Проектные решения для Глубоких Аудио Вложений". На международной конференции ICASSP 2019 IEEE по вопросам Акустики, Речи и Обработки сигналов (ICASSP), IEEE, 2019, стр 3852-56. DOI.org (Crossref), doi:/10.1109/ICASSP.2019.8682475.
Указания и ограничения по применению:
Только activations
и predict
поддерживаются объектные функции.
Создать SeriesNetwork
объект для генерации кода, смотрите Предварительно обученные сети Загрузки для Генерации кода (MATLAB Coder).
Указания и ограничения по применению:
Только activations
, classify
, predict
, predictAndUpdateState
, и resetState
поддерживаются объектные функции.
Создать SeriesNetwork
объект для генерации кода, смотрите Предварительно обученные сети Загрузки для Генерации кода (GPU Coder).
openl3Preprocess
| openl3Features
| vggish
| classifySound
| vggishFeatures
| audioFeatureExtractor
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.