主要内容

增加

增加音频数据

自从R2019b

描述

例子

数据=增加(8月,audioIn)返回一个表,其中包含音频数据和增强增加应用的信息。

例子

数据=增加(8月,audioIn,fs)指定音频输入的采样率。

例子

全部折叠

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

[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)”)

图包含一个坐标轴对象。坐标轴对象包含时间(s), ylabel振幅包含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)”)

图包含一个坐标轴对象。坐标轴对象包含时间(s), ylabel振幅包含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)”)

图包含一个坐标轴对象。坐标轴对象包含时间(s), ylabel振幅包含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)”)

图包含一个坐标轴对象。坐标轴对象包含时间(s), ylabel振幅包含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结构)

输入参数

全部折叠

音频输入,指定为一个列向量或矩阵独立渠道(列)。

数据类型:|

采样率在赫兹,指定为一个积极的标量。的允许范围fs取决于的属性audioDataAugmenter对象。

数据类型:|

输出参数

全部折叠

增强音频和增加信息,作为一个两列返回。第一列包含音频信号增强。第二列是信息应用的增强方法。的行数数据对应的输出信号增强。输出信号增强的数量取决于对象的属性值。

版本历史

介绍了R2019b