exponenta event banner

loudnessMeter

Стандартные измерения громкости

Описание

loudnessMeter Система object™ вычисляет громкость, диапазон громкости и истинный пик звукового сигнала в соответствии со стандартами EBU R 128 и ITU-R BS.1770-4.

Для реализации измерения громкости:

  1. Создать loudnessMeter и задайте его свойства.

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

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

Создание

Описание

loudMtr = loudnessMeter создает объект System, loudMtr, который выполняет измерение громкости независимо по каждому входному каналу.

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

Пример: loudMtr = loudnessMeter('ChannelWeights',[1.2, 0.8],'SampleRate',12000) создает объект System, loudMtr, с весами канала 1,2 и 0,8 и частотой дискретизации 12 кГц.

Свойства

развернуть все

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Линейное взвешивание, применяемое к каждому входному каналу, заданному как вектор строки неотрицательных значений. Число элементов в векторе строки должно быть равно или больше числа входных каналов. Избыточные значения в векторе игнорируются.

Веса каналов по умолчанию соответствуют стандарту ITU-R BS.1170-4. Чтобы использовать весовые коэффициенты канала по умолчанию, укажите входные сигнальные каналы в виде матрицы в следующем порядке: [Слева, Справа, По центру, Слева, Справа].

В качестве примера укажите ChannelWeights свойство по порядку: [Слева, Справа, По центру, Слева окружение, Справа окружение].

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

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

Используйте относительную шкалу для измерений громкости, заданную как логический скаляр.

  • false - Измерения громкости являются абсолютными и возвращаются в единицах громкости полной шкалы (LUFS).

  • true - Измерения громкости относительно TargetLoudness значение и возвращается в единицах громкости (LU).

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

Типы данных: logical

Целевой уровень громкости для относительного масштаба в LUFS, заданный как действительный скаляр.

Например, если TargetLoudness -23 LUFS, затем значение громкости -23 LUFS сообщается как 0 LU.

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

Зависимости

Чтобы включить это свойство, установите UseRelativeScale кому true.

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

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

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

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

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

Описание

пример

[momentary,shortTerm,integrated,range,peak] = loudMtr(audioIn) возвращает значения измерения для сиюминутной и кратковременной громкости входа в ваш измеритель громкости и истинно-пиковое значение текущего входного кадра, audioIn. Он также возвращает интегрированный диапазон громкости и громкости входного сигнала на ваш измеритель громкости с момента последнего reset был вызван.

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

развернуть все

Вход звука в измеритель громкости, заданный как матрица. Столбцы матрицы обрабатываются как независимые аудиоканалы.

Примечание

Если используется значение по умолчанию ChannelWeights из loudnessMeter, в качестве примера укажите входные каналы в следующем порядке: [Левый, Правый, Центральный, Левый объемный, Правый объемный].

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

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

развернуть все

Мгновенная громкость в единицах громкости относительно полной шкалы (LUFS), возвращаемая в виде вектора столбца с тем же количеством строк, что и audioIn.

По умолчанию измерения громкости возвращаются в LUFS. Если установить UseRelativeScale свойство для trueизмерения громкости возвращаются в единицах громкости (LU).

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

Кратковременная громкость в единицах громкости относительно полной шкалы (LUFS), возвращаемая в виде вектора столбца с тем же количеством строк, что и audioIn.

По умолчанию измерения громкости возвращаются в LUFS. Если установить UseRelativeScale свойство для trueизмерения громкости возвращаются в единицах громкости (LU).

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

Интегрированная громкость в единицах громкости относительно полной шкалы (LUFS), возвращаемая в виде вектора столбца с тем же количеством строк, что и audioIn.

По умолчанию измерения громкости возвращаются в LUFS. Если установить UseRelativeScale свойство для trueизмерения громкости возвращаются в единицах громкости (LU).

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

Диапазон громкости в единицах громкости (LU), возвращаемый в виде вектора столбца с тем же количеством строк, что и audioIn.

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

Истинно-пиковая громкость в дБ-ТР, возвращаемая в виде вектора столбца с тем же количеством строк, что и audioIn.

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

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

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

release(obj)

развернуть все

visualizeОткрыть индикатор «Режим EBU»
cloneСоздать повторяющийся объект System
isLockedОпределить, используется ли объект System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System
stepЗапустить алгоритм объекта System

Примеры

свернуть все

Создать dsp.AudioFileReader Система object™ для чтения в аудиофайле. Создать loudnesMeter Системный объект. Использовать частоту дискретизации аудиофайла в качестве частоты дискретизации loudnessMeter.

fileReader = dsp.AudioFileReader('RockDrums-44p1-stereo-11secs.mp3');
loudMtr = loudnessMeter('SampleRate',fileReader.SampleRate);

Чтение аудиофайла в цикле аудиопотока. Используйте измеритель громкости для определения сиюминутной, кратковременной и интегрированной громкости звукового сигнала. Кэшировать измерения громкости для анализа.

momentary = [];
shortTerm = [];
integrated = [];

while ~isDone(fileReader)
    x = fileReader();
    [m,s,i] = loudMtr(x);
    momentary = [momentary;m];
    shortTerm = [shortTerm;s];
    integrated = [integrated;i];
end

release(fileReader)

Постройте график сиюминутной, кратковременной и интегрированной громкости звукового сигнала.

t = linspace(0,11,length(momentary));
plot(t,[momentary,shortTerm,integrated])
title('Loudness Measurements')
legend('Momentary','Short-term','Integrated')
xlabel('Time (seconds)')
ylabel('LUFS')

Figure contains an axes. The axes with title Loudness Measurements contains 3 objects of type line. These objects represent Momentary, Short-term, Integrated.

Создайте модуль чтения аудиофайлов и модуль записи аудиоустройств.

fileReader = dsp.AudioFileReader('FunkyDrums-44p1-stereo-25secs.mp3', ...
    'SamplesPerFrame',1024);
fs = fileReader.SampleRate;
deviceWriter = audioDeviceWriter('SampleRate',fs);

Создайте область времени для визуализации цикла аудиопотока.

timeScope = timescope('NumInputPorts',2, ...
    'SampleRate',fs, ...
    'TimeSpanOverrunAction','Scroll', ...
    'LayoutDimensions',[2,1], ...
    'TimeSpanSource','Property','TimeSpan',5, ...
    'BufferLength',5*fs);

% Top subplot of scope
timeScope.Title = 'Momentary Loudness';
timeScope.YLabel = 'LUFS';
timeScope.YLimits = [-40, 0];

% Bottom subplot of scope
timeScope.ActiveDisplay = 2;
timeScope.Title = 'Loudness Range';
timeScope.YLabel = 'LU';
timeScope.YLimits = [-1, 2];

Создайте измеритель громкости. Используйте частоту дискретизации входного файла в качестве частоты дискретизации измерителя громкости. Звонить visualize чтобы открыть визуализацию в режиме «EBU» для вашего измерителя громкости.

loudMtr = loudnessMeter('SampleRate',fs);
visualize(loudMtr)

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

  • Прочитайте аудиофайл.

  • Вычислите мгновенный диапазон громкости и громкости.

  • Визуализируйте мгновенный диапазон громкости и громкости во времени.

  • Воспроизведение звукового сигнала.

Визуализация измерителя громкости в режиме «EBU» обновляется автоматически, пока он открыт. Рекомендуется после завершения цикла освободить устройство чтения файлов и устройство записи.

while ~isDone(fileReader)
    audioIn = fileReader();
    [momentaryLoudness,~,~,LRA] = loudMtr(audioIn);
    timeScope(momentaryLoudness,LRA);
    deviceWriter(audioIn);
end

release(fileReader)
release(deviceWriter)

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

fileReader = dsp.AudioFileReader('Counting-16-44p1-mono-15secs.wav',...
    'SamplesPerFrame',1024);
fs = fileReader.SampleRate;
deviceWriter = audioDeviceWriter('SampleRate',fs);

Создание измерителя громкости с заданным значением громкости по умолчанию -23 LUFS. Откройте визуализацию измерителя громкости в режиме EBU.

loudMtr = loudnessMeter('UseRelativeScale',true);
visualize(loudMtr)

Создайте временной диапазон для визуализации звукового сигнала и его измеренной относительной сиюминутной и кратковременной громкости.

scope = timescope( ...
    'NumInputPorts',3, ...
    'SampleRate',fs, ...
    'TimeSpanOverrunAction','Scroll', ...
    'TimeSpanSource','Property','TimeSpan',5, ...
    'BufferLength',5*fs, ...
    'Title','Audio Signal, Momentary Loudness, and Short-Term Loudness', ...
    'ChannelNames',{'Audio signal','Momentary loudness','Short-term loudness'}, ...
    'YLimits',[-16,16], ...
    'YLabel','Amplitude / LU', ...
    'ShowLegend',true);

В цикле аудиопотока прослушивайте и визуализируйте аудиосигнал.

while ~isDone(fileReader)
    x = fileReader();
    [momentary,shortTerm] = loudMtr(x);
    scope(x,momentary,shortTerm)
    deviceWriter(x);
end

release(deviceWriter)
release(fileReader)

Алгоритмы

развернуть все

loudnessMeter Системный объект вычисляет сиюминутную громкость, кратковременную громкость, интегрированную громкость, диапазон громкости (LRA) и истинно пиковое значение звукового сигнала. Для измерения громкости можно указать любое количество каналов и веса каналов по умолчанию. loudnessMeter описан алгоритм для общего случая n каналов с весами каналов по умолчанию.

Ссылки

[1] Международный союз электросвязи; Сектор радиосвязи. Алгоритмы измерения громкости аудиопрограмм и истинно-пикового уровня звука. BS.1770-4 ITU-R. 2015.

[2] Европейский вещательный союз. Нормализация громкости и допустимый максимальный уровень звуковых сигналов. EBU R 128. 2014.

[3] Европейский вещательный союз. Измерение громкости: измерение режима EBU в дополнение к нормализации громкости EBU R 128. EBU R 128 Tech 3341. 2014.

[4] Европейский вещательный союз. Диапазон громкости: мера, дополняющая нормализацию громкости EBU R 128. EBU R 128 Tech 3342. 2016.

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

.
Представлен в R2016b