对音频信号中的声音进行分类
分类声音(___)
如果没有输出参数,则在音频信号中创建一个识别声音的词云。
此函数需要音频和音频™ 深度学习工具箱™.
classifySound
下载并解压缩音频工具箱™对YAMNet的支持。金宝app
如果没有安装对YAMNet的Audio T金宝appoolbox支持,那么对该函数的第一次调用将提供到下载位置的链接。要下载模型,请单击链接。解压文件到MATLAB路径上的一个位置。
或者,执行以下命令将YAMNet模型下载并解压缩到临时目录。
downloadFolder = fullfile (tempdir,“YAMNetDownload”); loc=websave(下载文件夹,“https://ssd.mathworks.com/金宝appsupportfiles/audio/yamnet.zip”);YAMNetLocation = tempdir;YAMNetLocation解压(loc)目录(fullfile (YAMNetLocation,“yamnet”))
读入音频信号。调用classifySound
返回检测到的声音和相应的时间戳。
[audioIn, fs] = audioread (“多路音频-16-16-mono-18秒波形”);(声音、时间戳)= classifySound (audioIn fs);
绘制音频信号并标记检测到的声音区域。
t =(0:元素个数(audioIn) 1) / fs;情节(t, audioIn)包含(“时间(s)”)轴([t(1),t(end),-1,1]) textHeight = 1.1;为patch([timeStamps(idx,1),timeStamps(idx,1),timeStamps(idx,2),timeStamps(idx,2)],...(1, 1, 1, 1),...(0.3010 0.7450 0.9330),...“FaceAlpha”,0.2);文本(时间戳(idx,1),文本高度+0.05*(-1)^idx,声音(idx))结束
选择一个区域并仅收听所选区域。
sampleStamps =地板(时间戳* fs) + 1;soundEvent =3.;isolatedSoundEvent = audioIn (sampleStamps (soundEvent 1): sampleStamps (soundEvent 2));声音(isolatedSoundEvent, fs);显示器('检测到的声音= '+声音(soundEvent))
“检测到的声音=打鼾”
读入包含多个不同声音事件的音频信号。
[audioIn, fs] = audioread (“多路音频-16-16-mono-18秒波形”);
调用classifySound
与音频信号和采样率。
(声音,~,soundTable) = classifySound (audioIn fs);
的听起来
字符串数组包含每个区域中最可能的声音事件。
听起来
听起来=1×5弦“流”“机枪”“打鼾”“吠叫”“喵喵”
的soundTable
包含关于在每个区域检测到的声音的详细信息,包括分析信号的得分均值和最大值。
soundTable
soundTable =5×2表时间戳结果{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0 3.92{4×3表}4.0425 6.0025{3×3表}6.86 9.1875{2×3表}10.65812.373{4×3表}12.98516.66{4×3表}
查看上次检测到的区域。
soundTable。结果{end}
ans=4×3表声音平均得分最高0.79514 0.99941“家畜、宠物”0.80243 0.99831“猫”0.8048 0.99046“喵喵”0.639042
调用classifySound
一次。这一次,IncludedSounds
到动物
所以这个函数只保留了动物
检测到声音类。
[声音,时间戳,声音表]=classifySound(音频输入,fs,...“IncludedSounds”,“动物”);
声音数组仅返回指定为包含的声音听起来
数组现在包含两个实例动物
对应于声明为吠叫
和猫叫
之前。
听起来
听起来=1×2字符串“动物”“动物”
声音表仅包括检测到指定声音类别的区域。
soundTable
soundTable =2×2表时间戳的结果 ________________ ___________ 12.985 - 16.66 10.658 - 12.373{4×3桌}{4×3表}
中最后检测到的区域soundTable
.结果表仍然包含该区域中所有检测到的声音的统计数据。
soundTable。结果{end}
ans=4×3表声音平均得分最高0.79514 0.99941“家畜、宠物”0.80243 0.99831“猫”0.8048 0.99046“喵喵”0.639042
探索受支持的声音类金宝appclassifySound
,使用yamnetGraph
.
读入音频信号并呼叫classifySound
检查按探测时间顺序排列的最可能的声音。
[audioIn, fs] = audioread (“多路音频-16-16-mono-18秒波形”);听起来= classifySound (audioIn fs)
听起来=1×5弦“流”“机枪”“打鼾”“吠叫”“喵喵”
调用classifySound
再接再厉ExcludedSounds
到猫叫
排除声音猫叫
从结果。之前分类为猫叫
现在被归类为猫
,这是它在AudioSet本体中的直接前身。
听起来= classifySound (audioIn fs,“排除声音”,“喵喵”)
听起来=1×5弦“流”“机枪”“打鼾”“吠叫”“猫”
调用classifySound
再次,ExcludedSounds
到猫
.当您排除一个声音时,所有后继者也将被排除。这意味着排除声音猫
也不包括声音猫叫
.原分类为猫叫
现在被归类为家畜、宠物
的直接前身猫
在AudioSet本体中。
听起来= classifySound (audioIn fs,“排除声音”,“猫”)
听起来=1×5弦“流水”“机关枪”“打呼”“吠叫”“家畜、宠物”
调用classifySound
再接再厉ExcludedSounds
到家畜、宠物
.声音课,家畜、宠物
是两者的前身吗吠叫
和猫叫
,所以通过排除它,之前被识别为吠叫
和猫叫
现在都被认为是家畜、宠物
,即动物
.
听起来= classifySound (audioIn fs,“排除声音”,“国内的动物,宠物”)
听起来=1×5弦“流”“机枪”“打鼾”“动物”“动物”
调用classifySound
再接再厉ExcludedSounds
到动物
.声音类动物
没有前辈。
听起来= classifySound (audioIn fs,“排除声音”,“动物”)
听起来=1×3的字符串“流水”“机关枪”“鼾声”
如果你想避免被发现猫叫
和它的前辈,但继续检测相同前辈下的后辈,使用IncludedSounds
选择权yamnetGraph
获取所有受支持类的列表。金宝app删除猫叫
和它的前任类数组中的所有类,然后调用classifySound
一次。
(~、类)= yamnetGraph;classesToInclude = setxor(类,“喵喵”,“猫”,“国内的动物,宠物”,“动物”]);听起来= classifySound (audioIn fs,“IncludedSounds”classesToInclude)
听起来=1×4串“流水”“机关枪”“打鼾”“吠叫”
读入音频信号并收听。
[audioIn, fs] = audioread (“多路音频-16-16-mono-18秒波形”); 声音(音频输入,fs)
调用classifySound
没有输出参数来生成检测到的声音的字云。
classifySound (audioIn fs);
修改的默认参数classifySound
探究对词云的影响。
门槛=0.1;minimumSoundSeparation =0.92;minimumSoundDuration =1.02;classifySound (audioIn fs,...“门槛”阈值,...“最小声音间隔”minimumSoundSeparation,...“MinimumSoundDuration”, minimumSoundDuration);
音频素
- - - - - -音频输入音频输入,指定为单通道信号(列向量)。
数据类型:单一的
|双重的
fs
- - - - - -采样率(Hz)采样率(Hz),指定为正标量。
数据类型:单一的
|双重的
指定可选的逗号分隔的对名称,值
参数。名称
参数名和价值
为对应值。名称
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“阈值”,0.1
“门槛”
- - - - - -报告声音的置信阈值0.35
(默认)|量程(0,1)内的标量报告声音的置信阈值,指定为逗号分隔对,由“门槛”
和(0,1)范围内的标量。
数据类型:单一的
|双重的
“最小声音间隔”
- - - - - -探测到的声音区域之间的最小间隔0.25
(默认)|积极的标量同一探测声音的连续区域之间以秒为单位的最小间隔,指定为逗号分隔的对“最小声音间隔”
和一个正标量。比最小声音间隔更近的区域被合并。
数据类型:单一的
|双重的
“MinimumSoundDuration”
- - - - - -检测到的声音区域的最小持续时间(s)0.5
(默认)|积极的标量检测到的声音区域的最小持续时间(秒),指定为逗号分隔对,由“MinimumSoundDuration”
一个正标量。小于最小持续时间的区域将被丢弃。
数据类型:单一的
|双重的
“IncludedSounds”
- - - - - -声音应该包含在结果中要包含在结果中的声音,指定为逗号分隔对,由“IncludedSounds”
以及字符向量、字符向量的单元数组、字符串标量或字符串数组。使用yamnetGraph
检查和分析所支持的声音金宝appclassifySound
.默认情况下,包括所有支持的声音。金宝app
该选项不能与'
选择。ExcludedSounds
'
数据类型:字符
|一串
|细胞
“ExcludedSounds”
- - - - - -听起来应该排除在结果之外要从结果中排除的声音,指定为逗号分隔的对,由“ExcludedSounds”
和字符向量、字符向量的单元格数组、字符串标量或字符串数组。指定排除的声音时,排除声音的任何后续声音也被排除。使用yamnetGraph
根据AudioSet本体检查有效的声音类及其前辈和后辈。默认情况下,不排除任何声音。
该选项不能与'
选择。IncludedSounds
'
数据类型:字符
|一串
|细胞
“SpecificityLevel”
- - - - - -报告声音的特异性“高”
(默认)|“低”
|“没有”
报告声音的特异性,指定为逗号分隔对,包括“SpecificityLevel”
和“高”
,“低”
或“没有”
.集具体水平
到“高”
使功能强调特定的声音类而不是一般的类别。集具体水平
到“低”
使函数返回最一般的声音类别,而不是特定的声音类。集具体水平
到“没有”
使函数返回最可能的声音,而不考虑其特殊性。
数据类型:字符
|一串
听起来
-声音检测随时间的音频输入在音频输入中随时间检测到的声音,以字符串数组的形式返回,该字符串数组按时间顺序包含检测到的声音。
时间戳
-与检测到的声音相关的时间戳与检测到的声音相关联的时间戳(以秒为单位),以N-by-2矩阵。N是检测到的声音数。每行时间戳
包含检测到的声音区域的开始和结束时间。
结果表
-详细的声音分类结果声音分类的详细结果,以表格的形式返回。表中的行数等于检测到的声音区域的数量。列如下所示。
时间戳
–对应于每个分析区域的时间戳。
结果
–包含三个变量的表格:
声音
–在每个区域检测到声音。
AverageScores
—区域内每个检测到的声音类对应的平均网络分数。
马克斯考尔斯
—区域中每个检测到的声音类对应的最大网络分数。
的classifySound
函数使用YAMNet将音频片段分类为AudioSet本体所描述的声音类。的classifySound
函数对音频进行预处理,使其符合YAMNet要求的格式,并使用使结果更易于解释的常见任务对YAMNet的预测进行后处理。
重采样音频素
至16 kHz,并转换为单精度。
缓冲到l重叠的部分。每个片段为0.98秒,片段重叠0.8575秒。
通过一个单边短时间傅里叶变换每个片段使用一个25毫秒周期Hann窗口10毫秒跳和512点DFT。音频现在由257 × 96 × -表示l其中257为单侧光谱中的箱数,96为谱图中的光谱数。
将复光谱值转换为幅值并丢弃相位信息。
将单边幅度谱通过一个64波段的熔体间隔滤波器组,然后对每个波段的幅度求和。音频现在用96 × 64 × 1 ×l其中96是mel谱图中的光谱数目,64是mel波段的数目,为了与YAMNet模型兼容,这些谱图现在沿着第四维进行间隔。
将mel光谱图转换为对数刻度。
通过96 - 64 - 1 - - - - - - -l通过YAMNet的mel光谱图数组返回l521年——矩阵。YAMNet的输出对应于每个521个声音类随时间变化的置信度得分。
将已识别的重叠50%或更多的声音区域合并为单个区域。区域开始时间是组内所有声音中最小的开始时间。区域结束时间是组内所有声音中最大的结束时间。函数返回时间戳、声音类以及区域内声音类的平均置信度和最大置信度结果表
.
属性可以设置声音分类的特异性级别具体水平
选择。例如,假设在一个声音组中有四个声音类,它们在声音区域的平均分数如下:
水
––0.82817
流
––0.81266
细流,运球
––0.23102
倒
––0.20732
声音类,水
,流
,细流,运球
,倒
位于AudioSet本体中,如图所示:
类中的声音组返回声音类听起来
的输出参数具体水平
:
“高”
(默认)——在此模式下,流
是首选水
,细流,运球
是首选倒
.流
在区域上的平均分数更高,那么函数返回流
在听起来
该区域的产出。
“低”
—在此模式中,返回对区域具有最高平均置信度的声音类的最一般的本体论类别。为细流,运球
和倒
,最普遍的类别是声音的东西
对于流
和水
,最普遍的类别是自然的声音
.因为水
在声音区域上具有最高的平均置信度,则函数返回自然的声音
.
“没有”
——在此模式下,函数返回具有最高平均置信度的声音类,在本例中为水
.
[1] Gemmeke, Jort F., et al. <音频集:用于音频事件的本体和人类标记数据集>。2017 IEEE声学、语音和信号处理国际会议(ICASSP), IEEE, 2017, pp. 776-80。DOI.org (Crossref), doi: 10.1109 / ICASSP.2017.7952261。
Hershey, Shawn, et al. < CNN大规模音频分类架构>。2017 IEEE声学、语音和信号处理国际会议(ICASSP), IEEE, 2017,第131-35页。DOI.org (Crossref), doi: 10.1109 / ICASSP.2017.7952132。
您已经有了abgeänderte版本死亡Beispiels。Möchten您是谁? Änderungen öffnen?
在进入该项目之前,您必须遵守以下规定:
弗伦·德尔奇·艾恩加贝(Führen Sie den Befehl durch Eingabe)在澳大利亚的MATLAB中,韦伯罗(Webbrowser)在MATLAB中的位置比基恩·基恩·MATLAB好。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。