AudioLocalMeasurements[audio,"prop"]
为 audio 分区计算局部属性 "prop".
AudioLocalMeasurements[audio,{"prop1","prop2",…}]
计算数个属性 "propi".
AudioLocalMeasurements[audio,"prop",format]
在指定输出 format 中返回测量值.
AudioLocalMeasurements[video,…]
计算 video 中第一条音轨的测量值.
AudioLocalMeasurements
AudioLocalMeasurements[audio,"prop"]
为 audio 分区计算局部属性 "prop".
AudioLocalMeasurements[audio,{"prop1","prop2",…}]
计算数个属性 "propi".
AudioLocalMeasurements[audio,"prop",format]
在指定输出 format 中返回测量值.
AudioLocalMeasurements[video,…]
计算 video 中第一条音轨的测量值.
更多信息和选项
- AudioLocalMeasurements 也叫作音频特征或描述符.
- AudioLocalMeasurements 为每个分区返回一个带有测量的 TimeSeries.
- 在平均通道值中计算音频测量.
- 基本直方图属性:
-
"Max" 最大值 "MaxAbs" 最大绝对值 "Min" 最小值 "MinAbs" 最小绝对值 "MinMax" 最小和最大值 "MinMaxAbs" 最小和最大绝对值 "Mean" 平均值 "Median" 中间值 "StandardDeviation" 数值的标准差 "Total" 数值总和 - 强度属性:
-
"Power" 根号平均值 "RMSAmplitude" 均方根值 "Loudness" 估算响度计量 - 响度属性使用斯蒂芬幂法则(Steven's power law),使用
计算. - 时间方面属性:
-
"CrestFactor" 最大值除以均方根值 "Entropy" 值的熵 "LPC" 线性预测系数 "PeakToAveragePowerRatio" 最大幂除以平均幂 "TemporalCentroid" 数值的时域质心 "ZeroCrossingRate" 零交叉率 "ZeroCrossings" 分区的零交叉数量 - "LPC" 属性返回用线性预测代码估算出的 12 个系数. 使用 {"LPC",n} 返回 n 个系数.
- 线性预测系数(LPC)通常用于语音信号的分析和编码.
- 时域质心(temporal centroid)属性给出每个分区的重心. 值为 0.5 的时域质心意思是分区的中心,然后 0 和 1 对应分区的开头和结尾.
- 频率方面属性:
-
"FundamentalFrequency" 估算基础频率 "Formants" 信号的共振峰频率 "HighFrequencyContent" 功率谱的线性加权平均值 "MFCC" 梅尔频率倒谱系数 "SpectralCentroid" 功率谱的质心 "SpectralCrest" 最大值除以功率谱的平均值 "SpectralFlatness" 几何平均除以功率谱的平均值 "SpectralKurtosis" 幅度谱的峰度 "SpectralRollOff" 大部分能量频率集中在该值之下的频率 "SpectralSkewness" 幅度谱的峰度 "SpectralSlope" 幅度谱的估算斜率 "SpectralSpread" 功率谱的带宽计量 - 使用 {"FundamentalFrequency",thr,minfreq,maxfreq},仅返回频率范围在 minfreq 和 maxfreq 之间置信区间为 thr 或更高的频率. 默认值对包括语音和乐器的信号优化.
- 使用 {"Formants",n,m} 时,可通过 m 个 LPC 系数返回最多 n 个共振峰. 缺省情况下,
,m 取决于输入的采样率. - 属性 MFCC 返回 13 个系数. 使用 {"MFCC",n,m,minfreq,maxfreq},返回 n 个系数,使用频率范围位于 minfreq 和 maxfreq 之间的 m 个滤波器.
- 在连续分区上计算频率方面属性:
-
"ComplexDomainDistance" 预测出和测量出的傅里叶(Fourier)之间的距离 "ModifiedKullbackLeibler" 波谱间经调整的 KL 距离(Kullback–Liebler distance) "Novelty" 重大变化的预估测量 "PhaseDeviation" 预测出和测量出的傅里叶(Fourier)之间的相位差 "SpectralFlux" 连续光谱间差异的范数 - 语音属性:
-
"VoiceActivity" 是否检测到语音活动(0 和 1 秒) - 语音属性:
-
"SpeechAperiodicity" 非周期性(噪音)成分 "SpeechFundamentalFrequency" 基础频率 "SpeechSpectralEnvelope" 平滑频谱图数据 - 默认情况下,返回属性值列表. 其他 format 规格说明包括:
-
Automatic 自动决定输出 "Association" 将结果格式化为一个 Association "Dataset" 将结果格式化为一个 Dataset "List" 将结果格式化为一个 List "RuleList" 将结果格式化为一个 Rule 表达式列表 - 可给出如下选项:
-
Alignment Center 对齐带分区的时间戳 FourierParameters {-1,1} 傅里叶参数 Padding Automatic 填充设计 PaddingSize Automatic 填充量 PartitionGranularity Automatic 音频分区规格说明 MetaInformation None 包括额外的元信息 MissingDataMethod None 用于确实数据的方法 ResamplingMethod Automatic 用于重采样路径的方法 - 默认情况下,量度在每个分区中心返回. 使用 Alignment 选项,则在每个分区的开头(Left)或结束(Right)返回量度.
- 默认情况下,信号填充值为在开头和结尾两段带有无声片段的分区尺寸的一半. 对于 Padding 的可能设置,参阅 AudioPad 的参考页面.
范例
打开所有单元 关闭所有单元基本范例 (3)
AudioLocalMeasurements[\!\(\*AudioBox[""]\), "RMSAmplitude"]ListLinePlot[%, PlotRange -> All]计算 Video 对象的第一个音轨的 RMS(均方根)振幅:
AudioLocalMeasurements[\!\(\*VideoBox[""]\), "RMSAmplitude"]ListLinePlot[%, PlotRange -> All]AudioLocalMeasurements[\!\(\*AudioBox[""]\), {"Power", "RMSAmplitude"}, Association]ListLinePlot[%, PlotRange -> All]范围 (24)
基本用法 (1)
将输出格式化为 Association:
a = Import["ExampleData/rule30.wav"];AudioLocalMeasurements[a, {"RMSAmplitude", "Power"}, "Association"]返回一个 TimeSeries 列表:
AudioLocalMeasurements[a, {"RMSAmplitude", "Power"}, "List"]AudioLocalMeasurements[a, {"RMSAmplitude", "Power"}, "RuleList"]返回一个 Dataset:
AudioLocalMeasurements[a, {"RMSAmplitude", "Power"}, "Dataset"]直方图属性 (2)
a = Import["ExampleData/rule30.wav"];ListLinePlot[AudioLocalMeasurements[a, {"Max", "MaxAbs", "Min", "MinAbs"}]]ListLinePlot[AudioLocalMeasurements[a, "Total"]]a = Import["ExampleData/rule30.wav"];ListLinePlot[AudioLocalMeasurements[a, {"Mean", "Median", "StandardDeviation"}]]强度属性 (1)
时域属性 (6)
属性 "CrestFactor" 测量最高值和在分段上的 RMS 的比例. "PeakToAveragePowerRatio" 计算相同值的平方:
a = Import["ExampleData/rule30.wav"];AudioLocalMeasurements[a, {"CrestFactor", "PeakToAveragePowerRatio"}]//ListLinePlot[#, PlotRange -> All]&属性 "TemporalCentroid" 计算每个分段的能量分布比重中心:
a = Import["ExampleData/rule30.wav"];ListLinePlot[AudioLocalMeasurements[a, "TemporalCentroid"], PlotRange -> All]输出值的边界在 0 和 1 之间,其中 0 代表全部能量都集中在开始分段.
"ZeroCrossings" 返回在分段中的零的数目; "ZeroCrossingRate" 正态化分段的时间长度:
a = Import["ExampleData/rule30.wav"];ListLinePlot[AudioLocalMeasurements[a, "ZeroCrossingRate"], PlotRange -> All]a = Import["ExampleData/rule30.wav"];AudioLocalMeasurements[a, "LPC"]["Values"]//Transpose//ArrayPlotAudioLocalMeasurements[a, {"LPC", 66}]["Values"]//Transpose//ArrayPlota = ExampleData[{"Audio", "MaleVoice"}];
formants = AudioLocalMeasurements[a, "Formants"]Show[Spectrogram[a, AspectRatio -> 1, PlotRange -> {All, {0, 7000}}], formants//ListLinePlot]formants = AudioLocalMeasurements[a, {"Formants", 2, 40}]Show[Spectrogram[a, AspectRatio -> 1, PlotRange -> {All, {0, 7000}}], formants//ListLinePlot]a = Import["ExampleData/rule30.wav"];AudioLocalMeasurements[a, "Entropy"]//ListLinePlot[#, PlotRange -> All]&频率域属性 (8)
"SpectralCrest" 测量功率谱的最大值和均值的比率:
a = ExampleData[{"Audio", "PianoScale"}];AudioLocalMeasurements[a, {"SpectralCrest"}]//ListLinePlot谱能量的 95% 集中在 "SpectralRollOff" 所测量的频率值之下:
a = ExampleData[{"Audio", "PianoScale"}];AudioLocalMeasurements[a, {"SpectralRollOff"}]//ListLinePlota = ExampleData[{"Audio", "PianoScale"}];AudioLocalMeasurements[a, {"SpectralSlope"}]//ListLinePlot"SpectralFlatness" 是功率谱平坦度的度量:
a = ExampleData[{"Audio", "PianoScale"}];AudioLocalMeasurements[a, {"SpectralFlatness"}]//ListLinePlota = ExampleData[{"Audio", "PianoScale"}];AudioLocalMeasurements[a, {"SpectralCentroid", "SpectralKurtosis", "SpectralSpread"}]//ListLinePlot[#, PlotRange -> All]&"FundamentalFrequency" 估计单声道音频的基本频率:
a = ExampleData[{"Audio", "PianoScale"}];AudioLocalMeasurements[a, "FundamentalFrequency"]//ListLinePlotAudioLocalMeasurements[a, {"FundamentalFrequency", .2}]//ListLinePlotAudioLocalMeasurements[a, {"FundamentalFrequency", .2, 100, 700}]//ListLinePlot"HighFrequencyContent" 使用随频率线性增加的加权计算平均功率谱:
a = ExampleData[{"Audio", "PianoScale"}];AudioLocalMeasurements[a, "HighFrequencyContent"]//ListLinePlot[#, PlotRange -> All]&频谱的线性加权为更高频谱端添加更多重要性,使得 "HighFrequencyContent" 成为瞬态检测的最佳候选.
a = ExampleData[{"Audio", "PianoScale"}];AudioLocalMeasurements[a, "MFCC"]["Values"]//Transpose//ListDensityPlotAudioLocalMeasurements[a, {"MFCC", 30, 40, Quantity[40, "Hertz"], Quantity[30000, "Radians"/"Seconds"]}]["Values"]//Transpose//ListDensityPlot在邻域部分计算的频域属性 (2)
a = ExampleData[{"Audio", "PianoScale"}];Rescale /@ AudioLocalMeasurements[a, {"ComplexDomainDistance", "ModifiedKullbackLeibler", "PhaseDeviation", "SpectralFlux"}]//ListLinePlota = ExampleData[{"Audio", "PianoScale"}];ListLinePlot[AudioLocalMeasurements[a, "Novelty"], PlotRange -> All]语音和扬声器属性 (4)
"VoiceActivity" 属性是语音信号的有声部分的指示符功能:
a = ExampleData[{"Audio", "MaleVoice"}];
va = AudioLocalMeasurements[a, "VoiceActivity"]Show[AudioPlot[a, PlotLayout -> "Averaged"], ListLinePlot[va, PlotStyle -> Red], ImageSize -> Medium]va = AudioLocalMeasurements[a, "VoiceActivity", PartitionGranularity -> .01];
Show[AudioPlot[a, PlotLayout -> "Averaged"], ListLinePlot[va, PlotStyle -> Red], ImageSize -> Medium]"SpeechFundamentalFrequency" 属性估计语音的基本频率:
a = ExampleData[{"Audio", "MaleVoice"}];ListLinePlot[AudioLocalMeasurements[a, "SpeechFundamentalFrequency", PartitionGranularity -> {Quantity[25, "Milliseconds"], Quantity[5, "Milliseconds"]}], PlotRange -> All]"SpeechSpectralEnvelope" 属性返回信号频谱包络的系数:
a = ExampleData[{"Audio", "MaleVoice"}];
se = AudioLocalMeasurements[a, "SpeechSpectralEnvelope"]MatrixPlot[Transpose@Log[Values[se]], DataReversed -> True, AspectRatio -> 1]"SpeechAperiodicity" 属性返回信号的非周期性分量的系数:
a = ExampleData[{"Audio", "MaleVoice"}];
ap = AudioLocalMeasurements[a, "SpeechAperiodicity"]MatrixPlot[Transpose@Log[Values[ap]], DataReversed -> True, AspectRatio -> 1]选项 (5)
校准 (1)
TimeSeries 结果的时间戳默认放置于每个分段的中心:
a = Import["ExampleData/rule30.wav"];
audioplot = AudioPlot[a, AspectRatio -> 1 / 2, PlotRange -> All, PlotRangePadding -> {.15, .05}, GridLines -> {Table[i, {i, -.15, QuantityMagnitude@Duration@a, .3}], None}];
res = AudioLocalMeasurements[a, "Max", PartitionGranularity -> {.3, .3}];Show[audioplot,
ListPlot[res, PlotStyle -> Red, Filling -> Axis, PlotMarkers -> Automatic, PlotRange -> {-1, 1}]]使用 Alignment->Right 将计算的属性放置于每个分段的结尾:
res = AudioLocalMeasurements[a, "Max", PartitionGranularity -> {.3, .3}, Alignment -> Right];
Show[audioplot,
ListPlot[res, PlotStyle -> Red, Filling -> Axis, PlotMarkers -> Automatic, PlotRange -> {-1, 1}]]填补 (1)
a = Import["ExampleData/rule30.wav"];AudioLocalMeasurements[a, "Max", PaddingSize -> 1]//ListLinePlotAudioLocalMeasurements[a, "Max", Padding -> "Reversed", PaddingSize -> 1]//ListLinePlot填补大小 (1)
a = Import["ExampleData/rule30.wav"];ListLinePlot[AudioLocalMeasurements[a, "Power"]]ListLinePlot[AudioLocalMeasurements[a, "Power", PaddingSize -> 1], PlotRange -> All]ListLinePlot[AudioLocalMeasurements[a, "Power", PaddingSize -> {0, 2}], PlotRange -> All]PartitionGranularity (2)
a = Import["ExampleData/rule30.wav"];AudioLocalMeasurements[a, "Power", PartitionGranularity -> Quantity[100, "Milliseconds"]]//ListLinePlotAudioLocalMeasurements[a, "Power", PartitionGranularity -> {Quantity[100, "Milliseconds"], Quantity[10, "Milliseconds"]}]//ListLinePlotAudioLocalMeasurements[a, "Power", PartitionGranularity -> {Quantity[100, "Milliseconds"], Quantity[10, "Milliseconds"], HannWindow}]//ListLinePlota = Import["ExampleData/rule30.wav"];ListLinePlot[{AudioLocalMeasurements[a, "SpectralFlux", PartitionGranularity -> {.05, .01, Automatic}], AudioLocalMeasurements[a, "SpectralFlux", PartitionGranularity -> {.05, .01, None}]}, PlotLegends -> {"HannWindow", "None"}]应用 (4)
a = \!\(\*AudioBox[""]\);properties = {"ComplexDomainDistance", "HighFrequencyContent", "ModifiedKullbackLeibler", "Novelty", "PhaseDeviation"};detectionFunctions = Rescale /@ AudioLocalMeasurements[a, properties, PartitionGranularity -> {.02, .005}];
detectionFunction = Mean[Lookup[detectionFunctions, {"HighFrequencyContent", "ModifiedKullbackLeibler", "Novelty"}]]filteredDetectionFunction = (detectionFunction - MedianFilter[detectionFunction, .02])peaks = FindPeaks[filteredDetectionFunction, 0, 0, 0.07];
ListLinePlot[filteredDetectionFunction, PlotRange -> All, ImageSize -> Medium, Epilog -> {Red, PointSize[0.02], Point[peaks//Normal]}]AudioPlot[a, ColorFunction -> Function[{x, y}, If[AnyTrue[peaks["Times"], Abs[x - #] < .015&], RGBColor[1, 0.2, 0.2], RGBColor[0.368417, 0.506779, 0.709798]]], PlotRange -> {All, All}, ImageSize -> Medium, FillingStyle -> Opacity[.9]]a = Audio["http://exampledata.wolfram.com/bach.mp3"]mfcc = AudioLocalMeasurements[AudioResample[a, 11025], "LPC", PartitionGranularity -> {.5, .25}]["Values"];MatrixPlot[DistanceMatrix[mfcc], DataRange -> {{0, QuantityMagnitude[Duration@a, "s"]}, {0, QuantityMagnitude[Duration@a, "s"]}}, ImageSize -> 300, FrameTicks -> {Automatic, Automatic}]alice = {\!\(\*AudioBox[""]\), \!\(\*AudioBox[""]\)};mfcc = AudioLocalMeasurements[#, "MFCC", PartitionGranularity -> {.05, .01}]["Values"]& /@ alice;Column[MatrixPlot[#, PlotTheme -> "Minimal", MaxPlotPoints -> 2000, AspectRatio -> 1 / 10, ImageSize -> Medium]& /@ Transpose /@ mfcc]使用 WarpingCorrespondence 计算介于俩记录间的动态时间翘曲响应:
{n, m} = WarpingCorrespondence[mfcc[[1]], mfcc[[2]]];dur = QuantityMagnitude[Duration[alice[[1]]], "s"];
s = {n, m} / Max[{n, m}]dur;
Labeled[
ListLinePlot[
s, AspectRatio -> 1, PlotStyle -> Thickness[.01], ImageSize -> Medium, Prolog -> {RGBColor[0.6666666666666666, 0.6666666666666666, 0.6666666666666666], {Line[{{#[[1]], 0}, #}], Line[{{0, #[[2]]}, #}]}& /@ (s[[ ;; ;; 100]])}
],
AudioPlot[#, PlotStyle -> RGBColor[0.560181, 0.691569, 0.194885], Frame -> False, Axes -> False, ImageSize -> Medium, AspectRatio -> 1 / 15]& /@ alice, {Bottom, Left}, RotateLabel -> True, Spacings -> {0, 0}]使用 "MFCC" 测量作为特性,计算 ExampleData["Audio"] 不同元素间的距离:
list = Select[ExampleData["Audio"], ExampleData[#, "Duration"] < 10&];
a = ConformAudio[AudioNormalize@AudioChannelMix[#, 1]& /@ ExampleData[#, "Audio"]& /@ list, SampleRate -> 11025];mfcc = AudioLocalMeasurements[#, "MFCC", PartitionGranularity -> {.05, .01}]["Values"]& /@ a;ticks = Thread[{Range[Length@list], Text /@ list[[All, 2]]}];MatrixPlot[DistanceMatrix[mfcc], ImageSize -> Medium, FrameTicks -> {ticks, Apply[Rotate[#, Pi / 2]&, ticks, {2}]}]可能存在的问题 (1)
"FundamentalFrequency" 返回无法估计(帧率可能包含切片或复调音频)基本频率分段的 Missing[] 值:
a = ExampleData[{"Audio", "PianoScale"}, "Audio"];AudioLocalMeasurements[a, "FundamentalFrequency"][0.]AudioLocalMeasurements[Import["ExampleData/rule30.wav"], "FundamentalFrequency"]["Values"]//Short巧妙范例 (3)
使用 AudioGenerator 重复长笛音符的频率和幅度:
a = \!\(\*AudioBox[""]\);计算 "RMSAmplitude" 和 "FundamentalFrequency" 度量:
m = AudioLocalMeasurements[a, {"RMSAmplitude", "FundamentalFrequency"}, MissingDataMethod -> {"Interpolation", InterpolationOrder -> 0}];使用 "FundamentalFrequency" 度量控制结果的频率:
AudioGenerator[{"Sin", m["FundamentalFrequency"]}]%×AudioGenerator[m["RMSAmplitude"]]morse = \!\(\*AudioBox[""]\);rms = AudioLocalMeasurements[morse, "RMSAmplitude", PartitionGranularity -> {.01, .002}];
rounded = Round[rms / Max@rms];
ListLinePlot[rounded]crossings = TimeSeriesInsert[TimeSeries[CrossingDetect[rounded["Values"] - .5, CornerNeighbors -> True], {rounded["Times"]}], {0, 1}];
transients = TimeSeries@Select[Normal@crossings, #[[2]] == 1&];shifted = TimeSeriesShift[transients, -transients["FirstTime"]];
dit = MinimumTimeIncrement[shifted];code = <|".-" -> "a", "-..." -> "b", "-.-." -> "c", "-.." -> "d", "." -> "e", "..-." -> "f", "--." -> "g", "...." -> "h", ".." -> "i", ".---" -> "j", "-.-" -> "k", ".-.." -> "l", "--" -> "m", "-." -> "n", "---" -> "o", ".--." -> "p", "--.-" -> "q", ".-." -> "r", "..." -> "s", "-" -> "t", "..-" -> "u", "...-" -> "v", ".--" -> "w", "-..-" -> "x", "-.--" -> "y", "--.." -> "z", ".----" -> "1", "..---" -> "2", "...--" -> "3", "....-" -> "4", "....." -> "5", "-...." -> "6", "--..." -> "7", "---.." -> "8", "----." -> "9", "-----" -> "0", ".-.-.-" -> ".", "--..--" -> ",", "-.-.--" -> "!", "..--.." -> "?", "_" -> " "|>;StringJoin[StringSplit[StringJoin[Table[{Differences[shifted["Times"]][[i]], Mod[i, 2]}, {i, Length@Differences[shifted["Times"]]}] /. {{x_, 1} /; .5dit < x < 1.5dit -> ".", {x_, 1} /; 2.5dit < x < 3.5dit -> "-", {x_, 0} /; 2.5dit < x < 3.5dit -> "/", {x_, 0} /; .5dit < x < 1.5dit -> Nothing, {x_, 0} /; 5dit < x < 12dit -> "/_/"}], "/"] /. Normal[code]]a = ExampleData[{"Audio", "Drums"}];
AudioPlot[a, PlotRange -> All]dur = QuantityMagnitude[Duration@a, "s"]aspectRatio = 1 / 3;
numPoints = 100;
minmax = Normal[aspectRatio dur AudioLocalMeasurements[a, #, PartitionGranularity -> {dur / numPoints, dur / numPoints}]]& /@ {"Min", "Max"};RegionProduct[Polygon[Join[minmax[[1]], Reverse[minmax[[2]]]]], Line[{{0}, {0.1 dur}}]]Printout3D[%, "waveform.stl"]文本
Wolfram Research (2016),AudioLocalMeasurements,Wolfram 语言函数,https://reference.wolfram.com/language/ref/AudioLocalMeasurements.html (更新于 2024 年).
CMS
Wolfram 语言. 2016. "AudioLocalMeasurements." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/AudioLocalMeasurements.html.
APA
Wolfram 语言. (2016). AudioLocalMeasurements. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/AudioLocalMeasurements.html 年
BibTeX
@misc{reference.wolfram_2026_audiolocalmeasurements, author="Wolfram Research", title="{AudioLocalMeasurements}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/AudioLocalMeasurements.html}", note=[Accessed: 11-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_audiolocalmeasurements, organization={Wolfram Research}, title={AudioLocalMeasurements}, year={2024}, url={https://reference.wolfram.com/language/ref/AudioLocalMeasurements.html}, note=[Accessed: 11-August-2026]}