splMeter

Измерьте уровень звукового давления аудиосигнала

Описание

The splMeter Система object™ вычисляет измерения уровня звукового давления. Объект возвращает измерения для:

  • взвешенные по частоте уровни звука

  • быстрый или медленный взвешенный по времени уровень звука

  • эквивалентно-непрерывные уровни звука

  • пиковые уровни звука

  • максимальные уровни звука

Для реализации измерений SPL:

  1. Создайте splMeter Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

SPL = splMeter создает Системный объект, SPL, который выполняет измерение SPL.

SPL = splMeter(Name,Value) устанавливает каждое свойство Name к заданной Value. Неопределенные свойства имеют значения по умолчанию.

Пример: SPL = splMeter('FrequencyWeighting','C-weighting','SampleRate',12000) создает Системный объект, SPL, который выполняет С-взвешивание и работает на 12 кГц.

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Ширина полос анализа, заданная как 'Full band', '1 octave', '2/3 octave', или '1/3 octave'. Если Bandwidth задается как 'Full band'SPL-счетчик возвращает один набор измерений для всей полосы частот. Если Bandwidth задается как '1 octave', '2/3 octave', или '1/3 octave', SPL-метр возвращает по одному набору измерений на октаву или дробно-октавную полосу.

Настраиваемый: Нет

Типы данных: char | string

Частотная область значений группы фильтров в Гц, заданная как двухэлементный вектор-строка положительных монотонно возрастающих значений. Частота полос центром выше SampleRate/ 2 исключены.

Настраиваемый: Нет

Зависимости

Чтобы включить это свойство, задайте Bandwidth на '1 octave', '2/3 octave', или '1/3 octave'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Порядок октавного фильтра, заданный как четное целое число.

Настраиваемый: Нет

Зависимости

Чтобы включить это свойство, задайте Bandwidth на '1 octave', '2/3 octave', или '1/3 octave'.

Типы данных: single | double

Взвешивание частоты, применяемое к входу, задается как 'A-weighting', 'C-weighting', или 'Z-weighting', где Z-взвешивание не соответствует никакому взвешиванию. Взвешивание частот спроектировано и реализовано с помощью weightingFilter Системный объект.

Настраиваемый: Нет

Типы данных: char | string

Взвешивание времени, в секундах, для вычисления взвешенного по времени уровня звука и максимального взвешенного по времени уровня звука, заданное как 'Fast' или 'Slow'. The TimeWeighting свойство используется для задания коэффициента lowpass.

  • 'Fast' – 1/8

  • 'Slow' – 1

Настраиваемый: Да

Типы данных: char | string

Ссылка давление для вычислений дБ в Па, заданное как положительная скалярная величина.

Настраиваемый: Да

Типы данных: single | double

Временной интервал, в секундах, для сообщения об эквивалентно-непрерывных, пиковых и максимальных взвешенных по времени уровнях звука, заданных как положительное скалярное целое число.

Настраиваемый: Нет

Типы данных: single | double

Скалярный (моно вход) или векторный (многоканальный вход) коэффициент калибровки, умноженный на вход.

Чтобы задать коэффициент калибровки с помощью ссылки тонального сигнала, используйте calibrate.

Настраиваемый: Нет

Типы данных: single | double

Вход скорость выборки в Гц, заданная как положительная скалярная величина.

Настраиваемый: Нет

Типы данных: single | double

Использование

Описание

пример

[Lt,Leq,Lpeak,Lmax] = SPL(audioIn) возвращает значения измерения для взвешенного по времени (Lt) уровень звука текущего входного кадра, audioIn. Объект также возвращает equivalent-continuous (Leq), пик (Lpeak) и максимальное количество взвешенных по времени (Lmax) уровни звука входного входа вашего SPL-счетчика.

Входные параметры

расширить все

Аудио вход в SPL счетчик, заданный как вектор-столбец или матрица. Столбцы матрицы рассматриваются как независимые аудиоканалы.

Типы данных: single | double

Выходные аргументы

расширить все

Взвешенный по времени уровень звука в дБ, возвращенный как вектор-столбец, матрица или трехмерный массив же тип audioIn.

Размер и интерпретация выходов зависят от значения свойства Bandwidth:

  • 'Full band' (по умолчанию) -- Lt, Leq, Lpeak, и Lmax возвращаются как векторы-столбцы или матрицы того же размера, как audioIn.

  • '1 octave', '2/3 octave', или '1/3 octave'Lt, Leq, Lpeak, и Lmax возвращаются как L -by- B -by- C массивы.

    • L -- Количество строк в audioIn

    • B -- Количество октавных полос

    • C -- Количество столбцов в audioIn

Типы данных: single | double

Эквивалентно-непрерывный уровень звука в дБ, возвращаемый как вектор-столбец, матрица или трехмерный массив же тип audioIn.

Размер и интерпретация выходов зависят от значения свойства Bandwidth:

  • 'Full band' (по умолчанию) -- Lt, Leq, Lpeak, и Lmax возвращаются как векторы-столбцы или матрицы того же размера, как audioIn.

  • '1 octave', '2/3 octave', или '1/3 octave'Lt, Leq, Lpeak, и Lmax возвращаются как L -by- B -by- C массивы.

    • L -- Количество строк в audioIn

    • B -- Количество октавных полос

    • C -- Количество столбцов в audioIn

Типы данных: single | double

Пиковый уровень звука в дБ, возвращается как вектор-столбец, матрица или трехмерный массив же тип audioIn.

Размер и интерпретация выходов зависят от значения свойства Bandwidth:

  • 'Full band' (по умолчанию) -- Lt, Leq, Lpeak, и Lmax возвращаются как векторы-столбцы или матрицы того же размера, как audioIn.

  • '1 octave', '2/3 octave', или '1/3 octave'Lt, Leq, Lpeak, и Lmax возвращаются как L -by- B -by- C массивы.

    • L -- Количество строк в audioIn

    • B -- Количество октавных полос

    • C -- Количество столбцов в audioIn

Типы данных: single | double

Максимальный взвешенный по времени уровень звука в дБ, возвращаемый как вектор-столбец, матрица или трехмерный массив же тип audioIn.

Размер и интерпретация выходов зависят от значения свойства Bandwidth:

  • 'Full band' (по умолчанию) -- Lt, Leq, Lpeak, и Lmax возвращаются как векторы-столбцы или матрицы того же размера, как audioIn.

  • '1 octave', '2/3 octave', или '1/3 octave'Lt, Leq, Lpeak, и Lmax возвращаются как L -by- B -by- C массивы.

    • L -- Количество строк в audioIn

    • B -- Количество октавных полос

    • C -- Количество столбцов в audioIn

Типы данных: single | double

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

calibrateКалибровка счетчика с помощью калибровочного тонального сигнала с известным уровнем
getCenterFrequenciesЦентральные частоты фильтров
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Используйте splMeter Система object™ для измерения уровня звукового давления, взвешенного A, передачи потокового аудио. Задайте двухсекундный временной интервал для отчетов и быстрое взвешивание по времени. Визуализируйте измерения SPL с помощью timescope объект.

Создайте dsp.AudioFileReader объект для чтения в аудио файла системы координат по системе координат. Создайте audioDeviceWriter объект для прослушивания аудиосигнала. Создайте timescope объект для визуализации измерений SPL. Создайте splMeter для измерения уровня звукового давления звукового файла. Используйте коэффициент калибровки по умолчанию 1.

source = dsp.AudioFileReader('Ambiance-16-44p1-mono-12secs.wav');
fs = source.SampleRate;

player = audioDeviceWriter('SampleRate',fs);

scope  = timescope('SampleRate',fs, ...
    'TimeSpanOverrunAction','Scroll', ...
    'TimeSpanSource','Property','TimeSpan',3,'ShowGrid',true, ...
    'YLimits',[20 110],'AxesScaling','Auto', ...
    'ShowLegend',true,'BufferLength',4*3*fs, ...
    'ChannelNames', ...
    {'Lt_AF','Leq_A','Lpeak_A','Lmax_AF'}, ...
    'Name','Sound Pressure Level Meter');

SPL = splMeter('TimeWeighting','Fast', ...
    'FrequencyWeighting','A-weighting', ...
    'SampleRate',fs, ...
    'TimeInterval',2);

В цикле аудиопотока:

  1. Считайте в системе координат аудиосигнала.

  2. Воспроизведите аудиосигнал на устройстве выхода.

  3. Вызовите SPL-счетчик, чтобы вернуть взвешенные по времени, непрерывные по эквиваленту, пиковые и максимальные по времени уровни звука в дБ.

  4. Отобразите уровни звука с помощью возможностей.

Как лучшая практика, отпустите объекты после завершения.

while ~isDone(source)
    x = source();
    player(x);
    [Lt,Leq,Lpeak,Lmax] = SPL(x);
    scope([Lt,Leq,Lpeak,Lmax])
end

release(source)
release(player)
release(SPL)
release(scope)

The splMeter позволяет вам контролировать уровень звукового давления для октавных и дробно-октавных полос. В этом примере вы отслеживаете эквивалентно-непрерывный уровень звукового давления 1/3-октавных полос.

Создайте dsp.AudioFileReader объект для чтения в аудио файла системы координат по системе координат. Создайте audioDeviceWriter объект, чтобы вы могли прослушивать аудиосигнал. Создайте splMeter для измерения октавного уровня звукового давления звукового файла. Используйте коэффициент калибровки по умолчанию 1. Создайте dsp.ArrayPlot объект для визуализации эквивалентно-непрерывного SPL для каждой октавной полосы.

source = dsp.AudioFileReader('JetAirplane-16-11p025-mono-16secs.wav');
fs = source.SampleRate;

player = audioDeviceWriter('SampleRate',fs);

SPL = splMeter( ...
    'Bandwidth','1/3 octave', ...
    'SampleRate',fs);
centerFrequencies = getCenterFrequencies(SPL);

scope  = dsp.ArrayPlot(...
    'XDataMode','Custom', ...
    'CustomXData',centerFrequencies, ...
    'XLabel','Octave Band Center Frequencies (Hz)', ...
    'YLabel','Equivalent-Continuous Sound Level (dB)', ...
    'YLimits',[20 90], ...
    'ShowGrid',true, ...
    'Name','Sound Pressure Level Meter');

В цикле аудиопотока:

  1. Считайте в системе координат аудиосигнала.

  2. Воспроизведите аудиосигнал на устройстве выхода.

  3. Вызовите SPL-счетчик, чтобы вернуть эквивалентный непрерывный уровень звукового давления в дБ.

  4. Отобразите уровни звука с помощью возможностей. Обновляйте возможности только при изменении эквивалентно-непрерывного уровня звукового давления.

Как лучшая практика, отпустите объекты после завершения.

LeqPrevious = zeros(size(centerFrequencies));
while ~isDone(source)
    x = source();
    player(x);
    [~,Leq] = SPL(x);

    for i = 1:size(Leq,1)
        if LeqPrevious ~= Leq(i,:)
            scope(Leq(i,:)')
            LeqPrevious = Leq(i,:);
        end
    end

end

release(source)
release(player)
release(SPL)
release(scope)

Алгоритмы

расширить все

Расчеты уровня звукового давления выполняются по алгоритмам, описанным в [1]. Можно задать значения свойств, соответствующие стандартам [2] и [3].

Ссылки

[1] Harris, Cyril M. Handbook of Acoustical Measurements and Noise Control. 3-е ред. Американский институт физики, 1998.

[2] Международная электротехническая комиссия. Электроакустика - Измерители уровня звука - Часть 1: Спецификации. МЭК 61672-1: 2013.

[3] Американский национальный институт стандартов. ANSI S1.4: Спецификации к измерителям уровня звука. 1983.

Расширенные возможности

.
Введенный в R2018a