主要内容

变换

转换音频数据存储

描述

例子

transformDatastore=变换(广告,@fcn)创建一个新的数据存储转换输出函数。

例子

transformDatastore=变换(广告,@fcn,名称,值)使用一个或多个指定选项名称,值对参数。

例子

全部折叠

指定文件路径与音频音频样本包括工具箱™。创建一个音频数据存储指向指定的文件夹。

文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);

调用变换创建一个新的数据存储和多通道信号mono。

ADSnew =变换(广告,@ (x)的意思是(x, 2));

从新的数据存储和读取确认只输出单声道信号。

hasdata (ADSnew)音频=阅读(ADSnew);流(“渠道的数量= % d \ n”、尺寸(音频、2))结束
通道的数量= 1频道的数量= 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1频道的频道数量= 1 = 1

音频样本包含音频工具箱™有不同的持续时间。使用变换自定义函数函数,输出一个随机五秒的音频样本。

指定文件路径与音频音频样本包括工具箱。创建一个音频数据存储指向指定的文件夹。

文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);

定义一个函数的输出作为输入函数。使价值函数提取5秒的音频信号的数据。

函数[dataOut,信息]= extractSegment (audioIn信息)[N, numChan] =大小(audioIn);newN =圆(info.SampleRate * 5);如果newN > N%信号长度< 5秒数字键盘= newN - N + 1;dataOut = [audioIn; 0 (numChan数字键盘,“喜欢”audioIn)];elseifnewN < N%信号长度> 5秒开始=兰迪(N - newN + 1);dataOut = audioIn(启动:启动+ newN-1:);其他的%信号长度= = 5秒dataOut = audioIn;结束结束

调用变换创建一个TransformedDatastore转换定义的函数。

ADSnew =变换(广告、@extractSegment“IncludeInfo”,真正的)
ADSnew = TransformedDatastore属性:UnderlyingDatastores: {audioDatastore} SupportedOutput金宝appFormats(“三种”:“csv”“xlsx”“xls”…转换:{@extractSegment} IncludeInfo: 1

阅读前三个音频文件,并验证输出五个第二段。

我= 1:3(音频、信息)=读(ADSnew);流(“时间= % d秒\ n”、大小(音频,1)/ info.SampleRate)结束
时间= 5秒时间= 5秒时间= 5秒

使用变换创建一个音频数据存储返回梅尔的声谱图表示函数。

指定文件路径与音频音频样本包括工具箱™。创建一个音频数据存储指向指定的文件夹。

文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);

定义一个函数,转换音频数据从时域表示日志梅尔声谱图。函数添加了额外的输出melSpectrogram函数的信息结构输出读取音频数据存储。

函数[dataOut, infoOut] = extractMelSpectrogram (audioIn信息)[S、F T] = melSpectrogram (audioIn info.SampleRate);dataOut = 10 * log10 (S + eps);infoOut =信息;infoOut。CenterFrequencies = F;infoOut。TimeInstants = T;结束

调用变换创建一个TransformedDatastore转换设置为extractMelSpectrogram

ADSnew =变换(广告、@extractMelSpectrogram“IncludeInfo”,真正的)
ADSnew = TransformedDatastore属性:UnderlyingDatastores: {audioDatastore} SupportedOutput金宝appFormats(“三种”:“csv”“xlsx”“xls”…转换:{@extractMelSpectrogram} IncludeInfo: 1

阅读前三个音频文件和日志梅尔·色。如果有多个渠道,只有第一频道的阴谋。

我= 1:3 (melSpec,信息)=读(ADSnew);图(我)冲浪(info.TimeInstants、info.CenterFrequencies melSpec (:,: 1),“EdgeColor”,“没有”);包含(“时间(s)”)ylabel (的频率(赫兹)(~),名称]= fileparts (info.FileName);标题(名字)轴([0 info.TimeInstants(结束)info.CenterFrequencies (1) info.CenterFrequencies(结束)])视图([0,90])结束

图包含一个坐标轴对象。坐标轴对象与标题Ambiance-16-44p1-mono-12secs包含一个类型的对象的表面。

图包含一个坐标轴对象。坐标轴对象与标题AudioArray-16-16-4channels-20secs包含一个类型的对象的表面。

图包含一个坐标轴对象。坐标轴对象与标题ChurchImpulseResponse-16-44p1-mono-5secs包含一个类型的对象的表面。

使用变换创建一个音频数据存储返回特征向量。

指定文件路径与音频音频样本包括工具箱™。创建一个音频数据存储指向指定的文件夹。

文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);

定义一个函数,extractFeatureVector,将音频数据从时域表示特征向量。

函数[dataOut,信息]= extractFeatureVector (audioIn信息)%转换为频域表示windowLength = 256;overlapLength = 128;[~ f ~ S] =光谱图(意思是(audioIn, 2),损害(windowLength“周期”),overlapLength,windowLength,info.SampleRate,“权力”,“单向的”);%提取特征[峰度,传播,重心]= spectralKurtosis (S、f);偏态= spectralSkewness (S、f);佳洁士= spectralCrest (S、f);减少= spectralDecrease (S、f);熵= spectralEntropy (S、f);平面度= spectralFlatness (S、f);通量= spectralFlux (S、f);滚边= spectralRolloffPoint (S、f);斜率= spectralSlope (S、f);%连接创建特征向量dataOut =[峰度,传播,重心偏态,波峰,减少,熵,平坦,通量,滚边,斜率);结束

调用变换创建一个TransformedDatastore转换设置为extractFeatureVector

ADSnew =变换(广告、@extractFeatureVector“IncludeInfo”,真正的)
ADSnew = TransformedDatastore属性:UnderlyingDatastores: {audioDatastore} SupportedOutput金宝appFormats(“三种”:“csv”“xlsx”“xls”…转换:{@extractFeatureVector} IncludeInfo: 1

调用返回音频的特征向量。

featureMatrix =阅读(ADSnew);[numFeatureVectors, numFeatures] =大小(featureMatrix)
numFeatureVectors = 4215 numFeatures = 11

使用变换创建一个音频数据存储,应用带通滤波后返回音频的函数。

指定文件路径与音频音频样本包括工具箱™。创建一个音频数据存储指向指定的文件夹。

文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);

定义一个函数,applyBandpassFilter,适用于带通滤波器通带1至15 kHz。

函数[audioOut,信息]= applyBandpassFilter (audioIn信息)audioOut =带通([1 e3, 15 e3], audioIn info.SampleRate);结束

调用变换创建一个TransformedDatastore转换设置为applyBandpassFilter

ADSnew =变换(广告、@applyBandpassFilter“IncludeInfo”,真正的)
ADSnew = TransformedDatastore属性:UnderlyingDatastores: {audioDatastore} SupportedOutput金宝appFormats(“三种”:“csv”“xlsx”“xls”…转换:{@applyBandpassFilter} IncludeInfo: 1

调用返回带通滤波变换数据存储的音频。调用返回带通过滤音频从原始数据存储。图的谱图可视化的区别。

[audio1, info1] =阅读(广告);[audio2, info2] =阅读(ADSnew);
光谱图(audio1损害(512),256512年,info1.SampleRate,“桠溪”)标题(原始信号的)

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

光谱图(audio2损害(512),256512年,info2.SampleRate,“桠溪”)标题(“过滤信号”)

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

输入参数

全部折叠

音频数据存储,指定为一个audioDatastore对象。

函数变换数据,指定为一个函数处理。的签名函数依赖IncludeInfo参数。

  • 如果IncludeInfo被设置为(默认),函数变换的音频输出。的信息输出是不变的。

    转换函数必须有这个签名:

    函数dataOut = fcn(音频)结束

  • 如果IncludeInfo被设置为真正的,函数变换的音频输出,可以使用或修改返回的信息

    转换函数必须有这个签名:

    函数[dataOut, infoOut] = fcn(音频、infoIn)结束

名称-值参数

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:IncludeInfo,特遣部队

通过定制的读函数,传递信息指定为真正的。如果真正的,变换函数可以从使用或修改信息。如果未指定的,IncludeInfo默认为

数据类型:逻辑

输出参数

全部折叠

新的数据存储与定制,返回TransformedDatastoreUnderlyingDatastore设置为广告,转换设置为fcn,IncludeInfo设置为真正的

介绍了R2019a