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

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

Читайте в звуковом файле.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');
Вычислите наклон спектра значения в зависимости от времени. Вычислите наклон для Окон Хэмминга на 50 мс данных с перекрытием на 25 мс. Используйте диапазон от 62,5 Гц до fs/2 для наклонного вычисления. Постройте график результатов.
slope = spectralSlope(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(slope,1)); plot(t,slope) xlabel('Time (s)') ylabel('Slope')

Создайте объект 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(); slope = spectralSlope(audioIn,fileReader.SampleRate, ... 'Window',win, ... 'OverlapLength',0); logger(slope) end plot(logger.Buffer) ylabel('Slope')

Используйте dsp.AsyncBuffer если
Вход к вашему циклу аудиопотока имеет переменные выборки на кадр.
Вход к вашему циклу аудиопотока имеет противоречивые выборки на кадр с аналитическим окном spectralSlope.
Вы хотите вычислить спектральный наклон для перекрытых данных.
Создайте объект dsp.AsyncBuffer, сбросьте регистратор и выпустите средство чтения файлов.
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); slope = spectralSlope(audioBuffered,fs, ... 'Window',win, ... 'OverlapLength',0); logger(slope) end end release(fileReader)
Постройте записанные данные.
plot(logger.Buffer)
ylabel('Slope')

x Входной сигналВходной сигнал, заданный как вектор, матрица или трехмерный массив. То, как функция интерпретирует x, зависит от формы f.
Типы данных: single | double
f Частота дискретизации или вектор частоты (Гц)Частота дискретизации или вектор частоты в Гц, заданном как скаляр или вектор, соответственно. То, как функция интерпретирует x, зависит от формы f:
Если f является скаляром, x интерпретирован как сигнал временного интервала, и f интерпретирован как частота дискретизации. В этом случае x должен быть вектором действительных чисел или матрицей. Если x задан как матрица, столбцы интерпретированы, когда человек образовывает канал.
Если f является вектором, x интерпретирован как сигнал частотного диапазона, и f интерпретирован как частоты, в Гц, соответствуя строкам x. В этом случае x должен быть действительный L-by-M-by-N массив, где L является количеством спектральных значений на данных частотах f, M является количеством отдельных спектров, и N является количеством каналов.
Количество строк x, L, должно быть равно числу элементов f.
Типы данных: single | double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Window',hamming(256)Следующие аргументы пары "имя-значение" применяются, если x является сигналом временного интервала. Если x является сигналом частотного диапазона, аргументы пары "имя-значение" проигнорированы.
'Window' — Окно применяется во временном интервалеrectwin(round(f*0.03)) (значение по умолчанию) | векторОкно применяется во временном интервале, заданном как пара, разделенная запятой, состоящая из 'Window' и вектора действительных чисел. Число элементов в векторе должно быть в области значений [1, ]. Число элементов в векторе должно также быть больше, чем size(x,1)OverlapLength.
Типы данных: single | double
'OverlapLength' — Количество выборок перекрывается между смежными окнамиround(f*0.02) (значение по умолчанию) | неотрицательный скалярКоличество выборок перекрывается между смежными окнами, заданными как пара, разделенная запятой, состоящая из 'OverlapLength' и целого числа в области значений [0, ).size(Window,1)
Типы данных: single | double
'FFTLength' — Количество интервалов в ДПФnumel(Window) (значение по умолчанию) | положительное скалярное целое числоКоличество интервалов раньше вычисляло ДПФ оконных входных выборок, заданных как пара, разделенная запятой, состоящая из 'FFTLength' и положительного скалярного целого числа. Если незаданный, значения по умолчанию FFTLength к числу элементов в Window.
Типы данных: single | double
Область значений Частотный диапазон (Гц)[0,f/2] (значение по умолчанию) | двухэлементный вектор - строкаЧастотный диапазон в Гц, заданном как пара, разделенная запятой, состоящая из 'Range' и двухэлементный вектор - строка из увеличения действительных значений в области значений [0, f/2].
Типы данных: single | double
'SpectrumType' — Тип спектра'magnitude' (значение по умолчанию) | 'power'Тип спектра, заданный как пара, разделенная запятой, состоящая из 'SpectrumType' и 'power' или 'magnitude':
'power' – Спектральный наклон вычисляется для одностороннего спектра мощности.
'magnitude' – Спектральный наклон вычисляется для одностороннего спектра значения.
Типы данных: char | string
slope — Спектральный наклонСпектральный наклон в Гц, возвращенном как скаляр, вектор или матрица. Каждая строка slope соответствует спектральному наклону окна x. Каждый столбец slope соответствует независимому каналу.
Спектральный наклон вычисляется, как описано в [1]:
где
fk является частотой в Гц, соответствующем интервалу k.
μf является средней частотой.
sk является спектральным значением в интервале k.
μs является средним спектральным значением.
b 1 и b 2 является ребрами полосы в интервалах, по которым можно вычислить спектральный наклон.
[1] Lerch, Александр. Введение в аналитические приложения звукового содержимого в информатике обработки сигналов и музыки. Пискатауэй, NJ: нажатие IEEE, 2012.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.