Воспринимаемая громкость акустического сигнала
задает не используемый по умолчанию коэффициент калибровки микрофона, используемый для вычисления громкости.loudness = acousticLoudness(audioIn,fs,calibrationFactor)
указывает параметры, использующие один или несколько loudness = acousticLoudness(___,Name,Value)Name,Value аргументы пары.
loudness = acousticLoudness(audioIn,fs,'Method','ISO 532-2') возвращает громкость согласно ISO 532-2 (Мур-Глазберг).[ также возвращает определенную громкость.loudness,specificLoudness] = acousticLoudness(___)
[ также возвращает процентильную громкость.loudness,specificLoudness,perc] = acousticLoudness(___,'TimeVarying',true)
[ задает нестандартные процентили для возврата.loudness,specificLoudness,perc] = acousticLoudness(___,'TimeVarying',true,'Percentiles',p)
acousticLoudness(___) без выходных аргументов строит график определенной громкости и отображает громкость текстуально. Если TimeVarying является true, строятся как громкость, так и специфическая громкость, причём последняя в 3-D.
Измерьте ISO 532-1 стационарную громкость свободного поля. Предположим, что уровень записи откалиброван таким образом, что тональный сигнал 1 кГц регистрируется как 100 дБ на измерителе SPL.
[audioIn,fs] = audioread('WashingMachine-16-44p1-stereo-10secs.wav');
loudness = acousticLoudness(audioIn,fs)loudness = 1×2
28.2688 27.7643
Создайте два стационарных сигнала с эквивалентной мощностью: сигнал розового шума и сигнал белого шума.
fs = 48e3; dur = 5; pnoise = 2*pinknoise(dur*fs); wnoise = rand(dur*fs,1) - 0.5; wnoise = wnoise*sqrt(var(pnoise)/var(wnoise));
Звонить acousticLoudness с использованием метода ISO 532-1 (Zwicker) по умолчанию и без выходных аргументов для построения графика громкости розового шума. Звонить acousticLoudness опять же, на этот раз с выходными аргументами, чтобы получить конкретную громкость.
figure acousticLoudness(pnoise,fs)

[~,pSpecificLoudness] = acousticLoudness(pnoise,fs);
Постройте график громкости сигнала белого шума, а затем получите конкретные значения громкости.
figure acousticLoudness(wnoise,fs)

[~,wSpecificLoudness] = acousticLoudness(wnoise,fs);
Позвоните в acousticSharpness функция для сравнения резкости розового шума и белого шума.
pSharpness = acousticSharpness(pSpecificLoudness);
wSharpness = acousticSharpness(wSpecificLoudness);
fprintf('Sharpness of pink noise = %0.2f acum\n',pSharpness)Sharpness of pink noise = 2.00 acum
fprintf('Sharpness of white noise = %0.2f acum\n',wSharpness)Sharpness of white noise = 2.62 acum
Чтение в аудиофайле.
[audioIn,fs] = audioread('JetAirplane-16-11p025-mono-16secs.wav');Постройте график изменяющейся во времени акустической громкости в соответствии со стандартом ISO 532-1 и получите процентили. Прослушать звуковой сигнал.
acousticLoudness(audioIn,fs,'SoundField','diffuse','TimeVarying',true)

sound(audioIn,fs)
Звонить acousticLoudness снова с теми же входами и получить процентили. Распечатайте процентили Nmax и N5. Процентиль Nmax - это максимальная сообщаемая громкость. N5 процентиль - это громкость ниже, которая составляет 95% от сообщенной громкости.
[~,~,perc] = acousticLoudness(audioIn,fs,'SoundField','diffuse','TimeVarying',true); fprintf('Max loudness = %0.2f sones\n',perc(1))
Max loudness = 89.48 sones
fprintf('N5 loudness = %0.2f sones\n',perc(2))N5 loudness = 81.77 sones
Чтение в аудиофайле.
[audioIn,fs] = audioread('Turbine-16-44p1-mono-22secs.wav');Звонить acousticLoudness без выходных аргументов для построения графика определенной громкости. Предположим, что градуировочный коэффициент равен 0,15, а контрольное давление равно 21 микрокаскалю. Чтобы определить градуировочный коэффициент для вашей аудиосистемы, используйте calibrateMicrophone функция.
calibrationFactor = 0.15;
refPressure = 21e-6;
acousticLoudness(audioIn,fs,calibrationFactor,'PressureReference',refPressure)
acousticLoudness позволяет задать промежуточное представление, уровни звукового давления, а не входные данные временной области. Это позволяет повторно использовать промежуточные вычисления SPL. Другое преимущество заключается в том, что если ваш физический SPL-измеритель не сообщает о громкости в соответствии с ISO 532-1 или ISO 531-2, вы можете использовать сообщенные 1/3-октавные SPL для расчета громкости, соответствующей стандарту.
Чтобы рассчитать уровни звукового давления по звуковому сигналу, сначала создайте splMeter объект. Позвоните в splMeter объект со звуковым входом.
spl = splMeter("SampleRate",fs,"Bandwidth","1/3 octave", ... "CalibrationFactor",calibrationFactor,"PressureReference",refPressure, ... "FrequencyWeighting","Z-weighting","OctaveFilterOrder",6); splMeasurement = spl(audioIn);
Вычислите средний уровень SPL, пропустив первые 0,2 секунды. Держите только полосы от 25 Гц до 12,5 кГц (первые 28 полос).
SPLIn = mean(splMeasurement(ceil(0.2*fs):end,1:28));
Используя вход SPL, вызовите acousticLoudness без выходных аргументов для построения графика определенной громкости.
acousticLoudness(SPLIn)

Настройте эксперимент, как показано на диаграмме.

Создание audioDeviceReader объект для считывания с микрофона и audioDeviceWriter возражает против записи в динамик.
fs = 48e3; deviceReader = audioDeviceReader(fs); deviceWriter = audioDeviceWriter(fs);
Создание audioOscillator создание синусоиды 1 кГц.
osc = audioOscillator("sine",1e3,"SampleRate",fs);
Создать dsp.AsyncBuffer объект для буферизации данных, полученных от микрофона.
dur = 5; buff = dsp.AsyncBuffer(dur*fs);
В течение пяти секунд воспроизводите синусоиду через динамик и записывайте с помощью микрофона. В то время как аудиопотоки, обратите внимание на громкость, о которой сообщает ваш счетчик SPL. После завершения прочтите содержимое объекта буфера.
numFrames = dur*(fs/osc.SamplesPerFrame); for ii = 1:numFrames audioOut = osc(); deviceWriter(audioOut); audioIn = deviceReader(); write(buff,audioIn); end SPLreading = 60.4; micRecording = read(buff);
Для вычисления коэффициента калибровки микрофона используйте calibrateMicrophone функция.
calibrationFactor = calibrateMicrophone(micRecording,deviceReader.SampleRate,SPLreading);
Звонить acousticLoudness с микрофонной записью, частотой дискретизации и коэффициентом калибровки. Громкость, о которой сообщили из acousticLoudness - истинное измерение акустической громкости, указанное в 532-1.
loudness = acousticLoudness(micRecording,deviceReader.SampleRate,calibrationFactor)
loudness = 14.7902
Теперь можно использовать градуировочный коэффициент, определенный для измерения громкости любого звука, получаемого через ту же цепочку записи микрофона.
Считывание звукового сигнала.
[audioIn,fs] = audioread('TrainWhistle-16-44p1-mono-9secs.wav');ISO 532-1
Определите изменяющуюся во времени громкость в соответствии с методом по умолчанию (ISO 532-1).
[~,specificLoudness] = acousticLoudness(audioIn,fs,'TimeVarying',true);ISO 532-1 сообщает о конкретной громкости над Барком, где бункеры Барка 0.1:0.1:24. Преобразуйте ячейки коры в Гц, а затем постройте график определенной громкости по Гц во времени.
barkBins = 0.1:0.1:24; hzBins = bark2hz(barkBins); t = 0:2e-3:2e-3*(size(specificLoudness,1)-1); surf(t,hzBins,sum(specificLoudness,3).','EdgeColor','interp') set(gca,'YScale','log') view([0 90]) axis tight xlabel('Time (s)') ylabel('Frequency (Hz)') colorbar title('Specific Loudness (sones/Bark)')

ISO 532-2
Определение стационарной удельной громкости по методу Мура-Глазберга (ISO 532-2).
[~,specificLoudness] = acousticLoudness(audioIn,fs,'Method','ISO 532-2');
ISO 532-2 сообщает о конкретной громкости по шкале ERB, где ячейки ERB 1.8:0.1:38.9. Единицу шкалы ERB иногда называют Cam. Преобразуйте ячейки ERB в Гц, а затем постройте график определенной громкости.
erbBins = 1.8:0.1:38.9; hzBins = erb2hz(erbBins); semilogx(hzBins,specificLoudness) xlabel('Frequency (Hz)') ylabel('Loudness (sones)') title('Specific Loudness') grid on

Чтение в аудиофайле.
[x,fs] = audioread('WashingMachine-16-44p1-stereo-10secs.wav');Стандарт ISO 532-2 позволяет задавать пользовательский отклик наушников при расчете громкости. Создайте матрицу 30 на 2, где первый столбец - частота, а второй столбец - отклонение наушника от плоской характеристики.
tdh = [ 0, 80, 100, 200, 500, 574, 660, 758, 871, 1000, 1149, 1320, 1516, 1741, 2000, ... 2297, 2639, 3031, 3482, 4000, 4500, 5000, 5743, 6598, 7579, 8706, 10000, 12000, 16000, 20000; ... -50, -15.3, -13.8, -8.1, -0.5, 0.4, 0.8, 0.9, 0.5, 0.1, -0.8, -1.5, -2.3, -3.2, -3.9, ... -4.2, -4.3, -4.3, -3.9, -3.2, -2.3, -1.1, -0.3, -2, -5.4, -9, -12.1, -15.2, -30, -50 ].';
Рассчитайте громкость с помощью ISO 532-2. Определить SoundField как earphones и ответ наушника как только что созданной матрицы.
acousticLoudness(x,fs,'Method','ISO 532-2','SoundField','earphones','EarphoneResponse',tdh)

Создать dsp.AudioFileReader объект для считывания в аудиосигнале покадрово. Укажите длительность кадра 50 мс Это будет длительность кадра, по которой вы рассчитываете стационарную громкость.
fileReader = dsp.AudioFileReader('Engine-16-44p1-stereo-20sec.wav');
frameDur = 0.05;
fileReader.SamplesPerFrame = round(fileReader.SampleRate*frameDur);Создание audioDeviceWriter объект для записи звука на устройство вывода по умолчанию.
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);Создать timescope объект для отображения стационарной громкости во времени.
scope = timescope( ... 'SampleRate',1/frameDur, ... 'YLabel','Loudness (sones)', ... 'ShowGrid',true, ... 'PlotType','Stairs', ... 'TimeSpanSource','property', ... 'TimeSpan',20, ... 'AxesScaling','Auto', ... 'ShowLegend',true);
В цикле:
Считывание кадра из аудиофайла.
Рассчитайте стационарную громкость этого кадра.
Воспроизведение звука через устройство вывода.
Напишите громкость размаху.
while ~isDone(fileReader) audioIn = fileReader(); loudness = acousticLoudness(audioIn,fileReader.SampleRate); deviceWriter(audioIn); scope(loudness) end release(fileReader) release(deviceWriter) release(scope)

audioIn - Звуковой входЗвуковой вход, заданный как вектор столбца (моно) или матрица с двумя столбцами (стерео).
Типы данных: single | double
fs - Частота дискретизации (Гц)Частота дискретизации в Гц, заданная как положительный скаляр. Рекомендуемая частота дискретизации для новых записей составляет 48 кГц.
Примечание
Минимальная приемлемая частота дискретизации составляет 8 кГц.
Типы данных: single | double
calibrationFactor - Коэффициент калибровки микрофонаsqrt(8) | положительный скалярКоэффициент калибровки микрофона, заданный как положительный скаляр. Калибровочный коэффициент по умолчанию соответствует полной синусоиде 1 кГц с уровнем звукового давления 100 дБ (SPL). Чтобы вычислить градуировочный коэффициент для вашей системы, используйте calibrateMicrophone функция.
Типы данных: single | double
SPLIn - Уровень звукового давления (дБ)Уровень звукового давления (SPL) в дБ, заданный как массив 1-by-28-by-C или массив 1-by-29-by-C, в зависимости от Method:
Если Method имеет значение 'ISO 532-1', указать SPLIn в качестве 1-by-28-by-C матрицы, где 28 соответствует полосам с одной третью октавы между 25 Гц и 12,5 кГц, а C - количество каналов.
Если Method имеет значение 'ISO 532-2', указать SPLIn в качестве 1-by-29-by-C матрицы, где 29 соответствует полосам с одной третью октавы между 25 Гц и 16 кГц, а C - количество каналов.
Для обоих методов вход SPL должен измеряться с помощью взвешивания с плоской частотой (Z-взвешивание).
Типы данных: single | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
acousticLoudness(audioIn,fs,'Method','ISO 532-2')'Method' - Метод расчета громкости'ISO 532-1' (по умолчанию) | 'ISO 532-2'Метод расчета громкости, указанный как 'ISO 532-1'
[1] или 'ISO 532-2'
[2].
Примечание
Только в методе ISO 532-1 вывод сообщается для каждого канала независимо, а стационарные сигналы обрабатываются после отбрасывания до первых 0,2 секунд сигнала на выходе внутренних 1/3-октавных фильтров.
Типы данных: char | string
'TimeVarying' - Вход изменяется во времениfalse (по умолчанию) | trueВход изменяется во времени, указывается как true или false.
Установить TimeVarying кому true, необходимо установить Method кому 'ISO 532-1'.
Типы данных: logical
'SoundField' - Звуковое поле аудиозаписи'free' (по умолчанию) | 'diffuse' | 'eardrum' | 'earphones'Звуковое поле аудиозаписи, определяемое как вектор символа или скалярная строка. Возможные значения для SoundField зависят от Method:
'ISO 532-1' –– 'free', 'diffuse'
'ISO 532-2' –– 'free', 'diffuse', 'eardrum', 'earphones'
Типы данных: char | string
'EarphoneResponse' - Реакция наушников[0,0] (по умолчанию) | матрица M-by-2Реакция наушника, заданная как матрица M-by-2, содержащая М пар частота-амплитуда, которые описывают отклонения наушника от плоской характеристики. Форма указана в файле коррекции наушников ISO 11904-1: 2002. Укажите частоту в порядке возрастания в Гц. Задайте отклонение амплитуды в децибелах. Промежуточные значения вычисляются путем линейной интерполяции. Значения вне заданного диапазона устанавливают в ближайшую частотно-амплитудную пару. Значение по умолчанию соответствует плоскому отклику.
Определить EarphoneResponse, необходимо установить SoundField кому 'earphones'.
Типы данных: single | double
'PressureReference' - Эталонное давление (Па)20e-6 (по умолчанию) | положительный скалярОпорное давление для вычисления дБ в паскалях, указанное как положительный скаляр. Значение по умолчанию, 20 микропаскалей, является общим значением для воздуха.
PressureReference используется только для входных сигналов временной области.
Типы данных: single | double
'Percentiles' - Процентили, при которых рассчитать процентиль громкости[0,5] (по умолчанию) | вектор со значениями в диапазоне [0, 100]Процентили, при которых вычисляется громкость процентиля, заданная как вектор со значениями в диапазоне [0, 100]. Значения по умолчанию, 0 и 5, соответствуют процентилям Nmax и N5 соответственно [1].
Громкость процентиля относится к громкости, которая достигается или превышается в X% измеренных временных интервалов, где X - указанный процентиль.
Типы данных: single | double
'TimeResolution' - Разрешение по времени выхода'standard' (по умолчанию) | 'high'Временное разрешение вывода, определяемое как символьный вектор или скалярная строка. Интервал времени составляет 2 мс в 'standard' разрешение, или 0,5 мс в 'high' разрешение. Значение по умолчанию: 'standard' (соответствие ISO 532-1).
Типы данных: char | string
loudness - Громкость (соны)Громкость в звуках, возвращаемая в виде вектора K-by-1 столбца или матрицы K-by-2 независимых каналов. Если TimeVarying имеет значение false, K равно 1. Если TimeVarying имеет значение true, то громкость вычисляется каждые 2 мс Method имеет значение 'ISO 532-2', то loudness вычисляется с использованием бинауральной модели и всегда возвращается в виде вектора K-by-1 столбца.
specificLoudness - Специфическая громкостьУдельная громкость, возвращаемая как массив K-by-240-by-C или массив K-by-372-by-C. Первое измерение конкретной громкости, K, соответствует первому измерению loudness. Третье измерение конкретной громкости, C, соответствует второму измерению loudness. Второе измерение конкретной громкости зависит от Method используется для вычисления громкости:
Если Method имеет значение 'ISO 532-1', то удельная громкость сообщается в sones/Bark по шкале от 0,1 до 24 включительно, с приращением 0,1.
Если Method имеет значение 'ISO 532-2', то удельная громкость сообщается в sones/Cam по шкале от 1,8 до 38,9 включительно, с приращением 0,1.
perc - Громкость процентиля (соны)Процентильная громкость в звуках, возвращенная в виде вектора p-by-1 или матрицы p-by-2. Число строк, p, равно числу Percentiles.
Громкость процентиля относится к громкости, которая достигается или превышается в X% измеренных временных интервалов, где X - указанный процентиль.
Выходной аргумент percentiles допустим только в том случае, если TimeVarying имеет значение true. Если TimeVarying имеет значение false, perc выход пуст.
Громкость и уровень громкости - перцептивные атрибуты звука. Из-за различий между людьми измерения громкости и уровня громкости следует считать статистическими оценщиками. Серия ISO 532 определяет процедуры оценки уровня громкости и громкости, воспринимаемых людьми с онтологически нормальным слухом при определенных условиях прослушивания.
ISO 532-1 и ISO 532-2 определяют два различных метода вычисления громкости, но оставляют пользователю выбор подходящего метода для данной ситуации.
ISO 532-1: 2017 (E) описывает методы вычисления акустической громкости стационарных и изменяющихся во времени сигналов.
Этот метод основан на DIN 45631:1991. Алгоритм отличается от ISO 532:1975, метод B, заданием поправок для низких частот.

Диаграмма и шаги обеспечивают общий обзор последовательности метода. Для получения более подробной информации см. [1].
Уровень сигнала во временной области регулируется в соответствии с CalibrationFactor. Следующие шаги алгоритма предполагают истинно известный уровень сигнала.
Сигнал преобразуется в представление SPL 1/3 октавы, используя фильтрацию дробной октавной полосы. Блок фильтров состоит из 28 фильтров с частотой от 25 Гц до 12,5 кГц. Выходной сигнал этой ступени находится в дБ и нормируется эталонным давлением.
Низкочастотные 1/3 октавные полосы отменяются в соответствии с фиксированной таблицей весов. Некоторые низкочастотные полосы объединяются, образуя в общей сложности 20 критических полос.
Уровни критических полос корректируются для полосы пропускания фильтра и уровня критической полосы на пороге молчания, а затем преобразуются в громкость ядра.
Громкость ядра отображается на бункеры Барка.
Частотное расширение вычисляют с использованием таблицы уровней и частотно-зависимых наклонов.
Громкость рассчитывается как интеграл конкретной громкости с учетом частотно-распространяющихся наклонов.
Этот метод основан на 45631/A1:2010 DIN и предназначен для правильного моделирования зависящего от длительности поведения восприятия громкости для коротких импульсов. Метод изменяющихся во времени звуков - обобщение цвиккерского подхода к стационарным сигналам. Если обобщенный вариант применяется к стационарным звукам, он даёт те же значения громкости, что и необлагаемый вид для стационарных сигналов.

Диаграмма и шаги обеспечивают общий обзор последовательности метода. Для получения более подробной информации см. [1].
Уровень сигнала во временной области регулируется в соответствии с CalibrationFactor. Следующие шаги алгоритма предполагают истинно известный уровень сигнала.
Сигнал преобразуется в представление SPL 1/3 октавы, используя фильтрацию дробной октавной полосы. Блок фильтров состоит из 28 фильтров с частотой от 25 Гц до 12,5 кГц. Выходной сигнал этой ступени находится в дБ и нормируется эталонным давлением.
Полосы SPL сглаживаются по времени в соответствии с полосозависимыми фильтрами.
Низкочастотные 1/3 октавные полосы отменяются в соответствии с фиксированной таблицей весов. Некоторые низкочастотные полосы объединяются, образуя в общей сложности 20 критических полос.
Уровни критических полос корректируются для полосы пропускания фильтра и уровня критической полосы на пороге молчания, а затем преобразуются в громкость ядра.
Моделируют нелинейный временной распад с помощью сети диод-конденсатор-резистор. Это моделирует резкое падение восприятия после коротких сигналов по сравнению с длинными сигналами.
Громкость ядра отображается на бункеры Барка.
Частотное расширение вычисляют с использованием таблицы уровней и частотно-зависимых наклонов.
Для моделирования длительности-зависимости восприятия громкости применяют временное взвешивание.
Громкость рассчитывается как интеграл конкретной громкости с учетом частотно-распространяющихся наклонов.
ISO 532-2: 2017 (E) описывает бинауральную модель для вычисления акустической громкости стационарных сигналов. Метод в ISO 523-2 отличается от таковых в ISO 532:1975: он улучшает вычисленную громкость в низкочастотном диапазоне и бинауральная модель допускает разные звуки для каждого уха. ISO 532-2 обеспечивает хорошее соответствие контурам равного уровня громкости, определенным в ISO 226:2003, и порогу слуха, определенному в ISO 389-7: 2005.

Диаграмма и шаги обеспечивают общий обзор последовательности метода. Для получения более подробной информации см. [2].
Уровень сигнала во временной области регулируется в соответствии с CalibrationFactor. Следующие шаги алгоритма предполагают истинно известный уровень сигнала.
Сигнал преобразуется в спектральное представление. Спектральное представление преобразовано согласно фиксированным фильтрам, представляющим передачу звука через tympanic мембрану (барабанная перепонка). Спектр масштабируется в соответствии с эталонным давлением.
Сигнал преобразуется с помощью модели внутреннего уха. Снова передаточная функция задается фиксированным фильтром, указанным в стандарте. Выбор фильтра зависит от указанного звукового поля.
Сигнал преобразуется из звукового спектра в схему возбуждения на базилярной мембране. Преобразование выполняется с использованием ряда округленно-экспоненциальных фильтров, распределенных по шкале ERB.
Рисунок возбуждения преобразуется в определенную громкость.
Специфическая громкость проходит через модель двоичного ингибирования, где сигнал в одном ухе подавляет громкость, вызванную сигналом в другом ухе. Выходной сигнал этого этапа - специфическая громкость в звуках/ERB.
Специфическая громкость интегрирована по шкале ERB, чтобы придать громкость в звуках.
[1] ISO 532-1: 2017 (E). «Акустика - Методы расчета громкости - Часть 1: метод Цвиккера». Международная организация по стандартизации.
[2] ISO 532-2: 2017 (E). "Акустика - Методы расчета громкости - Часть 2: метод Мура-Глазберга. Международная организация по стандартизации.
acousticFluctuation | acousticRoughness | acousticSharpness | calibrateMicrophone | phon2sone | sone2phon | splMeter
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.