Спектральная точка спада для звуковых сигналов и слуховых спектрограмм
возвращает спектральную точку спада сигнала, 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 спектрограмму с помощью 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
если
Вход к вашему циклу аудиопотока имеет переменные выборки на систему координат.
Вход к вашему циклу аудиопотока имеет противоречивые выборки на систему координат с аналитическим окном spectralRolloffPoint
.
Вы хотите вычислить спектральную точку спада для перекрытых данных.
Создайте 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); 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,1)Порог спада указывает в виде разделенной запятой пары, состоящей из 'Threshold'
и скаляр между нулем и один, исключительный.
Типы данных: single
| double
Следующие аргументы пары "имя-значение" применяются если x
сигнал временной области. Если x
сигнал частотного диапазона, аргументы пары "имя-значение" проигнорированы.
'Window'
— Окно применяется во временном интервалеrectwin (вокруг (f
*0.03))
(значение по умолчанию) | векторОкно, примененное во временном интервале в виде разделенной запятой пары, состоящей из 'Window'
и вектор действительных чисел. Число элементов в векторе должно быть в области значений [1, размер (
]. Число элементов в векторе должно также быть больше 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. и М. Слэни, "Конструкция и Оценка Устойчивого Различителя Речи/Музыки Мультифункции", Международная конференция IEEE по вопросам Акустики, Речи и Обработки сигналов. Объем 2, 1997, стр 1221–1224.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.