转换音频数据存储
控件的输出转换为新的数据存储transformDatastore
=变换(广告
,@fcn
)读
函数。
使用一个或多个指定选项transformDatastore
=变换(广告
,@fcn
,名称,值
)名称,值
对参数。
指定audio Toolbox™中包含的音频示例的文件路径。创建指向指定文件夹的音频数据存储。
文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);
调用变换
创建一个将多通道信号混合成单声道信号的新数据存储。
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
audio Toolbox™中包含的音频示例具有不同的持续时间。使用变换
函数自定义读
函数,以便它输出一个随机的5秒音频样本片段。
指定音频工具箱中包含的音频示例的文件路径。创建指向指定文件夹的音频数据存储。
文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);
对象的输出定义一个函数作为输入读
函数。使该函数从音频信号中提取5秒值的数据。
函数[dataOut,info] = extractSegment(audioIn,info) [N,numChan] = size(audioIn);newN =圆(info.SampleRate * 5);如果newN > N%信号长度< 5秒numPad = newN - N + 1;dataOut = [audioIn; 0 (numChan数字键盘,“喜欢”audioIn)];elseifnewN < N%信号长度> 5秒start = randi(N - newN + 1);dataOut = audioIn(启动:启动+ newN-1:);其他的%信号长度== 5秒dataOut = audioIn;结束结束
调用变换
创建一个TransformedDatastore
与转换
设置为您定义的函数。
ADSnew =变换(广告、@extractSegment“IncludeInfo”,真正的)
ADSnew = TransformedDatastore with properties: UnderlyingDatastores: {audioDatastore} 金宝appSupportedOutputFormats: ["txt" "csv" "xlsx" "xls"…{@extractSegment} IncludeInfo: 1
读取前三个音频文件,并验证输出是5秒段。
为i = 1:3[音频,信息]=读取(ADSnew);流('Duration = %d秒\n'、大小(音频,1)/ info.SampleRate)结束
Duration = 5 seconds Duration = 5 seconds持续时间= 5秒
使用变换
要创建一个音频数据存储,从读
函数。
指定audio Toolbox™中包含的音频示例的文件路径。创建指向指定文件夹的音频数据存储。
文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);
定义一个函数,将音频数据从时域表示转换为日志mel谱图。函数的附加输出melSpectrogram
函数的信息结构体输出从读取音频数据存储。
函数[dataOut,infoOut] = extractMelSpectrogram(audioIn,info) [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 with properties: UnderlyingDatastores: {audioDatastore} 金宝appSupportedOutputFormats: ["txt" "csv" "xlsx" "xls"…{@extractMelSpectrogram} IncludeInfo: 1
阅读前三个音频文件并绘制日志mel谱图。如果有多个频道,只绘制第一个频道。
为i = 1:3 [melSpec,info] = read(ADSnew);图(我)冲浪(info.TimeInstants、info.CenterFrequencies melSpec (:,: 1),“EdgeColor”,“没有”);包含(“时间(s)”) ylabel (的频率(赫兹)) [~,name] = fileparts(info.FileName);title(name)轴([0 info.TimeInstants(end) info.CenterFrequencies(1) info.CenterFrequencies(end)])视图([0,90])结束
使用变换
创建返回特征向量的音频数据存储。
指定audio Toolbox™中包含的音频示例的文件路径。创建指向指定文件夹的音频数据存储。
文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);
定义一个函数,extractFeatureVector
,它将音频数据从时域表示转换为特征向量。
函数[dataOut,信息]= extractFeatureVector (audioIn信息)%转换为频域表示windowLength = 256;overlapLength = 128;[~ f ~ S] =光谱图(意思是(audioIn, 2),...损害(windowLength“周期”),...overlapLength,...windowLength,...信息。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 with properties: UnderlyingDatastores: {audioDatastore} 金宝appSupportedOutputFormats: ["txt" "csv" "xlsx" "xls"…{@extractFeatureVector
调用读
返回音频随时间变化的特征向量。
featureMatrix =阅读(ADSnew);[numFeatureVectors, numFeatures] =大小(featureMatrix)
numFeatureVectors = 4215 numFeatures = 11
使用变换
创建一个音频数据存储,在从读
函数。
指定audio Toolbox™中包含的音频示例的文件路径。创建指向指定文件夹的音频数据存储。
文件夹= fullfile (matlabroot,“工具箱”,“音频”,“样本”);广告= audioDatastore(文件夹);
定义一个函数,applyBandpassFilter
,它应用了一个通频带在1到15 kHz之间的带通滤波器。
函数[audioOut,info] = applyBandpassFilter(audioIn,info) audioOut = bandpass(audioIn,[1e3,15e3],info. samplerate);结束
调用变换
创建一个TransformedDatastore
与转换
设置为applyBandpassFilter
.
ADSnew =变换(广告、@applyBandpassFilter“IncludeInfo”,真正的)
ADSnew = TransformedDatastore with properties: UnderlyingDatastores: {audioDatastore} 金宝appSupportedOutputFormats: ["txt" "csv" "xlsx" "xls"…转换:{@applyBandpassFilter} IncludeInfo: 1
调用读
从转换数据存储返回带通过滤的音频。调用读
从原始数据存储返回带通过滤的音频。绘制光谱图来可视化差异。
[audio1, info1] =阅读(广告);[audio2, info2] =阅读(ADSnew);
光谱图(audio1损害(512),256512年,info1。SampleRate,“桠溪”)标题(原始信号的)
光谱图(audio2损害(512),256512年,info2。SampleRate,“桠溪”)标题(“过滤信号”)
广告
- - - - - -音频数据存储audioDatastore
对象音频数据存储,指定为audioDatastore
对象。
@fcn
- - - - - -转换数据的函数转换数据的函数,指定为函数句柄。函数的签名依赖于IncludeInfo
参数。
如果IncludeInfo
被设置为假
(默认),该函数转换音频输出读
.的信息输出读
是不变的。
transform函数必须有这样的签名:
函数dataOut = fcn(音频)...结束
如果IncludeInfo
被设置为真正的
,该函数将音频输出转换为读
,并可以使用或修改返回的信息读
.
transform函数必须有这样的签名:
函数[dataOut, infoOut] = fcn(音频、infoIn)...结束
指定可选的逗号分隔的对名称,值
参数。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
IncludeInfo,特遣部队
IncludeInfo
- - - - - -通过自定义传递信息读
函数假
(默认)|真正的通过定制的read函数传递信息,指定为真正的
或假
.如果真正的
,转换函数可以使用或修改它从中获得的信息读
.如果未指定的,IncludeInfo
默认为假
.
数据类型:逻辑
transformDatastore
—自定义的新数据存储读
TransformedDatastore
自定义的新数据存储读
,返回为TransformedDatastore
与UnderlyingDatastore
设置为广告
,转换
设置为fcn
,IncludeInfo
设置为真正的
或假
.
您已经有了geänderte版本死亡Beispiels。Möchten您是谁? Änderungen öffnen?
您有一个连接到MATLAB-Befehl entspricht:
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus。Webbrowser unterstützen keine MATLAB-Befehle。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。