Использование динамической трансформации шкалы времени для сравнения аудио записей
Импортируем и обработаем четыре записи первого предложения в произведении "Алиса в стране чудес".
код на языке Wolfram Language целиком
In[2]:=
alice = ConformAudio[
MapThread[
AudioNormalize[
AudioChannelMix[AudioTrim[AudioResample[Import[#1], 11025], #2],
1]] &, {urls, times}]]
Out[2]=
Покажем на графике каждую из четырех аудио волн.
In[3]:=
AudioPlot[alice, ImageSize -> Medium]
Out[3]=
Рассчитаем и отобразим на графике особенности спектральной плотности MFCC для выбранных аудио файлов.
In[4]:=
mfcc = AudioLocalMeasurements[#, "MFCC",
PartitionGranularity -> {.05, .01}]["Values"] & /@ alice;
In[5]:=
Column[MatrixPlot[#, PlotTheme -> "Minimal", ImageSize -> Medium] & /@
Transpose /@ mfcc]
Out[5]=
Подсчитаем динамическое расстояние временного масштаба между записями с помощью функции WarpingDistance.
In[6]:=
DistanceMatrix[mfcc,
DistanceFunction -> WarpingDistance] // MatrixPlot
Out[6]=
Рассмотрим соответствие параметров динамической трансформации шкалы времени для двух записей (из четырех) с использованием функции WarpingCorrespondence.
In[7]:=
{n, m} = WarpingCorrespondence[mfcc[[1]], mfcc[[2]]];
код на языке Wolfram Language целиком
Out[8]=