Нейронная сеть CREPE
В этом примере используются:
Загрузите и распакуйте модель Audio Toolbox™ для CREPE.
Напечатать crepe в окне команд. Если модель Audio Toolbox для CREPE не установлена, функция предоставляет ссылку на расположение весов сети. Чтобы загрузить модель, щелкните ссылку и распакуйте файл в расположение по пути MATLAB.
Либо выполните эти команды для загрузки и распаковки модели CREPE во временную папку.
downloadFolder = fullfile(tempdir,'crepeDownload'); loc = websave(downloadFolder,'https://ssd.mathworks.com/supportfiles/audio/crepe.zip'); crepeLocation = tempdir; unzip(loc,crepeLocation) addpath(fullfile(crepeLocation,'crepe'))
Убедитесь, что установка выполнена успешно, введя crepe в окне команд. Если сеть установлена, то функция возвращает DAGNetwork(Панель инструментов глубокого обучения).
crepe
ans =
DAGNetwork with properties:
Layers: [34×1 nnet.cnn.layer.Layer]
Connections: [33×2 table]
InputNames: {'input'}
OutputNames: {'pitch'}
В этом примере используются:
Загрузите предварительно обученную сверточную нейронную сеть CREPE и изучите слои и классы.
Использовать crepe для загрузки предварительно обученной сети CREPE. Продукция net является DAGNetwork(Панель инструментов глубокого обучения).
net = crepe
net =
DAGNetwork with properties:
Layers: [34×1 nnet.cnn.layer.Layer]
Connections: [33×2 table]
InputNames: {'input'}
OutputNames: {'pitch'}
Просмотр сетевой архитектуры с помощью Layers собственность. Сеть имеет 34 уровня. Существует 13 слоев с обучаемыми весами, из которых шесть являются сверточными слоями, шесть являются слоями пакетной нормализации, и один является полностью соединенным слоем.
net.Layers
ans =
34×1 Layer array with layers:
1 'input' Image Input 1024×1×1 images
2 'conv1' Convolution 1024 512×1×1 convolutions with stride [4 1] and padding 'same'
3 'conv1_relu' ReLU ReLU
4 'conv1-BN' Batch Normalization Batch normalization with 1024 channels
5 'conv1-maxpool' Max Pooling 2×1 max pooling with stride [2 1] and padding [0 0 0 0]
6 'conv1-dropout' Dropout 25% dropout
7 'conv2' Convolution 128 64×1×1024 convolutions with stride [1 1] and padding 'same'
8 'conv2_relu' ReLU ReLU
9 'conv2-BN' Batch Normalization Batch normalization with 128 channels
10 'conv2-maxpool' Max Pooling 2×1 max pooling with stride [2 1] and padding [0 0 0 0]
11 'conv2-dropout' Dropout 25% dropout
12 'conv3' Convolution 128 64×1×128 convolutions with stride [1 1] and padding 'same'
13 'conv3_relu' ReLU ReLU
14 'conv3-BN' Batch Normalization Batch normalization with 128 channels
15 'conv3-maxpool' Max Pooling 2×1 max pooling with stride [2 1] and padding [0 0 0 0]
16 'conv3-dropout' Dropout 25% dropout
17 'conv4' Convolution 128 64×1×128 convolutions with stride [1 1] and padding 'same'
18 'conv4_relu' ReLU ReLU
19 'conv4-BN' Batch Normalization Batch normalization with 128 channels
20 'conv4-maxpool' Max Pooling 2×1 max pooling with stride [2 1] and padding [0 0 0 0]
21 'conv4-dropout' Dropout 25% dropout
22 'conv5' Convolution 256 64×1×128 convolutions with stride [1 1] and padding 'same'
23 'conv5_relu' ReLU ReLU
24 'conv5-BN' Batch Normalization Batch normalization with 256 channels
25 'conv5-maxpool' Max Pooling 2×1 max pooling with stride [2 1] and padding [0 0 0 0]
26 'conv5-dropout' Dropout 25% dropout
27 'conv6' Convolution 512 64×1×256 convolutions with stride [1 1] and padding 'same'
28 'conv6_relu' ReLU ReLU
29 'conv6-BN' Batch Normalization Batch normalization with 512 channels
30 'conv6-maxpool' Max Pooling 2×1 max pooling with stride [2 1] and padding [0 0 0 0]
31 'conv6-dropout' Dropout 25% dropout
32 'classifier' Fully Connected 360 fully connected layer
33 'classifier_sigmoid' Sigmoid sigmoid
34 'pitch' Regression Output mean-squared-error
Использовать analyzeNetwork (Deep Learning Toolbox) для визуального изучения сети.
analyzeNetwork(net)

В этом примере используются:
Сеть CREPE требует предварительной обработки аудиосигналов для формирования буферизованных, перекрывающихся и нормализованных аудиокадров, которые могут использоваться в качестве входных данных в сети. В этом примере выполняется предварительная обработка звука с использованием crepePreprocess и постобработку звука с оценкой основного тона с использованием crepePostprocess. pitchnn функция выполняет эти шаги для вас.
Считывание звукового сигнала для оценки основного тона. Визуализация и прослушивание звука. В аудиоклипе девять вокальных высказываний.
[audioIn,fs] = audioread('SingingAMajor-16-mono-18secs.ogg'); soundsc(audioIn,fs) T = 1/fs; t = 0:T:(length(audioIn)*T) - T; plot(t,audioIn); grid on axis tight xlabel('Time (s)') ylabel('Ampltiude') title('Singing in A Major')

Использовать crepePreprocess для разделения звука на кадры из 1024 выборок с 85% перекрытием между последовательными спектрограммами. Разместите рамки вдоль четвертого размера.
[frames,loc] = crepePreprocess(audioIn,fs);
Создание сети CREPE с помощью ModelCapacity установить в значение tiny. При звонке crepe перед загрузкой модели в командное окно выводится сообщение об ошибке со ссылкой на загрузку.
netTiny = crepe('ModelCapacity','tiny');
Спрогнозировать активации сети.
activationsTiny = predict(netTiny,frames);
Использовать crepePostprocess для получения оценки основного частотного основного тона в Гц. Отключить пороговое значение достоверности путем установки ConfidenceThreshold кому 0.
f0Tiny = crepePostprocess(activationsTiny,'ConfidenceThreshold',0);Визуализация оценки основного тона во времени.
plot(loc,f0Tiny) grid on axis tight xlabel('Time (s)') ylabel('Pitch Estimation (Hz)') title('CREPE Network Frequency Estimate - Thresholding Disabled')

С отключенным доверительным порогом, crepePostprocess обеспечивает оценку основного тона для каждого кадра. Увеличить ConfidenceThreshold кому 0.8.
f0Tiny = crepePostprocess(activationsTiny,'ConfidenceThreshold',0.8);Визуализация оценки основного тона во времени.
plot(loc,f0Tiny,'LineWidth',3) grid on axis tight xlabel('Time (s)') ylabel('Pitch Estimation (Hz)') title('CREPE Network Frequency Estimate - Thresholding Enabled')

Создание новой сети CREPE с помощью ModelCapacity установить в значение full.
netFull = crepe('ModelCapacity','full');
Спрогнозировать активации сети.
activationsFull = predict(netFull,frames);
f0Full = crepePostprocess(activationsFull,'ConfidenceThreshold',0.8);Визуализация оценки основного тона. Существует девять первичных групп оценки основного тона, каждая группа соответствует одному из девяти речевых высказываний.
plot(loc,f0Full,'LineWidth',3) grid on xlabel('Time (s)') ylabel('Pitch Estimation (Hz)') title('CREPE Network Frequency Estimate - Full')

Найдите элементы времени, соответствующие последнему голосовому высказыванию.
roundedLocVec = round(loc,2); lastUtteranceBegin = find(roundedLocVec == 16); lastUtteranceEnd = find(roundedLocVec == 18);
Для простоты возьмем наиболее часто встречающуюся оценку основного тона в группе высказываний в качестве оценки основной частоты для этого временного интервала. Генерировать чистый тон с частотой, соответствующей оценке основного тона для последнего речевого сообщения.
lastUtteranceEstimation = mode(f0Full(lastUtteranceBegin:lastUtteranceEnd))
lastUtteranceEstimation = single
217.2709
Значение для lastUtteranceEstimate из 217.3 Гц. соответствует A3 примечания. Наложите синтезированный тон на последнее вокальное высказывание, чтобы слышно сравнить их.
lastVocalUtterance = audioIn(fs*16:fs*18); newTime = 0:T:2; compareTone = cos(2*pi*lastUtteranceEstimation*newTime).'; soundsc(lastVocalUtterance + compareTone,fs);
Звонить spectrogram для более тщательного изучения частотного содержания пения. Использовать размер кадра 250 выборки и перекрытие 225 образцы или 90%. Использовать 4096 Точки DFT для преобразования. spectrogram показывает, что запись вокала на самом деле является набором сложных гармонических тонов, составленных из множества частот.
spectrogram(audioIn,250,225,4096,fs,'yaxis')
CAP - Емкость модели'full' (по умолчанию) | 'tiny' | 'small' | 'medium' | 'large'Емкость модели, указанная как разделенная запятыми пара, состоящая из 'ModelCapacity' и 'tiny', 'small', 'medium', 'large', или 'full'.
Совет
'ModelCapacity' контролирует сложность лежащей в основе нейронной сети глубокого обучения. Чем выше емкость модели, тем больше количество узлов и слоев в модели. Выбор подходящей емкости модели для данных поможет предотвратить недоукомплектование или переоснащение.
Типы данных: string | char
net - Предварительно обученная нейронная сеть CREPEDAGNetwork объектПредварительно обученная нейронная сеть CREPE, возвращенная в качестве DAGNetwork(Панель инструментов глубокого обучения).
[1] Ким, Чен Вук, Джастин Саламон, Питер Ли и Хуан Пабло Белло. «Crepe: Сверточное представление для оценки основного тона». В 2018 году IEEE Международная конференция по акустике, обработке речи и сигналов (ICASSP), 161-65. Калгари, AB: IEEE, 2018. https://doi.org/10.1109/ICASSP.2018.8461329.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.