Спектральная точка срабатывания для аудиосигналов и слуховых спектрограмм
возвращает спектральную точку срабатывания сигнала, rolloffPoint
= spectralRolloffPoint(x
,f
)x
, со временем. Как интерпретируется функция x
зависит от формы f
.
задает опции с использованием одного или нескольких rolloffPoint
= spectralRolloffPoint(x
,f
,Name,Value
)Name,Value
аргументы в виде пар.
Считайте в аудио файла, вычислите точку отклонения с помощью параметров по умолчанию, а затем постройте график результатов.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav'); rolloffPoint = spectralRolloffPoint(audioIn,fs); t = linspace(0,size(audioIn,1)/fs,size(rolloffPoint,1)); plot(t,rolloffPoint) xlabel('Time (s)') ylabel('Rolloff Point (Hz)')
Прочтите в аудио файла, а затем вычислите mel spectrogram с помощью melSpectrogram
функция. Вычислите точку сгиба mel-спектрограммы с течением времени. Постройте график результатов.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav'); [s,cf,t] = melSpectrogram(audioIn,fs); rolloffPoint = spectralRolloffPoint(s,cf); plot(t,rolloffPoint) xlabel('Time (s)') ylabel('Rolloff Point (Hz)')
Чтение в аудио файла.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');
Вычислите точку отклонения спектра степени с течением времени. Вычислите точку отклонения для 50 мс Окон Хэмминга данных с перекрытием 25 мс. Используйте область значений от 62,5 Гц до fs
/ 2 для вычисления точки отклонения. Постройте график результатов.
rolloffPoint = spectralRolloffPoint(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(rolloffPoint,1)); plot(t,rolloffPoint) xlabel('Time (s)') ylabel('Rolloff Point (Hz)')
Создайте 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(); rolloffPoint = spectralRolloffPoint(audioIn,fileReader.SampleRate, ... 'Window',win, ... 'OverlapLength',0); logger(rolloffPoint) end plot(logger.Buffer) ylabel('Rolloff Point (Hz)')
Использование dsp.AsyncBuffer
если
Вход в цикл аудиопотока имеет переменную samples-per-кадр.
Вход в цикл аудиопотока имеет несогласованные выборки-в-кадре с окном анализа spectralRolloffPoint
.
Вы хотите вычислить спектральную точку падения для перекрывающихся данных.
Создайте 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); rolloffPoint = spectralRolloffPoint(audioBuffered,fs, ... 'Window',win, ... 'OverlapLength',0); logger(rolloffPoint) end end release(fileReader)
Постройте график записанных данных.
plot(logger.Buffer)
ylabel('Rolloff Point (Hz)')
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
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'Window',hamming(256)
'Threshold'
- Порог точки отклонения0.95
(по умолчанию) | скаляром в области значений (0,1)Пороговое значение точки отклонения, заданное как разделенная разделенными запятой парами, состоящая из 'Threshold'
и скаляр от нуля до единицы, эксклюзивный.
Типы данных: single
| double
Примечание
Следующие аргументы пары "имя-значение" применяются, если 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
rolloffPoint
- Спектральная точка спуска (Гц)Спектральная точка срабатывания в Гц, возвращенная в виде скаляра, вектора или матрицы. Каждая строка rolloffPoint
соответствует спектральной точке срабатывания окна x
. Каждый столбец rolloffPoint
соответствует независимому каналу.
Спектральную точку смещения вычисляют, как описано в [1]:
таким, что
где
sk - спектральное значение в k интервала.
b 1 и b 2 являются краями диапазона в интервалах, по которым можно вычислить спектральный разброс.
κ - это процент от общей энергии, содержащейся между b 1 и i. Задать κ можно используя Threshold
.
[1] Scheirer, E. and M. Slaney, «Construction and Evaluation of a Robust Multifeature Speech/Music Discriminator», Международная конференция IEEE по акустике, речи и обработке сигналов. Том 2, 1997, с. 1221-1224.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.