loudnessMeter

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

Описание

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

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

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

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

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

Создание

Описание

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

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

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

Свойства

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

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

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

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

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

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

В качестве наилучшей практики укажите 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

Истинно-пиковая громкость в dB-TP, возвращенная как вектор-столбец с одинаковым числом строк, как audioIn.

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

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

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

release(obj)

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

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

Примеры

свернуть все

Создайте 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-mode' для вашего счетчика громкости.

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

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

  • Чтение в аудио файла.

  • Вычислите сиюминутную область значений громкости и громкости.

  • Визуализируйте сиюминутную область значений громкости и громкости на ваших временных возможностях.

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

Визуализация счетчика громкости 'EBU-mode' автоматически обновляется, пока она открыта. Как лучшая практика, отпустите устройство чтения файлов и средства записи устройства после завершения цикла.

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-mode'.

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)

Алгоритмы

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

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

Ссылки

[1] Международное объединение электросвязи; Сектор радиосвязи. Алгоритмы измерения громкости аудиопрограммы и уровня звука True-Peak. Система ITU-R BS.1770-4. 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