AudioDistance[audio1,audio2]
返回 audio1 与 audio2 间的距离度量.
AudioDistance[video1,video2]
返回 video1 和 video2 音轨之间的距离测量值.
AudioDistance
AudioDistance[audio1,audio2]
返回 audio1 与 audio2 间的距离度量.
AudioDistance[video1,video2]
返回 video1 和 video2 音轨之间的距离测量值.
更多信息和选项
- AudioDistance 计算音频对象间的不相似度量,可能使用不同的距离函数比较信号的波形或其他特征.
- 如果 audio1 和 audio2 是不同的长度,默认情况下,把信号修建为更短的长度,然后计算距离.
- 可以指定以下选项:
-
DistanceFunction Automatic 使用的距离函数 Masking Automatic 用于比较的音频区间 PartitionGranularity Automatic 音频分区规范 SampleRate Automatic 符合 audioi 的采样率 - 默认情况下,使用 DistanceFunction->Automatic,计算音频波形的 EuclideanDistance. 使用不同的距离函数或不同的特征计算其他度量.
- 以下距离函数是根据 audioi 的傅里叶变换计算的:
-
"SpectralEuclidean" 应用于功率谱的欧几里得(默认) "SpectralItakuraSaito" LPC 衍生的光谱包络的最大似然性 "SpectralMagnitudePhaseDistortion" 幅度和相位频谱距离的平均 "SpectralRMSLog" 应用于功率谱对数的欧几里得 "SpectralFirstOrderDifferential" 一阶频谱导数间的距离 "SpectralSecondOrderDifferential" 二阶频谱导数间的距离 "Cepstral" 应用于功率倒谱的欧几里得 - 还有其他 DistanceFunction 设置并可用于不同的音频特征:
-
EuclideanDistance 欧几里得距离 SquaredEuclideanDistance 平方的欧几里得距离 NormalizedSquaredEuclideanDistance 正则化的平方欧几里得距离 RootMeanSquare 均方根距离 ManhattanDistance 曼哈顿或“城市区块 (city block)”距离 CosineDistance 角余弦距离 CorrelationDistance 相关系数距离 WarpingDistance 动态时间规整 (DTW) 距离 f 任意函数 f - 默认情况下,WarpingDistance 根据 "MFCC" 特征计算,所有其他距离是根据 "AudioData" 计算.
- 使用 DistanceFunction->{method,FeatureExtractor->f},可以指定不同的特征提取器.
- FeatureExtractor 的可能设置包括:
-
"AudioData" 音频数据 "Formants" 信号共振峰的频率 "LPC" 线性预测系数 "MelSpectrogram" 梅尔音阶谱图 "MFCC" 梅尔频率倒谱系数向量序列 "Novelty" 对于重要变化的估计度量 "Spectrogram" 频谱 - 默认情况下,AudioDistance 的计算是基于更短长度的修剪过的信号.
- 使用 Masking 选项,在不同的区间计算距离度量. 可能的设置包括:
-
Automatic 修剪为更短的长度(默认) All 填充到更长的长度 {t1,t2} 比较介于 t1 和 t2 之间的信号 {{t11,t12},{t21,t22}} 比较 audio1 的 t11 到 t12 和 audio2 的 t21 到 t22 - 使用 Masking->{{t22,t12},{t21,t22}},两个区间的长度应该是一样的.
- PartitionGranularity 只用于适用于分区音频的特征,像 "MFCC",否则忽略.
- 默认情况下,SampleRate->Automatic 接收所有 audioi 中最高的采样率.
范例
打开所有单元 关闭所有单元基本范例 (1)
范围 (2)
a = AudioGenerator["Sin", 2];
b = AudioGenerator["Triangle", 1];
AudioDistance[a, b]AudioDistance[AudioTrim[a, 1], b]AudioDistance[Video["ExampleData/fish.mp4"], Video["ExampleData/rule30.mp4"]]选項 (13)
DistanceFunction (6)
默认情况下,使用 "SpectralEuclidean" 距离:
{a, b} = {AudioGenerator["Sin"], AudioGenerator["Triangle"]};
AudioDistance[a, b] === AudioDistance[a, b, DistanceFunction -> "SpectralEuclidean"]{a, b} = {AudioGenerator["Sin"], AudioGenerator["Triangle"]};
distances = {EuclideanDistance, SquaredEuclideanDistance, NormalizedSquaredEuclideanDistance, ManhattanDistance, CosineDistance, CorrelationDistance, RootMeanSquare};res = Table[{d, AudioDistance[a, b, DistanceFunction -> d]}, {d, distances}];
TextGrid[res, Frame -> All]{a, b} = {AudioGenerator["Sin"], AudioGenerator["Triangle"]};
distances = {"SpectralEuclidean", "SpectralItakuraSaito", "SpectralMagnitudePhaseDistortion", "SpectralRMSLog", "SpectralFirstOrderDifferential", "SpectralSecondOrderDifferential", "Cepstral"};res = Table[{d, AudioDistance[a, b, DistanceFunction -> d]}, {d, distances}];
TextGrid[res, Frame -> All]spectralDistances = Table[AudioDistance[AudioGenerator[{"Sin", 440, phase}], b], {phase, 0., 2Pi, .2}];
sampleDistances = Table[AudioDistance[AudioGenerator[{"Sin", 440, phase}], b, DistanceFunction -> EuclideanDistance], {phase, 0., 2Pi, .2}];ListLinePlot[Normalize /@ {spectralDistances, sampleDistances}, DataRange -> {0, 2Pi}, PlotLegends -> {"Spectral Euclidean", "Euclidean"}, AxesLabel -> {"phase", "normalized distance"}]{a, b} = {AudioGenerator["Sin"], AudioGenerator["Triangle"]};
AudioDistance[a, b, DistanceFunction -> EuclideanDistance]distances = {EuclideanDistance, SquaredEuclideanDistance, NormalizedSquaredEuclideanDistance, ManhattanDistance, CosineDistance, CorrelationDistance, RootMeanSquare};
Table[{d, AudioDistance[a, b, DistanceFunction -> d] == AudioDistance[a, b, DistanceFunction -> {d, FeatureExtractor -> "AudioData"}]}, {d, distances}]//TextGrid使用 WarpingDistance 时,默认情况下使用 "MFCC" 特征:
{a, b} = {AudioGenerator["Sin"], AudioGenerator["Triangle"]};AudioDistance[a, b, DistanceFunction -> WarpingDistance]% == AudioDistance[a, b, DistanceFunction -> {WarpingDistance, FeatureExtractor -> "MFCC"}]{a, b} = {AudioGenerator["Sin"], AudioGenerator["Triangle"]};
AudioDistance[a, b, DistanceFunction -> {EuclideanDistance, FeatureExtractor -> "MFCC"}]除了 "AudioData" 的所有特征都是基于信号的短时傅里叶变换计算的:
features = {"AudioData", "Spectrogram", "MelSpectrogram", "MFCC", "Novelty", "Formants", "LPC"};Table[{f, AudioDistance[a, b, DistanceFunction -> {EuclideanDistance, FeatureExtractor -> f}]}, {f, features}]//TextGrid[#, Frame -> All]&Masking (4)
{a, b, c} = {AudioGenerator["Sin"], AudioGenerator["Triangle"], AudioGenerator["Sin", 2]};AudioDistance[a, b]
AudioDistance[c, b]AudioDistance[c, b, Masking -> All]使用 Masking 选项比较两个音频对象的指定区间:
a = ExampleData[{"Audio", "FemaleVoice"}];
b = ExampleData[{"Audio", "MaleVoice"}];AudioDistance[a, b, Masking -> {1, 1.5}]a = ExampleData[{"Audio", "FemaleVoice"}]times = Table[t, {t, 0, 3.9, .1}];
duration = .35;dist = Table[
AudioDistance[a, a, Masking -> {{0, duration}, {t, t + duration}}, DistanceFunction -> "SpectralMagnitudePhaseDistortion"], {t, times}];
ListLinePlot[dist, PlotRange -> All, DataRange -> MinMax[times]]a = ExampleData[{"Audio", "FemaleVoice"}];
b = ExampleData[{"Audio", "MaleVoice"}];AudioDistance[a, b, Masking -> All]PartitionGranularity (2)
使用 PartitionGranularity 选项控制特征的计算:
a = ExampleData[{"Audio", "FemaleVoice"}];
b = ExampleData[{"Audio", "MaleVoice"}];AudioDistance[a, b, PartitionGranularity -> Quantity[46, "Milliseconds"], DistanceFunction -> {EuclideanDistance, FeatureExtractor -> "MFCC"}]AudioDistance[a, b, PartitionGranularity -> Quantity[92, "Milliseconds"], DistanceFunction -> {EuclideanDistance, FeatureExtractor -> "MFCC"}]如果选择的特征是 "AudioData",PartitionGranularity 选项会被忽略:
a = ExampleData[{"Audio", "FemaleVoice"}];
b = ExampleData[{"Audio", "MaleVoice"}];AudioDistance[a, b, PartitionGranularity -> Quantity[46, "Milliseconds"], DistanceFunction -> {EuclideanDistance, FeatureExtractor -> AudioData}]AudioDistance[a, b, PartitionGranularity -> Quantity[92, "Milliseconds"], DistanceFunction -> {EuclideanDistance, FeatureExtractor -> AudioData}]SampleRate (1)
AudioDistance[AudioGenerator["Sin"], AudioGenerator["Triangle", SampleRate -> 11025]]AudioDistance[AudioGenerator["Sin"], AudioResample[AudioGenerator["Triangle", SampleRate -> 11025], 44100]]AudioDistance[AudioGenerator["Sin"], AudioGenerator["Triangle", SampleRate -> 11025], SampleRate -> 11025]应用 (1)
waveforms = {"Sin", "Triangle", "Sawtooth", "Square"};m = DistanceMatrix[AudioGenerator /@ waveforms, DistanceFunction -> AudioDistance];
MatrixPlot[m, FrameTicks -> {Thread[{Range[4], waveforms}]}]AudioPlot[AudioGenerator /@ waveforms, PlotRange -> .01]文本
Wolfram Research (2018),AudioDistance,Wolfram 语言函数,https://reference.wolfram.com/language/ref/AudioDistance.html (更新于 2024 年).
CMS
Wolfram 语言. 2018. "AudioDistance." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/AudioDistance.html.
APA
Wolfram 语言. (2018). AudioDistance. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/AudioDistance.html 年
BibTeX
@misc{reference.wolfram_2026_audiodistance, author="Wolfram Research", title="{AudioDistance}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/AudioDistance.html}", note=[Accessed: 16-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_audiodistance, organization={Wolfram Research}, title={AudioDistance}, year={2024}, url={https://reference.wolfram.com/language/ref/AudioDistance.html}, note=[Accessed: 16-August-2026]}