audioDataAugmenter
增强音频数据
描述
使用特定于音频的增强技术(如音调移动、时间刻度修改、时间移动、噪声添加和音量控制)来扩大音频数据集。您可以创建级联或并行的扩展管道,以确定或概率地应用多个算法。
创建
描述
使用默认属性值创建音频数据增强器对象。8月
= audioDataAugmenter ()
的非默认属性8月
= audioDataAugmenter (名称,值
)8月
使用一个或多个名称-值参数。
属性
增加管道
AugmentationMode
- - - - - -增强模式
“顺序”
(默认)|“独立”
增强模式,指定为“顺序”
或“独立”
.
“顺序”
增强算法是按顺序(串联)应用的。“独立”
增强算法是独立(并行)应用的。
数据类型:字符
|字符串
AugmentationParameterSource
- - - - - -增强参数的来源
“随机”
(默认)|“指定”
增强参数的来源,指定为“随机”
或“指定”
.
“随机”
—使用概率参数和范围参数概率地应用增强算法。例如,创建一个
audioDataAugmenter
使用加速因子进行时间拉伸0.5
而且1.5
以60%的概率,在命令窗口中输入以下内容:aug = audioDataAugmenter(“AugmentationParameterSource”,“随机”,...“TimeStretchProbability”, 0.6,...“SpeedupFactorRange”[0.5, 1.5]);
0.5
最大值为1.5
.“指定”
—使用逻辑参数和指定参数值确定地应用增强算法。例如,创建一个audioDataAugmenter
它使用a进行时间拉伸1.5
以100%的概率,在命令窗口中输入以下内容:aug = audioDataAugmenter(“AugmentationParameterSource”,“指定”,...“ApplyTimeStretch”,真的,...“SpeedupFactor”, 1.5);
数据类型:字符
|字符串
NumAugmentations
- - - - - -要输出的增强信号数
1
(默认)|正整数
要输出的增强信号数,指定为正整数。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
段时间
TimeStretchProbability
- - - - - -应用时间延伸的概率
0.5
(默认)|范围[0,1]中的标量
应用时间拉伸的概率,指定为范围[0,1]中的标量。将概率设置为1
每次打电话都拉长时间增加
.将概率设置为0
跳过每次打电话都要拉伸的时间增加
.
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
而且AugmentationMode来“顺序”
.
数据类型:单
|双
SpeedupFactorRange
- - - - - -时间扩展加速因子范围
(0.8 - 1.2)
(默认)|正的非递减值的两元行向量
时间拉伸加速因子的范围,指定为两个元素的正的非递减值行向量。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
ApplyTimeStretch
- - - - - -延长时间
真正的
(默认)|假
SpeedupFactor
- - - - - -时间拉伸加速因子
0.8
(默认)|实正标量|实正向量
时间扩展加速因子,指定为实数正数值的标量或矢量。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“指定”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
改变音高
PitchShiftProbability
- - - - - -应用螺距移位的概率
0.5
(默认)|范围[0,1]中的标量
应用pitch shift的概率,指定为范围[0,1]中的标量。将概率设置为1
每次通话时应用音调变换增加
.将概率设置为0
每次打电话都跳过音高变换增加
.
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
而且AugmentationMode来“顺序”
.
数据类型:单
|双
SemitoneShiftRange
- - - - - -音高变化范围(半音)
(2, 2)
(默认)|非递减值的两元行向量
半音音高移位的范围,指定为两个元素的无减值行向量。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
ApplyPitchShift
- - - - - -应用俯仰位移
真正的
(默认)|假
SemitoneShift
- - - - - -音高变化(半音)
3
(默认)|真正的标量|真正的向量
半音的音高位移,用实标量或矢量表示。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“指定”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
控制体积
VolumeControlProbability
- - - - - -应用音量控制的概率
0.5
(默认)|范围[0,1]中的标量
应用音量控制的概率,指定为范围[0,1]中的标量。将概率设置为1
每次通话时应用音量控制增加
.将概率设置为0
每次通话都跳过音量控制增加
.
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
而且AugmentationMode来“顺序”
.
数据类型:单
|双
VolumeGainRange
- - - - - -体积增益范围(dB)
(3、3)
(默认)|非递减值的两元行向量
体积增益的范围(以dB为单位),指定为非递减值的两元素行向量。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
ApplyVolumeControl
- - - - - -应用体积增益
真正的
(默认)|假
VolumeGain
- - - - - -体积增益(dB)
3
(默认)|标量|向量
音量增益(以dB为单位),指定为标量或矢量。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
添加噪声
AddNoiseProbability
- - - - - -应用噪声加法的概率
0.5
(默认)|范围[0,1]中的标量
应用高斯白噪声加法的概率,指定为范围[0,1]中的标量。将概率设置为1
每次你打电话的时候都增加噪音增加
.将概率设置为0
避免每次通话都增加噪音增加
.
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
而且AugmentationMode来“顺序”
.
数据类型:单
|双
SNRRange
- - - - - -噪声添加信噪比范围(dB)
[0, 10]
(默认)|非递减值的两元行向量
噪声添加信噪比的范围,以dB为单位,指定为非递减值的两元素行向量。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“范围”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
ApplyAddNoise
- - - - - -添加噪音
真正的
(默认)|假
信噪比
- - - - - -噪声附加信噪比(dB)
5
(默认)|标量|向量
噪声添加信噪比(以dB为单位),指定为标量或向量。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
改变时间
TimeShiftProbability
- - - - - -应用时移的概率
0.5
(默认)|范围[0,1]中的标量
应用时移的概率,指定为范围[0,1]中的标量。将概率设置为1
每次通话时应用时移增加
.将属性设置为0
每次打电话都跳过时间转换增加
.
时移对时域音频数据应用循环移位。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
而且AugmentationMode来“顺序”
.
数据类型:单
|双
TimeShiftRange
- - - - - -时移范围(秒)
(5 e - 3, 5 e3)
(默认)|非递减值的两元行向量。
时移范围(以秒为单位),指定为非递减值的两元素行向量。
依赖关系
若要启用此属性,请设置AugmentationParameterSource来“随机”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
ApplyTimeShift
- - - - - -应用时移
真正的
(默认)|假
TimeShift
- - - - - -时移(s)
5 e - 3
(默认)|标量|向量
以秒为单位的时移,指定为标量或矢量。
依赖关系
若要启用此属性,请设置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%的概率应用每一个增强。集NumAugmentations
来5
输出五个独立的增强信号。为了跳过每一次增强的音调转移和噪声添加,将各自的概率设置为0
.为每个相关的增强算法定义参数范围。
augmenter = 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])
augmenter = audioDataAugmenter with properties: AugmentationMode: "sequential" AugmentationParameterSource: " random " numaugments: 5 TimeStretchProbability: 0.8000 SpeedupFactorRange: [1.3000 1.4000] PitchShiftProbability: 0 VolumeControlProbability: 0.8000 volumeainrange: [-5 5 5] AddNoiseProbability: 0 timshiftprobability: 0.8000 TimeShiftRange: [-0.5000 0.5000]
调用增加
在音频上创建5个增强。增强音频在一个带有变量的表中返回音频
而且AugmentationInfo
.表中的行数由NumAugmentations
.
data = augment(augmenter,audioIn,fs)
data =5×2表音频增强信息_________________ ________________ {685056x1 double} 1x1 struct {685056x1 double} 1x1 struct {505183x1 double} 1x1 struct {685056x1 double} 1x1 struct {490728x1 double} 1x1 struct
在当前的增强管道中,增强参数在指定范围内随机分配。要确定用于增强的确切参数,请检查AugmentationInfo
.
augmentationToInspect =4;data.AugmentationInfo (augmentationToInspect)
ans =带字段的结构:速度因数:1体积增益:4.3399时间移码:0.4502
倾听您正在检查的增强。绘制原始信号和增强信号的时间表示。
augment = data.Audio{augmentationToInspect};sound(augmentation,fs) t = (0:(numel(audioIn)-1))/fs;Taug =(0:(数字(增量)-1))/fs;情节(t, audioIn taug增大)传说(“原始音频”,“增强音频”) ylabel (“振幅”)包含(“时间(s)”)
应用指定的顺序扩充
读入一个音频信号,然后听它。
[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);声音(audioIn fs)
创建一个audioDataAugmenter
对象,该对象级联应用时间拉伸、基音变换和噪声破坏。指定时间拉伸加速因子为0.9
,1.1
,1.2
.指定半音音高偏移为-2
,-1
,1
,2
.指定噪声破坏信噪比为10
dB和15
dB。
augmenter = audioDataAugmenter(...“AugmentationMode”,“顺序”,...“AugmentationParameterSource”,“指定”,...“SpeedupFactor”(0.9, 1.1, 1.2),...“ApplyTimeStretch”,真的,...“ApplyPitchShift”,真的,...“SemitoneShift”, (2, 1, 1, 2),...“信噪比”(10、15),...“ApplyVolumeControl”假的,...“ApplyTimeShift”假)
augmenter = audioDataAugmenter with properties: AugmentationMode: "sequential" AugmentationParameterSource: "specify" ApplyTimeStretch: 1 SpeedupFactor: [0.9000 1.1000 1.2000] ApplyPitchShift: 1 SemitoneShift: [-2 -1 1 2] ApplyVolumeControl: 0 ApplyAddNoise: 1 SNR: [10 15] ApplyTimeShift: 0
调用增加
在音频上创建24个增强。扩充表示指定扩充参数的每个组合(
).
data = augment(augmenter,audioIn,fs)
data =24×2表音频AugmentationInfo _________________ ________________ { 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 {622888 x1双}1 x1 struct {571263 x1双}1 x1结构{761243x1 double} 1x1结构体`
方法检查每个增强的参数配置AugmentationInfo
表变量。
augmentationToInspect =1;data.AugmentationInfo (augmentationToInspect)
ans =带字段的结构:SemitoneShift: -2 SNR: 10
倾听您正在检查的增强。绘制原始信号和增强信号的时域表示。
augment = data.Audio{augmentationToInspect};sound(augmentation,fs) t = (0:(numel(audioIn)-1))/fs;Taug =(0:(数字(增量)-1))/fs;情节(t, audioIn taug增大)传说(“原始音频”,“增强音频”) ylabel (“振幅”)包含(“时间(s)”)
应用随机独立增强
读入一个音频信号,然后听它。
[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);
创建一个audioDataAugmenter
对象,该对象应用噪声破坏,并在并行分支中进行时移。对于噪声破坏分支,随机应用信噪比在范围内的噪声0
dB来20.
dB。对于时移分支,在-范围内随机应用时移300
女士,300
为每个分支应用2次增强,共4次增强。
augmenter = audioDataAugmenter(...“AugmentationMode”,“独立”,...“AugmentationParameterSource”,“随机”,...“NumAugmentations”2,...“ApplyTimeStretch”假的,...“ApplyPitchShift”假的,...“ApplyVolumeControl”假的,...“SNRRange”(0, 20),...“TimeShiftRange”, (-300 e - 3300 e - 3])
augmenter = audioDataAugmenter with properties: AugmentationMode: "independent" AugmentationParameterSource: "random" numaugmations: 2 ApplyTimeStretch: 0 ApplyPitchShift: 0 ApplyVolumeControl: 0 ApplyAddNoise: 1 SNRRange: [0 20] applytimeeshift: 1 TimeShiftRange: [-0.3000 0.3000]
调用增加
在音频上创建3个增强。
data = augment(augmenter,audioIn,fs);
方法检查每个增强的参数配置AugmentatioInfo
表变量。
augmentationToInspect =4;数据。AugmentationInfo {augmentationToInspect}
ans =带字段的结构:TimeShift: 0.0016
听你正在检查的音频。绘制原始信号和增强信号的时域表示。
augment = data.Audio{augmentationToInspect};sound(augmentation,fs) t = (0:(numel(audioIn)-1))/fs;Taug =(0:(数字(增量)-1))/fs;情节(t, audioIn taug增大)传说(“原始音频”,“增强音频”) ylabel (“振幅”)包含(“时间(s)”)
应用指定的独立增强
读入一个音频信号,然后听它。
[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);
创建一个audioDataAugmenter
对象,该对象在并行分支中应用音量控制、噪声损坏和时移。
augmenter = audioDataAugmenter(...“AugmentationMode”,“独立”,...“AugmentationParameterSource”,“指定”,...“ApplyTimeStretch”假的,...“ApplyPitchShift”假的,...“VolumeGain”2,...“信噪比”,0,...“TimeShift”, 2)
augmenter = audioDataAugmenter具有属性:AugmentationMode: "independent" AugmentationParameterSource: "specify" ApplyTimeStretch: 0 ApplyPitchShift: 0 ApplyVolumeControl: 1 VolumeGain: 2 ApplyAddNoise: 1 SNR: 0 ApplyTimeShift: 1 TimeShift: 2
调用增加
在音频上创建3个增强。
data = augment(augmenter,audioIn,fs)
data =3×2表音频AugmentationInfo _________________ ________________ { 685056 x1双}{1 x1 struct} {685056 x1双}{1 x1 struct} {685056 x1双}{1 x1 struct}
方法检查每个增强的参数配置AugmentatioInfo
表变量。
augmentationToInspect =3.;数据。AugmentationInfo {augmentationToInspect}
ans =带字段的结构:TimeShift: 2
听你正在检查的音频。绘制原始信号和增强信号的时域表示。
augment = data.Audio{augmentationToInspect};sound(augmentation,fs) t = (0:(numel(audioIn)-1))/fs;Taug =(0:(数字(增量)-1))/fs;情节(t, audioIn taug增大)传说(“原始音频”,“增强音频”) ylabel (“振幅”)包含(“时间(s)”)
增强音频数据集
的audioDataAugmenter
万博1manbetx支持多个工作流来扩展您的数据存储,包括:
离线增大
使用高数组进行增强
使用转换数据存储进行增强
在每个工作流中,首先创建一个音频数据存储以指向音频数据。在本例中,您创建了一个音频数据存储,它指向audio Toolbox™中包含的音频样本。计算数据集中的文件数量。
文件夹= fullfile(matlabroot,“工具箱”,“音频”,“样本”);ADS = audioDatastore(文件夹)
ADS = audioDatastore属性:Files:{'…\matlab\toolbox\audio\samples\ ambient -16-44p1-mono- 12seconds .wav';“…\ matlab工具箱\ \音响\ samples \ AudioArray-16-16-4channels-20secs.wav”;\toolbox\audio\samples\ churchimpulseresponse -16-44p1-mono- 5seconds .wav和26个}AlternateFileSystemRoots: {} OutputDataType: 'double'标签:{}
numFilesInDataset =数字(ADS.Files)
numFilesInDataset = 29
创建一个audioDataAugmenter
这应用了随机顺序扩充。集NumAugmentations
来2
.
aug = audioDataAugmenter(“NumAugmentations”, 2)
aug = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' numaugations: 2 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [-2 2] VolumeControlProbability: 0.5000 volumeainrange: [-3 3] AddNoiseProbability: 0.5000 SNRRange: [0 10] timshiftprobability: 0.5000 TimeShiftRange: [-0.0050 0.0050]
离线增大
要扩充音频数据集,为每个文件创建两个扩充,然后将扩充写入WAV文件。
而hasdata(ADS) [audioIn,info] = read(ADS);data = augment(aug,audioIn,info.SampleRate);[~,fn] = fileparts(info.FileName);为i = 1:size(data,1) augmentedAudio = data. audio {i};如果增强导致音频信号的值在-1和1之外,正常化音频信号,以避免写入时剪辑。。如果马克斯(abs (augmentedAudio), [],“所有”)>1 augmentedAudio = augmentedAudio/max(abs(augmentedAudio),[],“所有”);结束audiowrite (sprintf (“% s_aug % d.wav”, fn)、augmentedAudio info.SampleRate)结束结束
创建一个audioDatastore
指向增强数据集并确认数据集中的文件数量是原始文件数量的两倍。
augmentedADS = audioDatastore
augmentedADS = audioDatastore属性:Files:{'…\Examples\audio-ex28074079\ ambient -16-44p1-mono-12secs_aug1.wav';“……\ \ audio-ex28074079 \ Ambiance-16-44p1-mono-12secs_aug2.wav例子”;\Examples\audio-ex28074079\AudioArray-16-16-4channels-20secs_aug1.wav'…和55更多}AlternateFileSystemRoots: {} OutputDataType: 'double'标签:{}
numfilesmenteddataset = numel(augmentedADS.Files)
numfilesmenteddataset = 58
使用高数组增强
当使用高数组扩充数据集时,应以一致的速率对扩充器的输入数据进行抽样。对原始音频数据集进行子集化,使其仅包含采样率为44.1 kHz的文件。大多数数据集已经被清理以获得一致的采样率。
keepFile = cellfun(@(x)包含(x,“44 p1”), ADS.Files);ads44p1 =子集(ADS,keepFile);Fs = 44.11 e3;
将音频数据存储转换为高数组。高
数组只有在显式地使用收集
.MATLAB®通过最小化通过数据的次数自动优化队列计算。如果您有并行计算工具箱™,您可以将计算分散到多台机器上。音频数据表示为米-by-1高单元格数组,其中米音频数据存储中的文件数。
adsTall = tall(ads44p1)
使用“本地”配置文件启动并行池(parpool)…连接到平行池(工人数量:6)。adsTall = M×1高细胞数组{539648×1双}{227497×1双}{8000×1双}{685056×1双}{882688×2双}{1115760×2双}{505200×2双}{3195904×2双}::::
定义一个cellfun
函数,以便对tall数组的每个单元格应用增强。调用收集
计算tall数组。
augTall = cellfun(@(x)augment(aug,x,fs),adsTall,“UniformOutput”、假);augmentedDataset = gather(augTall)
使用并行池“本地”评估tall表达式:-通过1 / 1:在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表
增强数据集作为numFiles-by-1单元格数组,其中numFiles数据存储中的文件数。单元格数组的每个元素都是anumAugmentationsPerFile-by-2表,其中numAugmentationsPerFile每个文件返回的增强数。
numFiles = numel(augmentedDataset)
numFiles = 12
numAugmentationsPerFile = size(augmentteddataset {1},1)
numAugmentationsPerFile = 2
使用转换数据存储增强
在使用转换数据存储训练机器学习应用程序时,可以执行在线数据增强。调用变换
创建在读取时应用数据增强的新数据存储。
transformADS = transform(ADS,@(x,info)augment(aug,x,info),“IncludeInfo”,真正的)
transformADS = transformmeddatastore属性:底层数据存储:[1×1 audioDatastore] Transforms: {@(x,info)augment(aug,x,info)} IncludeInfo: 1
调用读
从转换数据存储中返回增强的第一个文件。
augmentedRead = read(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
.
augmenter = audioDataAugmenter(“AddNoiseProbability”, 0)
augmenter = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' numaugments: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [-2 2] VolumeControlProbability: 0.5000 volumeainrange: [-3 3] AddNoiseProbability: 0 timshiftprobability: 0.5000 TimeShiftRange: [-0.0050 0.0050]
指定应用粉色噪声的自定义增强算法。的AddPinkNoise
算法被添加到增压器
属性。
algorithmName =“AddPinkNoise”;algorithmHandle = @(x)x+pinknoise(size(x),“喜欢”, x);addAugmentationMethod(增压器、algorithmName algorithmHandle)增压器
augmenter = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' numaugations: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [-2 2] VolumeControlProbability: 0.5000 volumeainrange: [-3 3] AddNoiseProbability: 0 TimeShiftRange: 0.5000 TimeShiftRange: [-0.0050 0.0050] AddPinkNoiseProbability: 0.5000
设置添加粉色杂音的概率为1
.
增压器。AddPinkNoiseProbability = 1
augmenter = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' numaugments: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [-2 2] VolumeControlProbability: 0.5000 volumeainrange: [-3 3] AddNoiseProbability: 0 TimeShiftRange: 0.5000 TimeShiftRange: [-0.0050 0.0050] AddPinkNoiseProbability: 1
增强原始信号,并听取结果。检查所应用的增强算法的参数。
data = augment(augmenter,audioIn,fs);声音(data.Audio {1}, fs) data.AugmentationInfo (1)
ans =带字段的结构:SpeedupFactor: 1 semitonesshift: 0 VolumeGain: 2.4803 timeeshift: -0.0022 AddPinkNoise: '已应用'
绘制原始信号和增强信号的mel谱图。
melSpectrogram (audioIn fs)标题(原始信号的)
melSpectrogram (data.Audio {1}, fs)标题(增强信号的)
算法
的audioDataAugmenter
对象使您可以将扩展管道配置为确定性的或概率的AugmentationParameterSource财产。属性,还可以选择以串联或并行方式应用增强AugmentationMode财产。下面几节描述了您可以创建的管道以及每个体系结构的适用属性。
随机顺序扩充
要将增强定义为概率应用增强的序列,请设置AugmentationParameterSource来“随机”
而且AugmentationMode来“顺序”
.
应用扩充的顺序总是相同的。如果指定自定义算法,则它们将按照指定的顺序应用于序列的末尾。
在这个管道配置中,这些参数适用:
增强方法 | 参数 |
---|---|
段时间 | |
改变音高 | |
控制体积 | |
添加噪声 | |
改变时间 |
如果你指定NumAugmentations如果大于1,则应用该对象NumAugmentations
并行随机顺序增广。应用增广的概率和任何由概率决定的参数的值是独立的。
指定的顺序扩充
若要将扩展定义为确定性应用的扩展序列,请设置AugmentationParameterSource来“指定”
而且AugmentationMode来“顺序”
.
应用扩充的顺序总是相同的。如果指定自定义算法,则它们将按照指定的顺序应用于序列的末尾。
在这个管道配置中,这些参数适用:
增强方法 | 参数 |
---|---|
段时间 | |
改变音高 | |
控制体积 | |
添加噪声 | |
改变时间 |
如果您将一个增强方法指定为一个向量,那么该向量的每个元素将在增强管道中创建一个单独的分支。例如,下面的对象创建了一个增强管道,结果是四个独立的增强:
aug = audioDataAugmenter(“AugmentationMode”,“顺序”,...“AugmentationParameterSource”,“指定”,...“SpeedupFactor”[0.8, 1.2],...“VolumeGain”(3,1))
aug = audioDataAugmenter with properties: AugmentationMode: "sequential" AugmentationParameterSource: "specify" ApplyTimeStretch: 1 SpeedupFactor: [0.8000 1.2000] ApplyPitchShift: 1 SemitoneShift: -3 ApplyVolumeControl: 1 VolumeGain: [-3 -1] ApplyAddNoise: 1 SNR: 5 ApplyTimeShift: 1 TimeShift: 0.0050
随机独立增广
若要将扩展定义为具有随机确定参数的独立应用扩展,请设置AugmentationParameterSource来“随机”
而且AugmentationMode来“独立”
.
在这个管道配置中,这些参数适用:
增强方法 | 参数 |
---|---|
段时间 | |
改变音高 | |
控制体积 | |
添加噪声 | |
改变时间 |
如果你指定NumAugmentations如果大于1,则应用该对象NumAugmentations
并行随机独立增广。任何由概率确定的参数的值都是独立的。
指定的独立增强
若要将扩展定义为具有确定性参数的确定性应用的独立扩展,请设置AugmentationParameterSource来“指定”
而且AugmentationMode来“独立”
.
在这个管道配置中,这些参数适用:
增强方法 | 参数 |
---|---|
段时间 | |
改变音高 | |
控制体积 | |
添加噪声 | |
改变时间 |
如果您将一个增强方法指定为一个向量,那么该向量的每个元素将在增强管道中创建一个单独的分支。例如,下面的对象创建了一个增强管道,结果是7个独立的增强:
aug = audioDataAugmenter(“AugmentationMode”,“独立”,...“AugmentationParameterSource”,“指定”,...“SpeedupFactor”[0.8, 1.2],...“VolumeGain”(3,1))
aug = audioDataAugmenter with properties: AugmentationMode: "independent" AugmentationParameterSource: "specify" ApplyTimeStretch: 1 SpeedupFactor: [0.8000 1.2000] ApplyPitchShift: 1 SemitoneShift: -3 ApplyVolumeControl: 1 VolumeGain: [-3 -1] ApplyAddNoise: 1 SNR: 5 ApplyTimeShift: 1 TimeShift: 0.0050
参考文献
萨拉蒙,贾斯汀,还有胡安·巴勃罗·贝罗。用于环境声音分类的深度卷积神经网络和数据增强IEEE信号处理规程.2017年第3期(24卷)
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
LockPhase
必须设置为假
用于时间拉伸和音调转移增强。有关更多信息,请参见setAugmenterParams
.使用
gpuArray
(并行计算工具箱)输入与audioDataAugmenter
仅推荐用于计算能力为7.0(“Volta”)或以上的GPU。其他硬件可能无法提供任何性能优势。要检查您的GPU计算能力,请参见ComputeCompability
的输出中gpuDevice
(并行计算工具箱)函数。有关更多信息,请参见GPU计算要求(并行计算工具箱).
关于MATLAB中GPU使用的概述®,请参阅在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
R2019b引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。