График онтологии AudioSet компании YAMNet
yamnetGraphВ этом примере используются:
Загрузите и распакуйте поддержку Audio Toolbox™ для YAMNet.
Напечатать yamnetGraph в окне команд. Если поддержка 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'))
Убедитесь, что установка выполнена успешно, введя yamnetGraph в окне команд. Если сеть установлена, то функция возвращает digraph объект.
yamnetGraph
В этом примере используются:
Создать digraph объект, описывающий онтологию AudioSet.
ygraph = yamnetGraph
ygraph =
digraph with properties:
Edges: [670×1 table]
Nodes: [632×1 table]
Визуализация онтологии. Онтология состоит из 632 отдельных классов с 670 соединениями.
p = plot(ygraph);
layout(p,'layered')Получите имя каждого класса звука. Если класс звука не имеет предшественников, определите его как основную категорию онтологии.
nodeNames = ygraph.Nodes.Name;
topCategories = {};
for index = 1:numel(nodeNames)
pre = predecessors(ygraph,nodeNames{index});
if isempty(pre)
topCategories{end+1} = nodeNames{index};
end
endОтображение категорий в виде массива строк.
topCategories = string(topCategories)
topCategories = 1×7 string
"Human sounds" "Animal" "Music" "Natural sounds" "Sounds of things" "Source-ambiguous sounds" "Channel, environment and background"
Выделите и пометьте верхние категории в digraph график.
highlight(p,topCategories,"NodeColor","red","MarkerSize",8) labelnode(p,topCategories,topCategories)
В этом примере используются:
Создать digraph объект, представляющий онтологию AudioSet.
ygraph = yamnetGraph;
Использовать dfsearch для выполнения поиска по глубинному графу для идентификации всех аудиоклассов в классе Animal.
animalNodes = dfsearch(ygraph,"Animal");Использовать subgraph для создания нового digraph объект, который включает только идентифицированные классы звука. Постройте график полученных направленных рёбер.
animalGraph = subgraph(ygraph,animalNodes);
p = plot(animalGraph);
p.NodeFontSize = 12;
graphFigure = gcf;
old = graphFigure.Position;
set(graphFigure,'position',[old(1),old(2),old(3)*3,old(4)*3])
Использовать predecessors для определения всех предшественников Growling звук. Выделите предшественников на графике.
preIDs = predecessors(animalGraph,"Growling")preIDs = 4×1 string
"Dog"
"Cat"
"Roaring cats (lions, tigers)"
"Canidae, dogs, wolves"
Использовать highlight для выделения Growling узел и предшественники на графике.
highlight(p,"Growling",'NodeColor','g','MarkerSize',8) highlight(p,preIDs,'NodeColor','r','MarkerSize',8)

В этом примере используются:
Создайте объект digraph, описывающий онтологию AudioSet. Также верните классы, поддерживаемые YAMNet. Постройте график направления.
[ygraph,classes] = yamnetGraph;
p = plot(ygraph);
layout(p,'layered')
YAMNet прогнозирует подмножество полной онтологии AudioSet. Отображение классов звука, которые находятся в онтологии AudioSet, но не являются возможными выходами из сети YAMNet.
audiosetClasses = ygraph.Nodes.Name; classDiff = setdiff(audiosetClasses,classes)
classDiff = 111×1 string
"Acoustic environment"
"Alto saxophone"
"Background noise"
"Bass (frequency range)"
"Bass (instrument role)"
"Bassline"
"Bassoon"
"Battle cry"
"Bay"
"Beat"
"Birthday music"
"Blare"
"Booing"
"Brief tone"
"Bugle"
"Cat communication"
"Cellphone buzz, vibrating alert"
"Channel, environment and background"
"Chipmunk"
"Chord"
"Clavinet"
"Clunk"
"Compact disc"
"Cornet"
"Crash cymbal"
"Cumbia"
"Deformable shell"
"Digestive"
"Domestic sounds, home sounds"
"Donkey, ass"
⋮
Выделите классы, которые не являются возможными выходами из YAMNet.
highlight(p,classDiff,'NodeColor','r')

Проанализируйте одну из основных категорий.
categoryToAnalyze ="Channel, environment and background"; subsetNodes = dfsearch(ygraph,categoryToAnalyze); ygraphSubset = subgraph(ygraph,subsetNodes); classToHighlight = intersect(classDiff,ygraphSubset.Nodes.Name); pSub = plot(ygraphSubset); layout(pSub,'layered') highlight(pSub,classToHighlight,'NodeColor','r')

В этом примере используются:
Создать digraph объект, описывающий онтологию AudioSet.
ygraph = yamnetGraph;
Укажите класс звука для визуализации и число предшественников и преемников. Доступными классами звука являются только те, которые поддерживаются в качестве выходов из YAMNet. Если указать больше предшественников или преемников, чем в онтологии, отображаются только предшественники и преемники в онтологии.
soundClass ="Growling"; numPredecessors =
3; numSuccessors =
0; pred = nearest(ygraph,soundClass,numPredecessors,'Direction','incoming'); suc = nearest(ygraph,soundClass,numSuccessors,'Direction','outgoing'); subClasses = [soundClass;pred;suc]; ygraphSub = subgraph(ygraph,unique(subClasses)); p = plot(ygraphSub); layout(p,'layered') highlight(p,soundClass,'Marker','d','NodeColor','red','MarkerSize',6)

ygraph - граф онтологии AudioSet с направленными рёбрамиdigraph объектГраф онтологии AudioSet с направленными рёбрами, возвращаемый как digraph объект.
classes - Классы, поддерживаемые YAMNetКлассы, поддерживаемые YAMNet, возвращаемые как строковый массив. Классы, поддерживаемые YAMNet, являются подмножеством онтологии AudioSet.
Google ® предоставляет веб-сайт, на котором можно изучить онтологию AudioSet и соответствующий набор данных: https://research.google.com/audioset/ontology/index.html.
[1] Gemmeke, Джорт Ф., и др. 2017 IEEE Международная конференция по акустике, обработке речи и сигналов (ICASSP), IEEE, 2017, стр. 776-80. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952261.
[2] Херши, Шон и др. Международная конференция IEEE 2017 по акустике, обработке речи и сигналов (ICASSP), IEEE, 2017, стр. 131-35. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952132.
Аудиомаркировщик | classifySound | vggish | vggishFeatures | yamnet
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.