主要内容

audioDataAugmenter

增加音频数据

描述

扩大你的音频数据集使用audio-specific增强技术转移,时标修改,时间改变,噪音,和音量控制。您可以创建级联或平行增加管道应用多个算法确定性或概率。

创建

描述

8月= audioDataAugmenter ()创建一个音频数据增量对象默认属性值。

例子

8月= audioDataAugmenter (名称,值)指定默认的属性8月使用一个或多个名称参数。

属性

全部展开

增加管道

增强模式,指定为“顺序”“独立”

  • “顺序”——增强算法应用顺序(系列)。

  • “独立”——增强算法应用独立(并行)。

数据类型:字符|字符串

增加参数,指定为“随机”“指定”

  • “随机”——增强算法应用概率使用概率参数和参数。

    例如,要创建一个audioDataAugmenter使用加速因子之间,适用时间拉伸0.51.5以60%的概率,在命令窗口中输入如下:

    8月= audioDataAugmenter (“AugmentationParameterSource”,“随机”,“TimeStretchProbability”,0.6,“SpeedupFactorRange”[0.5,1.5]);
    当时间拉伸,加速的因素是来自均匀分布集中在1(范围)的均值最低的0.5,最高1.5

  • “指定”使用一个逻辑——增强算法应用确定性参数并指定参数值。例如,要创建一个audioDataAugmenter应用时间拉伸使用1.5加速因子以100%的概率,在命令窗口中输入如下:

    8月= audioDataAugmenter (“AugmentationParameterSource”,“指定”,“ApplyTimeStretch”,真的,“SpeedupFactor”,1.5);

数据类型:字符|字符串

增强信号的输出,指定为一个正整数。

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

段时间

概率的应用时间,指定为一个标量在区间[0,1]。集的概率1申请时间拉伸每一次你的电话增加。集的概率0跳过一次拉伸每一次你的电话增加

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”AugmentationMode“顺序”

数据类型:|

指定时间范围延伸加速因子,作为双元素行向量积极不减少的值。

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

申请时间,指定为真正的

依赖关系

要启用这个特性,设置AugmentationParameterSource“指定”

数据类型:逻辑

时间加速因素,指定为一个标量或矢量的积极的价值观。

依赖关系

要启用这个特性,设置AugmentationParameterSource“指定”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

改变音高

应用概率转移,指定为一个标量范围[0,1]。集的概率1应用音高变化每一次你的电话增加。集的概率0跳过音调变化每一次你的电话增加

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”AugmentationMode“顺序”

数据类型:|

范围的音高变化半音来,指定为一个双元素不减少的值的行向量。

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

应用转变,指定为真正的

依赖关系

要启用这个特性,设置AugmentationParameterSource“指定”

数据类型:逻辑

音高变化半音来,指定为一个真正的标量或矢量。

依赖关系

要启用这个特性,设置AugmentationParameterSource“指定”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

控制体积

应用概率音量控制,指定为一个标量范围[0,1]。集的概率1将音量控制每一次你的电话增加。集的概率0跳过音量控制每一次你的电话增加

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”AugmentationMode“顺序”

数据类型:|

音量增益在dB,指定为一个双元素不减少的值的行向量。

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

应用体积增加,指定为真正的

依赖关系

要启用这个特性,设置AugmentationParameterSource“指定”

数据类型:逻辑

体积增加dB,指定为一个标量或矢量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

添加噪声

应用高斯白噪声的概率,指定为一个标量在区间[0,1]。集的概率1添加噪声每一次你的电话增加。集的概率0跳过添加噪声每一次你的电话增加

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”AugmentationMode“顺序”

数据类型:|

分贝的噪音增加信噪比范围指定为一个双元素不减少的值的行向量。

依赖关系

要启用这个特性,设置AugmentationParameterSource“范围”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

应用高斯白噪声,指定为真正的

依赖关系

要启用这个特性,设置AugmentationParameterSource“指定”

数据类型:逻辑

在dB噪音增加信噪比,指定为一个标量或矢量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

改变时间

应用概率时移,指定为一个标量范围[0,1]。集的概率1申请时间将每一次你的电话增加。将属性设置为0跳过时间位移每次你打电话增加

这种适用于一个圆形的时域音频数据转移。

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”AugmentationMode“顺序”

数据类型:|

时移在几秒钟内,指定为一个双元素不减少的值的行向量。

依赖关系

要启用这个特性,设置AugmentationParameterSource“随机”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

申请时移,指定为真正的

依赖关系

要启用这个特性,设置AugmentationParameterSource“指定”

这种适用于一个圆形的时域音频数据转移。

数据类型:逻辑

时移在几秒钟内,指定为一个标量或矢量。

依赖关系

要启用这个特性,设置AugmentationParameterSource“指定”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

对象的功能

addAugmentationMethod 添加自定义增强方法
removeAugmentationMethod 删除自定义增强方法
增加 增加音频数据
setAugmenterParams 增强算法的设置参数
getAugmenterParams 得到参数的增强算法

例子

全部折叠

读入一个音频信号,听它。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);声音(audioIn fs)

创建一个audioDataAugmenter对象,适用时间延伸,音量控制和时间转移级联。应用每一个对应的概率为80%。集NumAugmentations5输出五个独立增强信号。跳过音调变化和噪声添加每增加,设置相应的概率0。为每个相关定义参数范围增强算法。

增量= audioDataAugmenter (“AugmentationMode”,“顺序”,“NumAugmentations”5,“TimeStretchProbability”,0.8,“SpeedupFactorRange”[1.3,1.4],“PitchShiftProbability”0,“VolumeControlProbability”,0.8,“VolumeGainRange”,5,5],“AddNoiseProbability”0,“TimeShiftProbability”,0.8,“TimeShiftRange”,(-500 e - 3500 e - 3])
增量= audioDataAugmenter属性:AugmentationMode:“顺序”AugmentationParameterSource:“随机”NumAugmentations: 5 TimeStretchProbability: 0.8000 SpeedupFactorRange: [1.3000 - 1.4000] PitchShiftProbability: 0 VolumeControlProbability: 0.8000 VolumeGainRange: 5 [5] AddNoiseProbability: 0 TimeShiftProbability: 0.8000 TimeShiftRange: [-0.5000 - 0.5000]

调用增加在创建5对应的音频。增强音频返回表中的变量音频AugmentationInfo。定义的表中的行数NumAugmentations

data =增加(增压器、audioIn fs)
data =5×2表x1双音频AugmentationInfo _________________ ___________ {685056} 1 x1 struct {685056 x1双}1 x1 struct {505183 x1双}1 x1 struct {685056 x1双}1 x1 struct {490728 x1双}1 x1结构

在当前增加管道,增加参数随机分配在指定的范围内。确定准确的参数用于丰胸,检查AugmentationInfo

augmentationToInspect =4;data.AugmentationInfo (augmentationToInspect)
ans =结构体字段:TimeShift SpeedupFactor: 1 VolumeGain: 4.3399: 0.4502

听增强检查。情节的时间表示原始和增强信号。

增加= data.Audio {augmentationToInspect};声音(增大,fs) t =(0:(元素个数(audioIn) 1)) / fs;taug =(0:(元素个数(增加)1))/ fs;情节(t, audioIn taug增大)传说(“原始音频”,“增强音频”)ylabel (“振幅”)包含(“时间(s)”)

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表原始音频,音频增强。

读入一个音频信号,听它。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);声音(audioIn fs)

创建一个audioDataAugmenter对象,适用时间延伸,音高变化,噪声级联的腐败。指定时间加速因素0.9,1.1,1.2。指定半音来的音调变化2,1,1,2。指定腐败噪声信噪比10dB和15dB。

增量= audioDataAugmenter (“AugmentationMode”,“顺序”,“AugmentationParameterSource”,“指定”,“SpeedupFactor”(0.9,1.1,1.2),“ApplyTimeStretch”,真的,“ApplyPitchShift”,真的,“SemitoneShift”,(2,1,1,2),“信噪比”(10、15),“ApplyVolumeControl”假的,“ApplyTimeShift”假)
增量= audioDataAugmenter属性:AugmentationMode:“顺序”AugmentationParameterSource:“指定”ApplyTimeStretch: 1 SpeedupFactor: [0.9000 1.1000 1.2000] ApplyPitchShift: 1 SemitoneShift: [2 1 1 2] ApplyVolumeControl: 0 ApplyAddNoise: 1信噪比:15 [10]ApplyTimeShift: 0

调用增加在音频创建24扩增。扩增代表指定的每一个组合增加参数( 3 × 4 × 2 = 24 )。

data =增加(增压器、audioIn fs)
data =24×2表x1双音频AugmentationInfo _________________ ___________ {761243} 1 x1 struct {622888 x1双}1 x1 struct {571263 x1双}1 x1 struct {761243 x1双}1 x1 struct {622888 x1双}1 x1 struct {571263 x1双}1 x1 struct {761243 x1双}1 x1 struct {622888 x1双}1 x1 struct {571263 x1双}1 x1 struct {761243 x1双}1 x1 struct {622888 x1双}1 x1 struct {571263 x1双}1 x1 struct {761243 x1双}1 x1 struct {622888 x1双}1 x1 struct {571263 x1双}1 x1 struct {761243 x1双}1 x1 struct⋮

你可以检查每个增加使用的参数配置AugmentationInfo表变量。

augmentationToInspect =1;data.AugmentationInfo (augmentationToInspect)
ans =结构体字段:SpeedupFactor: 0.9000 SemitoneShift: 2信噪比:10

听增强检查。绘制原始和增强信号的时域表示。

增加= data.Audio {augmentationToInspect};声音(增大,fs) t =(0:(元素个数(audioIn) 1)) / fs;taug =(0:(元素个数(增加)1))/ fs;情节(t, audioIn taug增大)传说(“原始音频”,“增强音频”)ylabel (“振幅”)包含(“时间(s)”)

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表原始音频,音频增强。

读入一个音频信号,听它。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);

创建一个audioDataAugmenter对象,应用噪声腐败,在并行分支和时间变化。随机噪声的腐败分支,应用噪声的信噪比范围0dB来20.dB。分支转移,随机应用——时间变化范围300年女士,300年为每个分支女士申请增加2倍,4总扩增。

增量= audioDataAugmenter (“AugmentationMode”,“独立”,“AugmentationParameterSource”,“随机”,“NumAugmentations”2,“ApplyTimeStretch”假的,“ApplyPitchShift”假的,“ApplyVolumeControl”假的,“SNRRange”(0,20),“TimeShiftRange”,(-300 e - 3300 e - 3])
增量= audioDataAugmenter属性:AugmentationMode:“独立”AugmentationParameterSource:“随机”NumAugmentations: 2 ApplyTimeStretch: 0 ApplyPitchShift: 0 ApplyVolumeControl: 0 ApplyAddNoise: 1 SNRRange: 20 [0] ApplyTimeShift: 1 TimeShiftRange: [-0.3000 - 0.3000]

调用增加在音频创建3扩增。

data =增加(增压器、audioIn fs);

你可以检查每个增加使用的参数配置AugmentatioInfo表变量。

augmentationToInspect =4;data.AugmentationInfo {augmentationToInspect}
ans =结构体字段:TimeShift: 0.0016

你检查听音频。绘制原始和增强信号的时域表示。

增加= data.Audio {augmentationToInspect};声音(增大,fs) t =(0:(元素个数(audioIn) 1)) / fs;taug =(0:(元素个数(增加)1))/ fs;情节(t, audioIn taug增大)传说(“原始音频”,“增强音频”)ylabel (“振幅”)包含(“时间(s)”)

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表原始音频,音频增强。

读入一个音频信号,听它。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);

创建一个audioDataAugmenter适用对象,音量控制,噪声腐败,在并行分支和时间变化。

增量= audioDataAugmenter (“AugmentationMode”,“独立”,“AugmentationParameterSource”,“指定”,“ApplyTimeStretch”假的,“ApplyPitchShift”假的,“VolumeGain”2,“信噪比”0,“TimeShift”,2)
增量= audioDataAugmenter属性:AugmentationMode:“独立”AugmentationParameterSource:“指定”ApplyTimeStretch: 0 ApplyPitchShift: 0 ApplyVolumeControl: 1 VolumeGain: 2 ApplyAddNoise: 1信噪比:0 ApplyTimeShift: 1 TimeShift: 2

调用增加在音频创建3扩增。

data =增加(增压器、audioIn fs)
data =3×2表x1双音频AugmentationInfo _________________ ___________ {685056} {1 x1 struct} {685056 x1双}{1 x1 struct} {685056 x1双}{1 x1 struct}

你可以检查每个增加使用的参数配置AugmentatioInfo表变量。

augmentationToInspect =3;data.AugmentationInfo {augmentationToInspect}
ans =结构体字段:TimeShift: 2

你检查听音频。画出原始和增强信号的时域表示。

增加= data.Audio {augmentationToInspect};声音(增大,fs) t =(0:(元素个数(audioIn) 1)) / fs;taug =(0:(元素个数(增加)1))/ fs;情节(t, audioIn taug增大)传说(“原始音频”,“增强音频”)ylabel (“振幅”)包含(“时间(s)”)

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表原始音频,音频增强。

audioDataAugmenter金宝app支持多个工作流扩充你的数据存储,包括:

  • 离线增大

  • 增加使用高数组

  • 增加使用变换数据存储

在每一个工作流程,首先创建一个音频数据存储指向你的音频数据。在本例中,您创建一个音频数据存储指向音频样本包含音频工具箱™。在数据集计算文件的数量。

文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹)
广告= audioDatastore属性:文件:{“…\ matlab工具箱\ \音响\ samples \ Ambiance-16-44p1-mono-12secs.wav”;“…\ matlab工具箱\ \音响\ samples \ AudioArray-16-16-4channels-20secs.wav”;“……\工具箱\音响\ \ ChurchImpulseResponse-16-44p1-mono-5secs样品。wav”……和26}AlternateFileSystemRoots: {} OutputDataType:“双”标签:{}
numFilesInDataset =元素个数(ADS.Files)
numFilesInDataset = 29

创建一个audioDataAugmenter应用随机序列扩增。集NumAugmentations2

8月= audioDataAugmenter (“NumAugmentations”,2)
8月= audioDataAugmenter属性:AugmentationMode:“顺序”AugmentationParameterSource:“随机”NumAugmentations: 2 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 - 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [2 2] VolumeControlProbability: 0.5000 VolumeGainRange: 3 [3] AddNoiseProbability: 0.5000 SNRRange: 10 [0] TimeShiftProbability: 0.5000 TimeShiftRange: [-0.0050 - 0.0050]

离线增大

增加音频数据集,创建两个对应的每个文件然后写对应的WAV文件。

(audioIn hasdata(广告),信息]=阅读(广告);data =增加(8月audioIn info.SampleRate);[~,fn] = fileparts (info.FileName);i = 1:尺寸(数据,1)augmentedAudio = data.Audio {};%如果增大造成了音频信号值1和1之外,%规范化写作时避免剪切的音频信号。如果马克斯(abs (augmentedAudio), [],“所有”)> 1 augmentedAudio = augmentedAudio / max (abs (augmentedAudio), [],“所有”);结束audiowrite (sprintf (“% s_aug % d.wav”,fn)、augmentedAudio info.SampleRate)结束结束

创建一个audioDatastore指向增广数据集和确认文件数量数据集原始文件数量的两倍。

augmentedADS = audioDatastore (pwd)
augmentedADS = audioDatastore属性:文件:{“…\ \ audio-ex28074079 \ Ambiance-16-44p1-mono-12secs_aug1.wav例子”;“……\ \ audio-ex28074079 \ Ambiance-16-44p1-mono-12secs_aug2.wav例子”;“…\ \ audio-ex28074079 \ AudioArray-16-16-4channels-20secs_aug1例子。wav”……和55}AlternateFileSystemRoots: {} OutputDataType:“双”标签:{}
numFilesInAugmentedDataset =元素个数(augmentedADS.Files)
numFilesInAugmentedDataset = 58

增加使用高数组

当增加一个数据集使用高数组,输入数据的增量应该在一个一致的采样率。子集的原始音频数据集只包含文件44.1 kHz的采样率。大多数数据集已经清洗有一致的采样率。

keepFile = cellfun (@ (x)包含(x,“44 p1”),ADS.Files);ads44p1 =子集(广告,keepFile);fs = 44.1 e3;

转换音频高数据存储到一个数组中。数组是只有当您显式地请求它们使用评估收集。MATLAB®自动优化计算排队通过最小化通过数据的数量。如果你有并行计算工具箱™,你可以计算分布到多台机器。音频数据的表示1高单元阵列,在音频数据存储文件的数量。

adsTall =高(ads44p1)
开始平行池(parpool)使用“本地”概要文件…连接到平行池(工人数量:6)。adsTall = M×1高细胞数组{539648×1双}{227497×1双}{8000×1双}{685056×1双}{882688×2双}{1115760×2双}{505200×2双}{3195904×2双}::::

定义一个cellfun函数,以便增强应用于高数组的每一个细胞。调用收集评价高的数组。

augTall = cellfun (@ (x)增加(8月x, fs), adsTall,“UniformOutput”、假);augmentedDataset =收集(augTall)
评估高表达式使用并行池“当地”:通过1对1:在1分34秒内完成评估在1分34秒内完成
augmentedDataset =12×1单元阵列{2×2表}{2×2表}{2×2表}{2×2表}{2×2表}{2×2表}{2×2表}{2×2表}{2×2表}{2×2表}{2×2表}}{2×2表

增强数据集作为一个返回numFiles1单元阵列,numFiles在数据存储文件的数量。单元阵列的每个元素numAugmentationsPerFile表2,numAugmentationsPerFile是数量的扩增返回的每个文件。

numFiles =元素个数(augmentedDataset)
numFiles = 12
numAugmentationsPerFile =大小(augmentedDataset {1}, 1)
numAugmentationsPerFile = 2

增加使用变换数据存储

您可以执行在线数据增加时使用转换训练你的机器学习应用程序数据存储。调用变换创建一个新的数据存储应用数据增大而读。

transformADS =变换(广告,@ (x,信息)增加(8月,x,信息),“IncludeInfo”,真正的)
transformADS = TransformedDatastore属性:UnderlyingDatastore: [1×1 audioDatastore]转换:{@ (x,信息)增加(8月,x,信息)}IncludeInfo: 1

调用返回从变换增强第一文件数据存储。

augmentedRead =阅读(transformADS)
augmentedRead =2×2表音频AugmentationInfo _________________ ___________{539648×1双}[1×1 struct]{586683×1双}(1×1结构)

您可以扩展的功能audioDataAugmenter通过添加自定义增强方法。

读入一个音频信号,听它。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);声音(audioIn fs)

创建一个audioDataAugmenter对象。设置应用白噪声的概率0

增量= audioDataAugmenter (“AddNoiseProbability”,0)
增量= audioDataAugmenter属性:AugmentationMode:“顺序”AugmentationParameterSource:“随机”NumAugmentations: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 - 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [2 2] VolumeControlProbability: 0.5000 VolumeGainRange: 3 [3] AddNoiseProbability: 0 TimeShiftProbability: 0.5000 TimeShiftRange: [-0.0050 - 0.0050]

指定一个自定义的扩展算法,适用于粉红噪声。的AddPinkNoise算法被添加到增压器属性。

algorithmName =“AddPinkNoise”;algorithmHandle = @ (x) x + pinknoise(大小(x),“喜欢”,x);addAugmentationMethod(增压器、algorithmName algorithmHandle)增压器
增量= audioDataAugmenter属性:AugmentationMode:“顺序”AugmentationParameterSource:“随机”NumAugmentations: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 - 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [2 2] VolumeControlProbability: 0.5000 VolumeGainRange: 3 [3] AddNoiseProbability: 0 TimeShiftProbability: 0.5000 TimeShiftRange: [-0.0050 - 0.0050] AddPinkNoiseProbability: 0.5000

设置添加粉红噪声的概率1

增压器。AddPinkNoiseProbability = 1
增量= audioDataAugmenter属性:AugmentationMode:“顺序”AugmentationParameterSource:“随机”NumAugmentations: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 - 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [2 2] VolumeControlProbability: 0.5000 VolumeGainRange: 3 [3] AddNoiseProbability: 0 TimeShiftProbability: 0.5000 TimeShiftRange: [-0.0050 - 0.0050] AddPinkNoiseProbability: 1

增加原始信号,听结果。检查参数的增强算法。

data =增加(增压器、audioIn fs);声音(data.Audio {1}, fs) data.AugmentationInfo (1)
ans =结构体字段:SpeedupFactor: 1 SemitoneShift: 0 VolumeGain: 2.4803 TimeShift: -0.0022 AddPinkNoise:“应用”

情节的梅尔·色和增强信号。

melSpectrogram (audioIn fs)标题(原始信号的)

图包含一个坐标轴对象。标题为原始信号的坐标轴对象包含一个类型的对象的形象。

melSpectrogram (data.Audio {1}, fs)标题(增强信号的)

图包含一个坐标轴对象。坐标轴对象与标题增强信号包含一个类型的对象的形象。

算法

全部展开

audioDataAugmenter对象允许您配置您的增大管道作为确定性或使用的概率AugmentationParameterSource财产。你也可以选择应用扩增串联或并联使用AugmentationMode财产。以下部分描述管道可以创建和适用的属性为每个架构。

引用

[1]班子、贾斯汀和胡安-帕布鲁贝罗。“卷积神经网络和数据增加环境声音分类。”IEEE信号处理信件。24卷,第三期,2017年。

扩展功能

版本历史

介绍了R2019b