Язык Wolfram Language

Вычислительное аудио

Обнаружение сегментов аудио с звуком и без

Обнаружим сегменты аудио в которых отсутствует звук и уменьшим их интенсивность.

In[1]:=
Click for copyable input
a = ExampleData[{"Audio", "NoisyTalk"}, "Audio"]
Out[1]=

Воспользуемся функцией AudioIntervals для обнаружения сегментов с низким среднеквадратичным значением амплитуды и высокой спектральной плоскостностью.

In[2]:=
Click for copyable input
nonVoicedIntervals = AudioIntervals[ a, #RMSAmplitude < .02 && #SpectralFlatness > .0001 &, .1, PartitionGranularity -> {.06, .01}]
Out[2]=

Визуализируем обнаруженные интервалы в звуковом сигнале.

In[3]:=
Click for copyable input
AudioPlot[a, Epilog -> {RGBColor[1, 0, 0, .3], Rectangle[{#[[1]], -1}, {#[[2]], 1}] & /@ nonVoicedIntervals}, ImageSize -> Medium]
Out[3]=

Уменьшим интенсивность обнаруженных интервалов.

In[4]:=
Click for copyable input
AudioJoin[ Riffle[AudioFade /@ AudioTrim[a, Except@nonVoicedIntervals], 0.3*AudioTrim[a, nonVoicedIntervals]]]
Out[4]=

Родственные примеры

de en es fr ja ko pt-br zh