Спектральный куртоз для аудиосигналов и слуховых спектрограмм
задает опции с использованием одного или нескольких kurtosis = spectralKurtosis(x,f,Name,Value)Name,Value аргументы в виде пар.
Прочтите в аудио файла, вычислите куртоз с помощью параметров по умолчанию, а затем постройте график результатов.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav'); kurtosis = spectralKurtosis(audioIn,fs); t = linspace(0,size(audioIn,1)/fs,size(kurtosis,1)); plot(t,kurtosis) xlabel('Time (s)') ylabel('Kurtosis')

Прочтите в аудио файла, а затем вычислите mel spectrogram с помощью melSpectrogram функция. Вычислите куртоз мел-спектрограммы с течением времени. Постройте график результатов.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav'); [s,cf,t] = melSpectrogram(audioIn,fs); kurtosis = spectralKurtosis(s,cf); plot(t,kurtosis) xlabel('Time (s)') ylabel('Kurtosis')

Чтение в аудио файла.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');Вычислите куртоз спектра степени с течением времени. Вычислите куртоз для 50 мс Окон Хэмминга данных с перекрытием 25 мс. Используйте область значений от 62,5 Гц до fs/ 2 для расчета куртоза. Постройте график результатов.
kurtosis = spectralKurtosis(audioIn,fs, ... 'Window',hamming(round(0.05*fs)), ... 'OverlapLength',round(0.025*fs), ... 'Range',[62.5,fs/2]); t = linspace(0,size(audioIn,1)/fs,size(kurtosis,1)); plot(t,kurtosis) xlabel('Time (s)') ylabel('Kurtosis')

Создайте dsp.AudioFileReader объект для чтения в аудио данных кадр за кадром. Создайте dsp.SignalSink для логгирования вычисления спектрального куртоза.
fileReader = dsp.AudioFileReader('Counting-16-44p1-mono-15secs.wav');
logger = dsp.SignalSink;В цикле аудиопотока:
Чтение в систему координат аудио данных.
Вычислите спектральный куртоз для системы координат аудио.
Логгирование спектрального куртоза для последующего графического изображения.
Чтобы вычислить спектральный куртоз только для заданного входного кадра, задайте окно с таким же количеством выборок, как и вход, и установите длину перекрытия равного нуля. Постройте график записанных данных.
win = hamming(fileReader.SamplesPerFrame); while ~isDone(fileReader) audioIn = fileReader(); kurtosis = spectralKurtosis(audioIn,fileReader.SampleRate, ... 'Window',win, ... 'OverlapLength',0); logger(kurtosis) end plot(logger.Buffer) ylabel('Kurtosis')

Использование dsp.AsyncBuffer если
Вход в цикл аудиопотока имеет переменную samples-per-кадр.
Вход в цикл аудиопотока имеет несогласованные выборки-в-кадре с окном анализа spectralKurtosis.
Вы хотите вычислить спектральный куртоз для перекрывающихся данных.
Создайте dsp.AsyncBuffer объект, сбросьте logger и отпустите средство чтения файлов.
buff = dsp.AsyncBuffer; reset(logger) release(fileReader)
Укажите, что спектральный куртоз вычисляется для 50 мс систем координат с перекрытием 25 мс.
fs = fileReader.SampleRate; samplesPerFrame = round(fs*0.05); samplesOverlap = round(fs*0.025); samplesPerHop = samplesPerFrame - samplesOverlap; win = hamming(samplesPerFrame); while ~isDone(fileReader) audioIn = fileReader(); write(buff,audioIn); while buff.NumUnreadSamples >= samplesPerHop audioBuffered = read(buff,samplesPerFrame,samplesOverlap); kurtosis = spectralKurtosis(audioBuffered,fs, ... 'Window',win, ... 'OverlapLength',0); logger(kurtosis) end end release(fileReader)
Постройте график записанных данных.
plot(logger.Buffer)
ylabel('Kurtosis')
x - Входной сигналВходной сигнал, заданный как вектор, матрица или трехмерный массив. Как интерпретируется функция x зависит от формы f.
Типы данных: single | double
f - Частота дискретизации или вектор частоты (Гц)Частота дискретизации или вектор частоты в Гц, заданная в виде скаляра или вектора, соответственно. Как интерпретируется функция x зависит от формы f:
Если f является скаляром, x интерпретируется как сигнал временной области и f интерпретируется как частота дискретизации. В этом случае x должен быть вектором действительных чисел или матрицей. Если x задается как матрица, столбцы интерпретируются как отдельные каналы.
Если f является вектором, x интерпретируется как сигнал частотного диапазона и f интерпретируется как частоты в Гц, соответствующие строкам x. В этом случае x должен быть вещественным L -by M -by N массивом, где L - количество спектральных значений на заданных частотах fM - количество отдельных спектров, а N - количество каналов.
Количество строк x, L, должно быть равно количеству элементов f.
Типы данных: single | double
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
'Window',hamming(256)Примечание
Следующие аргументы пары "имя-значение" применяются, если x является сигналом временной области. Если x является сигналом частотного диапазона, аргументы пары "имя-значение" игнорируются.
'Window' - Окно применяется во временном интервалеректвин (раунд (f*0.03)) (по умолчанию) | векторОкно, примененное во временном интервале, задается как разделенная разделенными запятой парами, состоящая из 'Window' и вектор действительных чисел. Количество элементов в векторе должно быть в области значений [1, size ]. Количество элементов в векторе также должно быть больше (x,1)OverlapLength.
Типы данных: single | double
'OverlapLength' - Количество проб, перекрывающихся между смежными окнамираунд (f*0.02) (по умолчанию) | неотрицательный скалярКоличество выборок, перекрывающихся между смежными окнами, заданное как разделенная разделенными запятой парами, состоящая из 'OverlapLength' и целое число в области значений [0, размер ).(Window,1)
Типы данных: single | double
'FFTLength' - Количество интервалов в ДПФnumel (Window) (по умолчанию) | положительное скалярное целое числоКоличество интервалов, используемых для вычисления ДПФ оконных входных выборок, заданное как разделенная разделенными запятой парами, состоящая из 'FFTLength' и положительное скалярное целое число. Если не задано, FFTLength по умолчанию задается количество элементов в Window.
Типы данных: single | double
'Range' - Частотная область значений (Гц)[0, f/2] (по умолчанию) | двухэлементный вектор-строкаЧастотная область значений в Гц, заданный как разделенная разделенными запятой парами, состоящая из 'Range' и двухэлементный вектор-строка с увеличением вещественных значений в области значений [0, f/2].
Типы данных: single | double
'SpectrumType' - Спектральный тип'power' (по умолчанию) | 'magnitude'Тип спектра, заданный как разделенная разделенными запятой парами, состоящая из 'SpectrumType' и 'power' или 'magnitude':
'power' - Спектральный куртоз вычисляется для одностороннего спектра степени.
'magnitude' - Спектральный куртоз вычисляется для одностороннего спектра величин.
Типы данных: char | string
kurtosis - Спектральный куртозСпектральный куртоз, возвращенный в виде скаляра, вектора или матрицы. Каждая строка kurtosis соответствует спектральному куртозу окна x. Каждый столбец kurtosis соответствует независимому каналу.
spread - Спектральный разбросСпектральный разброс, возвращенный в виде скаляра, вектора или матрицы. Каждая строка spread соответствует спектральному распространению окна x. Каждый столбец spread соответствует независимому каналу.
centroid - Спектральный центроид (Гц)Спектральный центроид в Гц, возвращенный в виде скаляра, вектора или матрицы. Каждая строка centroid соответствует спектральному центроиду окна x. Каждый столбец centroid соответствует независимому каналу.
Спектральный куртоз вычисляется как описано в [1]:
где
fk - частота в Гц, соответствующая k интервала.
sk - спектральное значение в k интервала.
b 1 и b 2 являются краями полосы пропускания в интервалах, по которым можно вычислить спектральное искривление.
μ 1 является спектральным центроидом, вычисленным как описано spectralCentroid функция.
μ 2 является спектральным расширением, вычисленным как описано spectralSpread функция.
[1] Peeters, G. «A Large Set of Audio Features for Sound Description (Simility and Classification) in the CUIDADO Project». Технический отчет; IRCAM: Париж, Франция, 2004.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.