exponenta event banner

Спектральные дескрипторы

Аудио Toolbox™ обеспечивает набор функций, которые описывают форму звука, иногда называемую тембром. В этом примере определяются уравнения, используемые для определения спектральных характеристик, приводится общее использование каждой характеристики и приводятся примеры, позволяющие получить интуицию о том, что описывают спектральные дескрипторы.

Спектральные дескрипторы широко используются в приложениях машинного и глубокого обучения, а также в анализе восприятия. Спектральные дескрипторы были применены в ряде областей применения, включая:

  • Идентификация и распознавание ораторов [21]

  • Распознавание акустической сцены [11] [17]

  • Признание инструмента [22]

  • Классификация музыкальных жанров [16] [18]

  • Распознавание настроения [19] [20]

  • Голосовое обнаружение деятельности 5[] 7[] 8[] 10[] 12[] 13[]

Spectral Centroid

Спектральный центроид (spectralCentroid) - взвешенная по частоте сумма, нормализованная по невзвешенной сумме [1]:

μ1 =  k=b1b2fk sk∑k=b1b2sk

где

  • fk - частота в Гц, соответствующая ячейке k.

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 - края полосы в ячейках, по которым вычисляется спектральный центроид.

Спектральный центроид представляет собой «центр тяжести» спектра. Используется как указание на яркость [2] и обычно используется в музыкальном анализе и жанровой классификации. Например, наблюдайте прыжки в центроиде, соответствующие попаданиям high hat в аудиофайл.

[audio,fs] = audioread('FunkyDrums-44p1-stereo-25secs.mp3');
audio = sum(audio,2)/2;

centroid = spectralCentroid(audio,fs);

subplot(2,1,1)
t = linspace(0,size(audio,1)/fs,size(audio,1));
plot(t,audio)
ylabel('Amplitude')

subplot(2,1,2)
t = linspace(0,size(audio,1)/fs,size(centroid,1));
plot(t,centroid)
xlabel('Time (s)')
ylabel('Centroid (Hz)')

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Спектральный центроид также обычно используется для классификации речи как звонкой или невокализированной [3]. Например, центроид скачет в областях невокализированной речи.

[audio,fs] = audioread('Counting-16-44p1-mono-15secs.wav');

centroid = spectralCentroid(audio,fs);

subplot(2,1,1)
t = linspace(0,size(audio,1)/fs,size(audio,1));
plot(t,audio)
ylabel('Amplitude')

subplot(2,1,2)
t = linspace(0,size(audio,1)/fs,size(centroid,1));
plot(t,centroid)
xlabel('Time (s)')
ylabel('Centroid (Hz)')

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Spectral Spread

Спектральный разброс (spectralSpread) - стандартное отклонение вокруг спектрального центроида [1]:

μ2=∑k=b1b2 (fk-мк1) 2sk∑k=b1b2sk

где

  • fk - частота в Гц, соответствующая ячейке k.

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 - края полосы в ячейках, по которым вычисляется спектральный разброс.

  • мк1 - спектральный центроид.

Спектральный разброс представляет «мгновенную полосу пропускания» спектра. Используется как указание на доминирование тона. Например, разброс увеличивается, когда тоны расходятся и уменьшается, когда тоны сходятся.

fs = 16e3;
tone = audioOscillator('SampleRate',fs,'NumTones',2,'SamplesPerFrame',512,'Frequency',[2000,100]);
duration = 5;
numLoops = floor(duration*fs/tone.SamplesPerFrame);
signal = [];
for i = 1:numLoops
    signal = [signal;tone()];
    if i<numLoops/2
        tone.Frequency = tone.Frequency + [0,50];
    else
        tone.Frequency = tone.Frequency - [0,50];
    end
end

spread = spectralSpread(signal,fs);

subplot(2,1,1)
spectrogram(signal,round(fs*0.05),round(fs*0.04),2048,fs,'yaxis')

subplot(2,1,2)
t = linspace(0,size(signal,1)/fs,size(spread,1));
plot(t,spread)
xlabel('Time (s)')
ylabel('Spread')

Figure contains 2 axes. Axes 1 contains an object of type image. Axes 2 contains an object of type line.

Spectral Skewness

Спектральный перекос (spectralSkewness) вычисляется с момента третьего порядка [1]:

μ3=∑k=b1b2 (фк-мк1) 3ск (мк2) 3∑k=b1b2sk

где

  • fk - частота в Гц, соответствующая ячейке k.

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 являются краями полосы в ячейках, по которым вычисляется спектральная асимметрия.

  • мк1 - спектральный центроид.

  • мк2 - спектральный разброс.

Спектральный перекос измеряет симметрию вокруг центроида. В фонетике спектральный перекос часто называют спектральным наклоном и используют с другими спектральными моментами для различения места артикуляции [4]. Для гармонических сигналов указывает относительную прочность высших и нижних гармоник. Например, в четырехтональном сигнале имеется положительный перекос, когда нижний тон является доминирующим, и отрицательный перекос, когда верхний тон является доминирующим.

fs = 16e3;
duration = 99;
tone = audioOscillator('SampleRate',fs,'NumTones',4,'SamplesPerFrame',fs,'Frequency',[500,2000,2500,4000],'Amplitude',[0,0.4,0.6,1]);

signal = [];
for i = 1:duration
    signal = [signal;tone()];
    tone.Amplitude = tone.Amplitude + [0.01,0,0,-0.01];
end

skewness = spectralSkewness(signal,fs);
t = linspace(0,size(signal,1)/fs,size(skewness,1))/60;

subplot(2,1,1)
spectrogram(signal,round(fs*0.05),round(fs*0.04),round(fs*0.05),fs,'yaxis','power')
view([-58 33])

subplot(2,1,2)
plot(t,skewness)
xlabel('Time (minutes)')
ylabel('Skewness')

Figure contains 2 axes. Axes 1 contains an object of type surface. Axes 2 contains an object of type line.

Spectral Kurtosis

Спектральный куртоз (spectralKurtosis) вычисляется с момента четвертого порядка [1]:

μ4=∑k=b1b2 (фк-мк1) 4ск (мк2) 4∑k=b1b2sk

где

  • fk - частота в Гц, соответствующая ячейке k.

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 - края полосы в ячейках, по которым вычисляется спектральный куртоз.

  • мк1 - спектральный центроид.

  • мк2 - спектральный разброс.

Спектральный куртоз измеряет плоскостность, или негауссовость, спектра вокруг его центроида. И наоборот, он используется для указания пиковости спектра. Например, когда белый шум увеличивается на речевом сигнале, куртоз уменьшается, указывая на менее резкий спектр.

[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');

noiseGenerator = dsp.ColoredNoise('Color','white','SamplesPerFrame',size(audioIn,1));

noise = noiseGenerator();
noise = noise/max(abs(noise));
ramp = linspace(0,.25,numel(noise))';
noise = noise.*ramp;

audioIn = audioIn + noise;

kurtosis = spectralKurtosis(audioIn,fs);

t = linspace(0,size(audioIn,1)/fs,size(audioIn,1));
subplot(2,1,1)
plot(t,audioIn)
ylabel('Amplitude')

t = linspace(0,size(audioIn,1)/fs,size(kurtosis,1));
subplot(2,1,2)
plot(t,kurtosis)
xlabel('Time (s)')
ylabel('Kurtosis')

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Spectral Entropy

Спектральная энтропия (spectralEntropy) измеряет пики спектра [6]:

entropy=-∑k=b1b2sklog (sk) log (b2-b1)

где

  • fk - частота в Гц, соответствующая ячейке k.

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 - границы полосы в ячейках, по которым вычисляется спектральная энтропия.

Спектральная энтропия успешно используется в голосовых/невокализированных решениях для автоматического распознавания речи [6]. Поскольку энтропия является мерой беспорядка, области озвученной речи имеют более низкую энтропию по сравнению с областями невокализированной речи.

[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');

entropy = spectralEntropy(audioIn,fs);

t = linspace(0,size(audioIn,1)/fs,size(audioIn,1));
subplot(2,1,1)
plot(t,audioIn)
ylabel('Amplitude')

t = linspace(0,size(audioIn,1)/fs,size(entropy,1));
subplot(2,1,2)
plot(t,entropy)
xlabel('Time (s)')
ylabel('Entropy')

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Спектральная энтропия также использовалась для различения речи и музыки [7] [8]. Например, сравните гистограммы энтропии для речевых, музыкальных и фоновых аудиофайлов.

fs = 8000;
[speech,speechFs] = audioread('Rainbow-16-8-mono-114secs.wav');
speech = resample(speech,fs,speechFs);
speech = speech./max(speech);

[music,musicFs] = audioread('RockGuitar-16-96-stereo-72secs.flac');
music = sum(music,2)/2;
music = resample(music,fs,musicFs);
music = music./max(music);

[background,backgroundFs] = audioread('Ambiance-16-44p1-mono-12secs.wav');
background = resample(background,fs,backgroundFs);
background = background./max(background);

speechEntropy     = spectralEntropy(speech,fs);
musicEntropy      = spectralEntropy(music,fs);
backgroundEntropy = spectralEntropy(background,fs);

figure
h1 = histogram(speechEntropy);
hold on
h2 = histogram(musicEntropy);
h3 = histogram(backgroundEntropy);

h1.Normalization = 'probability';
h2.Normalization = 'probability';
h3.Normalization = 'probability';
h1.BinWidth = 0.01;
h2.BinWidth = 0.01;
h3.BinWidth = 0.01;
title('Spectral Entropy')
legend('Speech','Music','Background','Location',"northwest")
xlabel('Entropy')
ylabel('Probability')
hold off

Figure contains an axes. The axes with title Spectral Entropy contains 3 objects of type histogram. These objects represent Speech, Music, Background.

Spectral Flatness

Спектральная плоскостность (spectralFlatness) измеряет отношение среднего геометрического спектра к среднему арифметическому спектра [9]:

плоскостность = (∏k=b1b2sk) 1b2-b11b2-b1∑k=b1b2sk

где

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 - края полосы в ячейках, по которым вычисляется спектральная плоскостность.

Спектральная плоскостность является показателем пиковости спектра. Более высокая спектральная плоскостность указывает на шум, в то время как более низкая спектральная плоскостность указывает на тональность.

[audio,fs] = audioread('WaveGuideLoopOne-24-96-stereo-10secs.aif');
audio = sum(audio,2)/2;

noise = (2*rand(numel(audio),1)-1).*linspace(0,0.05,numel(audio))';

audio = audio + noise;

flatness = spectralFlatness(audio,fs);

subplot(2,1,1)
t = linspace(0,size(audio,1)/fs,size(audio,1));
plot(t,audio)
ylabel('Amplitude')

subplot(2,1,2)
t = linspace(0,size(audio,1)/fs,size(flatness,1));
plot(t,flatness)
ylabel('Flatness')
xlabel('Time (s)')

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Спектральная плоскостность также была успешно применена для обнаружения речи пения [10] и для распознавания звуковой сцены [11].

Spectral Crest

Спектральный гребень (spectralCrest) измеряет отношение максимума спектра к среднему арифметическому спектра [1]:

гребень = max (skϵ[b1,b2]) 1b2-b1∑k=b1b2sk

где

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 - края полосы в ячейках, по которым вычисляется спектральный гребень.

Спектральный гребень является показателем пиковости спектра. Более высокий спектральный гребень указывает на большую тональность, в то время как более низкий спектральный гребень указывает на больший шум.

[audio,fs] = audioread('WaveGuideLoopOne-24-96-stereo-10secs.aif');
audio = sum(audio,2)/2;

noise = (2*rand(numel(audio),1)-1).*linspace(0,0.2,numel(audio))';

audio = audio + noise;

crest = spectralCrest(audio,fs);

subplot(2,1,1)
t = linspace(0,size(audio,1)/fs,size(audio,1));
plot(t,audio)
ylabel('Amplitude')

subplot(2,1,2)
t = linspace(0,size(audio,1)/fs,size(crest,1));
plot(t,crest)
ylabel('Crest')
xlabel('Time (s)')

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Spectral Flux

Спектральный поток (spectralFlux) - мера изменчивости спектра во времени [12]:

поток (t) = (∑k=b1b2|sk (t) -sk (t-1) | p) 1p

где

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 - границы полосы в ячейках, по которым вычисляется спектральный поток.

  • p - тип нормы.

Спектральный поток широко используется при обнаружении начала [13] и сегментации звука [14]. Например, удары в барабанной дорожке соответствуют высокоспектральному потоку.

[audio,fs] = audioread('FunkyDrums-48-stereo-25secs.mp3');
audio = sum(audio,2)/2;

flux = spectralFlux(audio,fs);

subplot(2,1,1)
t = linspace(0,size(audio,1)/fs,size(audio,1));
plot(t,audio)
ylabel('Amplitude')

subplot(2,1,2)
t = linspace(0,size(audio,1)/fs,size(flux,1));
plot(t,flux)
ylabel('Flux')
xlabel('Time (s)')

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Spectral Slope

Спектральный наклон (spectralSlope) измеряет величину уменьшения спектра [15]:

slope=∑k=b1b2 (fk-мкф) (sk-мкс) ∑k=b1b2 (fk-мкф) 2

где

  • fk - частота в Гц, соответствующая ячейке k.

  • мкф - средняя частота.

  • sk - спектральное значение в ячейке k. Обычно используется амплитудный спектр.

  • мкс - среднее спектральное значение.

  • b1 и b2 - края полосы в ячейках, по которым вычисляется спектральный наклон.

Спектральный наклон широко использовался при анализе речи, в частности при моделировании напряжения динамиков [19]. Наклон непосредственно связан с резонансными характеристиками голосовых складок и также применен к идентификации говорящего [21]. Спектральный наклон является социально важным аспектом тембра. Показано, что спектральная дискриминация наклона имеет место в раннем детском развитии [20]. Спектральный наклон наиболее выражен, когда энергия в нижних формантах намного больше, чем энергия в высших формантах.

[female,femaleFs] = audioread('FemaleSpeech-16-8-mono-3secs.wav');
female = female./max(female);


femaleSlope = spectralSlope(female,femaleFs);
t = linspace(0,size(female,1)/femaleFs,size(femaleSlope,1));
subplot(2,1,1)
spectrogram(female,round(femaleFs*0.05),round(femaleFs*0.04),round(femaleFs*0.05),femaleFs,'yaxis','power')

subplot(2,1,2)
plot(t,femaleSlope)
title('Female Speaker')
ylabel('Slope')
xlabel('Time (s)')

Figure contains 2 axes. Axes 1 contains an object of type image. Axes 2 with title Female Speaker contains an object of type line.

Spectral Decrease

Спектральное уменьшение (spectralDecrease) представляет собой величину уменьшения спектра, подчеркивая при этом наклоны нижних частот [1]:

decrease=∑k=b1+1b2sk-sb1k-1∑k=b1+1b2sk

где

  • sk - спектральное значение в ячейке k. Обычно используется амплитудный спектр.

  • b1 и b2 - края полосы в ячейках, по которым вычисляется спектральное уменьшение.

Спектральное уменьшение используется реже, чем спектральный наклон в речевой литературе, но оно обычно используется, наряду с наклоном, в анализе музыки. В частности, показано, что уменьшение спектра хорошо выполняет функцию распознавания приборов [22].

[guitar,guitarFs] = audioread('RockGuitar-16-44p1-stereo-72secs.wav');
guitar = mean(guitar,2);
[drums,drumsFs] = audioread('RockDrums-44p1-stereo-11secs.mp3');
drums = mean(drums,2);

guitarDecrease = spectralDecrease(guitar,guitarFs);
drumsDecrease = spectralDecrease(drums,drumsFs);

t1 = linspace(0,size(guitar,1)/guitarFs,size(guitarDecrease,1));
t2 = linspace(0,size(drums,1)/drumsFs,size(drumsDecrease,1));

subplot(2,1,1)
plot(t1,guitarDecrease)
title('Guitar')
ylabel('Decrease')
axis([0 10 -0.3 0.3])

subplot(2,1,2)
plot(t2,drumsDecrease)
title('Drums')
ylabel('Decrease')
xlabel('Time (s)')
axis([0 10 -0.3 0.3])

Figure contains 2 axes. Axes 1 with title Guitar contains an object of type line. Axes 2 with title Drums contains an object of type line.

Spectral Rolloff Point

Точка спектрального отката (spectralRolloffPoint) измеряет ширину полосы звукового сигнала, определяя частотный блок, при котором существует заданный процент от общей энергии [12]:

Точка отката = i, что ∑k=b1i'sk|=κ ∑k=b1b2sk

где

  • sk - спектральное значение в ячейке k. Обычно используются спектр амплитуды и спектр мощности.

  • b1 и b2 - края полосы в ячейках, по которым вычисляется точка спектрального отката.

  • δ - заданный порог энергии, обычно 95% или 85%.

i преобразуется в Гц, прежде чем возвращается spectralRolloffPoint.

Спектральная точка отката использовалась для различения звонкой и невокализированной речи, распознавания речи/музыки [12], классификации музыкальных жанров [16], распознавания акустических сцен [17] и классификации музыкальных настроений [18]. Например, наблюдать различное среднее и отклонение точки отката для речи, рок-гитары, акустической гитары и акустической сцены.

dur = 5; % Clip out 5 seconds from each file.

[speech,fs1] = audioread('SpeechDFT-16-8-mono-5secs.wav');
speech = speech(1:min(end,fs1*dur));

[electricGuitar,fs2] = audioread('RockGuitar-16-44p1-stereo-72secs.wav');
electricGuitar = mean(electricGuitar,2); % Convert to mono for comparison.
electricGuitar = electricGuitar(1:fs2*dur);

[acousticGuitar,fs3] = audioread('SoftGuitar-44p1_mono-10mins.ogg');
acousticGuitar = acousticGuitar(1:fs3*dur);

[acousticScene,fs4] = audioread('MainStreetOne-16-16-mono-12secs.wav');
acousticScene = acousticScene(1:fs4*dur);

r1 = spectralRolloffPoint(speech,fs1);
r2 = spectralRolloffPoint(electricGuitar,fs2);
r3 = spectralRolloffPoint(acousticGuitar,fs3);
r4 = spectralRolloffPoint(acousticScene,fs4);

t1 = linspace(0,size(speech,1)/fs1,size(r1,1));
t2 = linspace(0,size(electricGuitar,1)/fs2,size(r2,1));
t3 = linspace(0,size(acousticGuitar,1)/fs3,size(r3,1));
t4 = linspace(0,size(acousticScene,1)/fs4,size(r4,1));

figure
plot(t1,r1)
title('Speech')
ylabel('Rolloff Point (Hz)')
xlabel('Time (s)')
axis([0 5 0 4000])

Figure contains an axes. The axes with title Speech contains an object of type line.

figure
plot(t2,r2)
title('Rock Guitar')
ylabel('Rolloff Point (Hz)')
xlabel('Time (s)')
axis([0 5 0 4000])

Figure contains an axes. The axes with title Rock Guitar contains an object of type line.

figure
plot(t3,r3)
title('Acoustic Guitar')
ylabel('Rolloff Point (Hz)')
xlabel('Time (s)')
axis([0 5 0 4000])

Figure contains an axes. The axes with title Acoustic Guitar contains an object of type line.

figure
plot(t4,r4)
title('Acoustic Scene')
ylabel('Rolloff Point (Hz)')
xlabel('Time (s)')
axis([0 5 0 4000])

Figure contains an axes. The axes with title Acoustic Scene contains an object of type line.

Ссылки

[1] Peeters, G. «Большой набор звуковых функций для описания звука (подобие и классификация) в проекте CUIDADO». Технический отчет; ИРКАМ: Париж, Франция, 2004 год.

[2] Грей, Джон М. и Джон В. Гордон. «Перцепционные эффекты спектральных модификаций на музыкальные тембры». Журнал Акустического общества Америки. Том 63, выпуск 5, 1978, стр. 1493-1500.

[3] Рэйми, Эрик и Чарльз Э. Кэрнс. Сегмент в фонетике и фонологии. Хобокен, Нью-Джерси: John Wiley & Sons Inc., 2015.

[4] Джонгмен, Allard, и др. «Акустические характеристики английских фрикативов». Журнал Акустического общества Америки. Том 108, выпуск 3, 2000, стр. 1252-1263.

[5] С. Чжан, Я. Го и К. Чжан, «Надежное проектирование функций обнаружения голосовой активности на основе спектрального куртоза». Первое международное рабочее совещание по вопросам образовательных технологий и компьютерных наук, 2009 год, стр. 269-272.

[6] Мисра, Х., С. Икбал, Х. Бурлард и Х. Херманский. Международная конференция IEEE 2004 по акустике, речи и обработке сигналов.

[7] А. Пикракис, Т. Джаннакопулос и С. Теодоридис. «Вычислительно эффективный дискриминатор речи/музыки для радиозаписей». Международная конференция по поиску музыкальной информации и смежной деятельности, 2006 год.

[8] Pikrakis, A., et al. «Дискриминатор речи/музыки радиозаписей на основе динамического программирования и байесовских сетей». Транзакции IEEE для мультимедиа. Том 10, выпуск 5, 2008, стр. 846-857.

[9] Джонстон, Джей Ди. «Преобразование кодирования аудиосигналов с использованием критериев воспринимаемого шума». Журнал IEEE по выбранным областям в коммуникациях. Том 6, выпуск 2, 1988, стр. 314-323.

[10] Lehner, Bernhard, et al. Международная конференция IEEE 2014 по акустике, речи и обработке сигналов (ICASSP), 2014.

[11] Y. Petetin, C. Laroche и A. Mayoue, «Deep Neural Networks for Audio Scene Recognition», 2015 23-я Европейская конференция по обработке сигналов (EUSIPCO), 2015.

[12] Scheirer, E. и М. Слэни. 1997 Международная конференция IEEE по акустике, речи и обработке сигналов, 1997.

[13] С. Диксон, «Повторное обнаружение начала». Международная конференция по цифровым звуковым эффектам. Том 120, 2006, стр. 133-137.

[14] Цанетакис, Г. и П. Кук. «Многофакторная сегментация звука для просмотра и аннотирования». Материалы семинара IEEE 1999 года по применению обработки сигналов к аудио- и акустике, 1999 год.

[15] Лерч, Александр. Введение в приложения для анализа аудиоконтента в области обработки сигналов и музыкальной информатики. Piscataway, NJ: IEEE Press, 2012.

[16] Литий, дао и М. Оджихара. «Классификация музыкальных жанров с таксономией». Международная конференция IEEE по акустике, речи и обработке сигналов, 2005 год.

[17] Эронен, А. Дж., В. Т. Пелтонен, Ж. Т. Туоми, А. П. Клапури, С. Фагерлунд, Т. Сорса, Г. Лорхо и Ж. Хуопаниеми. «Распознавание контекста на основе звука». Транзакции IEEE по обработке звука, речи и языка. Том 14, выпуск 1, 2006, стр. 321-329.

[18] Жэнь, Цзя-Мин, Мин-Джу Ву и Цзе-Шин Роджер Чан. «Автоматическая классификация музыкального настроения на основе параметров тембра и модуляции». Транзакции IEEE по аффективным вычислениям. Том 6, выпуск 3, 2015, стр. 236-246.

[19] Хансен, Джон Х. Л. и Санджай Патил. «Речь под напряжением: анализ, моделирование и распознавание». Лекции по информатике. Том 4343, 2007, стр. 108-137.

[20] Цанг, Кристин Д. и Лорел Дж. Трейнор. «Дискриминация спектрального наклона в младенчестве: чувствительность к социально важным тембрам». Детское поведение и развитие. Том 25, выпуск 2, 2002, стр. 183-194.

[21] Мурти, Х. А., Ф. Бофейс, Л. П. Хек и М. Вайнтрауб. «Надежная, независимая от текста идентификация громкоговорителя по телефонным каналам». Транзакции IEEE по обработке речи и звука. Том 7, выпуск 5, 1999, стр. 554-568.

[22] Эссид, С., Г. Ричард и Б. Дэвид. «Распознавание инструментов в многоголосной музыке на основе автоматических таксономий». Транзакции IEEE по обработке звука, речи и языка. Том 14, выпуск 1, 2006, стр. 68-80.