在音频信号进行分类
(
还返回一个表,其中包含结果的细节。听起来
,时间戳
,resultsTable
)= classifySound (___)
classifySound (___)
没有输出参数创建一个词云识别声音的音频信号。
这个函数需要音频工具箱™和深度学习工具箱™。
classifySound
下载并解压缩音频工具箱™YAMNet支持。金宝app
如果音频工具箱支持YAMNet没有安装,然金宝app后第一次调用函数提供了一个链接到下载位置。下载模式,点击链接。将文件解压缩到一个位置在MATLAB的道路。
另外,执行以下命令来下载并解压缩YAMNet模型到你的临时目录中。
downloadFolder = fullfile (tempdir,“YAMNetDownload”);loc = websave (downloadFolder,“https://ssd.mathworks.com/金宝appsupportfiles/audio/yamnet.zip”);YAMNetLocation = tempdir;YAMNetLocation解压(loc)目录(fullfile (YAMNetLocation,“yamnet”))
读入一个音频信号。调用classifySound
返回检测到声音和对应的时间戳。
[audioIn, fs] = audioread (“multipleSounds-16-16-mono-18secs.wav”);(声音、时间戳)= classifySound (audioIn fs);
画出音频信号和标签检测到声音的地区。
t =(0:元素个数(audioIn) 1) / fs;情节(t, audioIn)包含(“时间(s)”)轴([t(1),(结束),1,1])textHeight = 1.1;为idx = 1:元素个数(声音)补丁([时间戳(idx, 1),时间戳(idx, 1),时间戳(idx, 2),时间戳(idx, 2)),…(1,1,1,1),…(0.3010 0.7450 0.9330),…“FaceAlpha”,0.2);文本(时间戳(idx, 1), textHeight + 0.05 * (1) ^ idx,声音(idx))结束
选择一个区域,只听选定的区域。
sampleStamps =地板(时间戳* fs) + 1;soundEvent =3;isolatedSoundEvent = audioIn (sampleStamps (soundEvent 1): sampleStamps (soundEvent 2));声音(isolatedSoundEvent, fs);显示器(“检测到声音= '+声音(soundEvent))
“检测到声音=打鼾”
读入一个音频信号包含多个不同的声音事件。
[audioIn, fs] = audioread (“multipleSounds-16-16-mono-18secs.wav”);
调用classifySound
音频信号和采样率。
(声音,~,soundTable) = classifySound (audioIn fs);
的听起来
字符串数组包含在每个地区最有可能的声音事件。
听起来
听起来=1×5弦“流”“机关枪”“打鼾”“树皮”“喵喵”
的soundTable
包含详细的信息在每个区域中发现,包括得分手段和分析信号最大值。
soundTable
soundTable =5×2表时间戳结果___________ ___________ 0 3.92}{4×3表4.0425 - 6.0025}{3×3表10.658 - 12.373 6.86 - 9.1875{表2×3}}{4×3表12.985 - 16.66{4×3表}
查看最后的检测区域。
soundTable.Results{结束}
ans =4×3表“动物”听起来AverageScores MaxScores ________________________ _________________ ____ 0.80243 - 0.99831 0.79514 - 0.99941“家畜、宠物”“猫”0.8048 - 0.99046 0.6342 - 0.90177“喵喵”
调用classifySound
一次。这一次,IncludedSounds
来动物
这样的函数只保留区域动物
声音检测到类。
(声音、时间戳、soundTable) = classifySound (audioIn fs,…“IncludedSounds”,“动物”);
听起来数组只返回指定为包含时发出的声音。的听起来
现在包含的两个实例数组动物
声明为相对应的区域树皮
和猫叫
之前。
听起来
听起来=1×2字符串“动物”“动物”
声表只包括地区指定的声音类检测。
soundTable
soundTable =2×2表时间戳结果___________ ___________ 12.985 - 16.66 10.658 - 12.373{4×3桌}{4×3表}
查看最后一个检测到的地区soundTable
。结果表还包括统计在该地区的所有检测到的声音。
soundTable.Results{结束}
ans =4×3表“动物”听起来AverageScores MaxScores ________________________ _________________ ____ 0.80243 - 0.99831 0.79514 - 0.99941“家畜、宠物”“猫”0.8048 - 0.99046 0.6342 - 0.90177“喵喵”
探索这类支持的声音金宝appclassifySound
,使用yamnetGraph
。
读入一个音频信号和电话classifySound
检查最可能听起来按时间顺序安排检测。
[audioIn, fs] = audioread (“multipleSounds-16-16-mono-18secs.wav”);听起来= classifySound (audioIn fs)
听起来=1×5弦“流”“机关枪”“打鼾”“树皮”“喵喵”
调用classifySound
再次,ExcludedSounds
来猫叫
排除的声音猫叫
从结果。以前分为部分猫叫
现在是归类为猫
,这是其前任AudioSet本体。
听起来= classifySound (audioIn fs,“ExcludedSounds”,“喵喵”)
听起来=1×5弦“流”“机关枪”“打鼾”“树皮”“猫”
调用classifySound
再次,ExcludedSounds
来猫
。当你排除声音,所有的继任者也排除在外。这意味着扣除的声音猫
也排除了声音猫叫
。最初分为部分猫叫
现在是归类为家畜、宠物
,这是前任猫
AudioSet本体。
听起来= classifySound (audioIn fs,“ExcludedSounds”,“猫”)
听起来=1×5弦“流”“机关枪”“打鼾”“树皮”“家畜、宠物”
调用classifySound
再次,ExcludedSounds
来家畜、宠物
。声音类,家畜、宠物
是前任两个树皮
和猫叫
,所以排除,先前确定的声音树皮
和猫叫
现在都是确定为的前身吗家畜、宠物
,这是动物
。
听起来= classifySound (audioIn fs,“ExcludedSounds”,“国内的动物,宠物”)
听起来=1×5弦“流”“机关枪”“打鼾”“动物”“动物”
调用classifySound
再次,ExcludedSounds
来动物
。声音类动物
没有前辈。
听起来= classifySound (audioIn fs,“ExcludedSounds”,“动物”)
听起来=1×3的字符串“流”“机关枪”“打鼾”
如果你想避免检测猫叫
和它的前辈,但继续检测的继任者在同样的前辈,使用IncludedSounds
选择。调用yamnetGraph
所有支持的类的列表。金宝app删除猫叫
和它的前辈从数组中所有的类,然后调用classifySound
一次。
(~、类)= yamnetGraph;classesToInclude = setxor(类,“喵喵”,“猫”,“国内的动物,宠物”,“动物”]);听起来= classifySound (audioIn fs,“IncludedSounds”classesToInclude)
听起来=1×4弦“流”“机关枪”“打鼾”“树皮”
读入一个音频信号,听它。
[audioIn, fs] = audioread (“multipleSounds-16-16-mono-18secs.wav”);声音(audioIn fs)
调用classifySound
没有输出参数来生成一个词云检测的声音。
classifySound (audioIn fs);
修改默认的参数classifySound
探讨影响“云”这个词。
阈值=0.1;minimumSoundSeparation =0.92;minimumSoundDuration =1.02;classifySound (audioIn fs,…“阈值”阈值,…“MinimumSoundSeparation”minimumSoundSeparation,…“MinimumSoundDuration”,minimumSoundDuration);
audioIn
- - - - - -音频输入音频输入,指定为一个一个频道的信号(列向量)。
数据类型:单
|双
fs
- - - - - -采样率(赫兹)采样率在赫兹,指定为一个积极的标量。
数据类型:单
|双
指定可选的逗号分隔条名称,值
参数。的名字
参数名称和吗价值
相应的价值。的名字
必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家
。
“阈值”,0.1
“阈值”
- - - - - -置信阈值报告听起来0.35
(默认)|标量的范围(0,1)报告听起来,信心阈值指定为逗号分隔组成的“阈值”
和一个标量范围(0,1)。
数据类型:单
|双
“MinimumSoundSeparation”
- - - - - -最小分离检测到声音地区(s)0.25
(默认)|积极的标量最小连续分离地区检测到相同的声音在几秒钟内,指定为逗号分隔组成的“MinimumSoundSeparation”
和积极的标量。区域小于最小声音分离合并。
数据类型:单
|双
“MinimumSoundDuration”
- - - - - -最小时间检测到声音区域(年代)0.5
(默认)|积极的标量最小时间秒,发现声音地区指定为逗号分隔组成的“MinimumSoundDuration”
和积极的标量。地区比最低的声音短持续时间被丢弃。
数据类型:单
|双
“IncludedSounds”
- - - - - -声音包括在结果听起来包括在结果,指定为逗号分隔组成的“IncludedSounds”
一个特征向量,单元阵列特征向量,标量字符串或字符串数组。使用yamnetGraph
检查和分析支持的声音金宝appclassifySound
。默认情况下,所有支持的声音。金宝app
这个选项不能被使用的”
选择。ExcludedSounds
”
数据类型:字符
|字符串
|细胞
“ExcludedSounds”
- - - - - -声音从结果排除声音从结果,排除指定为逗号分隔组成的“ExcludedSounds”
一个特征向量,单元阵列特征向量,标量字符串或字符串数组。当你指定一个排除声音,排除的任何继任者声音也排除在外。使用yamnetGraph
检查有效声音类和他们的前辈们根据AudioSet本体和接班人。默认情况下,不排除声音。
这个选项不能被使用的”
选择。IncludedSounds
”
数据类型:字符
|字符串
|细胞
“SpecificityLevel”
- - - - - -特异性的报告听起来“高”
(默认)|“低”
|“没有”
特异性的报道声音,指定为逗号分隔组成的“SpecificityLevel”
和“高”
,“低”
,或“没有”
。集SpecificityLevel
来“高”
使函数强调特定声音类而不是一般类别。集SpecificityLevel
来“低”
函数返回的特定声音的最一般的声音类别而不是类。集SpecificityLevel
来“没有”
函数返回最可能的声音,无论其特异性。
数据类型:字符
|字符串
听起来
随着时间的推移——听起来发现在音频输入听起来发现随着时间的推移在音频输入,返回一个字符串数组,其中包含按时间顺序检测到的声音。
时间戳
——时间戳与检测到的声音(s)时间戳与发现听起来在几秒钟内,作为一个返回N2矩阵。N是检测到的数量的声音。每一行的时间戳
包含检测到声音的开始和结束时间。
resultsTable
——声音分类的详细结果详细的声音分类的结果,作为一个表返回。表中的行数等于良好的地区发现的数量。列如下。
时间戳
——时间戳相应区域分析。
结果
——表与三个变量:
听起来
——听起来在每个地区发现。
AverageScores
——意味着网络分数对应于每个检测到声音类。
MaxScores
——最大网络分数对应于该地区的每个检测到声音类。
的classifySound
函数使用YAMNet分类音频段划分为类AudioSet本体所描述的声音。的classifySound
函数进行预处理的音频,在YAMNet所需的格式和后处理YAMNet的预测与常见的任务,使结果更解释。
重新取样audioIn
16千赫,单精度。
缓冲到l重叠的部分。每一段0.98秒和0.8575秒的片段重叠。
每一部分通过一个片面的短时傅里叶变换使用25 ms周期性损害窗口10 ms跳和DFT 512点。音频目前由一个257 - - - 96l数组,其中257是片面的光谱和96的箱子数量的光谱谱图。
把复杂的光谱值大小和丢弃相位信息。
片面的级频谱穿过64 -带mel-spaced滤波器银行然后和每个乐队的大小。音频现在代表由96 - 64 - 1 - - - - - - -l数组,其中96是梅尔的光谱谱图的数量,64是梅尔乐队的数量,谱图现在是间隔在第四维兼容YAMNet模型。
梅尔·色转换为对数尺度。
通过96 - 64 - 1 - - - - - - -l返回一个数组通过YAMNet梅尔·色的l521年——矩阵。YAMNet对应的输出信心得分为每个521声音类。
通过每个521信心的信号通过一个移动平均滤波器的窗口长度7。
的信号通过一个移动的中值滤波窗口长度为3。
信心的信号转换为二进制面具使用指定的阈值
。
短于丢弃任何声音MinimumSoundDuration
。
合并区域拉近MinimumSoundSeparation
。
巩固了良好的区域重叠50%以上为单一的地区。该地区开始时间是最小的开始时间的声音。该地区结束时间是最大的所有声音的结束时间。函数返回时间戳、声音类和均值和最大信心的声音类内的地区resultsTable
。
你可以设置你的声音的特异性水平分类使用SpecificityLevel
选择。例如,假设有四个声音类健康组与下列相应的平均成绩在声音地区:
水
- - -0.82817
流
- - -0.81266
细流,运球
- - -0.23102
倒
- - -0.20732
声音类,水
,流
,细流,运球
,倒
位于AudioSet本体所表示的图:
函数返回的声音类组的声音听起来
输出参数依据SpecificityLevel
:
“高”
(默认),在这种模式下,流
是首选水
,细流,运球
是首选倒
。流
对该地区平均评分更高,那么函数返回流
在听起来
输出为该地区。
“低”
,在这种模式下,声音类的最一般的本体论范畴的意思是最高的信心在返回该地区。为细流,运球
和倒
,最一般的类别声音的东西
。为流
和水
,最一般的类别自然的声音
。因为水
意味着最高信心声音地区,函数返回自然的声音
。
“没有”
——在这种模式下,函数返回的声音类意味着信心得分最高,而在这个例子中水
。
[1]Gemmeke, Jort F。,et al. “Audio Set: An Ontology and Human-Labeled Dataset for Audio Events.”2017年IEEE国际会议音响、演讲和信号处理(ICASSP)IEEE 2017,页776 - 80。DOI.org (Crossref),doi: 10.1109 / ICASSP.2017.7952261。
[2]好时,肖恩,et al。”CNN大规模的音频分类架构。”2017年IEEE国际会议音响、演讲和信号处理(ICASSP),2017岁的IEEE 131 - 35页。DOI.org (Crossref),doi: 10.1109 / ICASSP.2017.7952132。
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。