Мастерская > Технологии
Пишу софт для измерения параметров звуковухи сравнивает оригинал с записью
Kvach:
Пишу на пхп, потом будет работать онлайн...
Генерю исходный псм сигнал в виде wav/flac файла - достаточно его воспроизвести и записать через asio любым софтом, дальше запись синхронизируется и сравнивается с вновь сгенерённым сигналом с учётом фазы...
Предварительная синхронизация происходит по тестовому импульсу
А вот далее нужно чтобы кто разбирается в псм сигнале проверил методологию и формулы, боюсь что накосячил где-то...
Фазовая синхронизация точнее чем тактовая частота возможна, если записанный сигнал (синус) сравнивать с вновь сгенерённым синусом смещённым на туже дельту по временной шкале, смещение без шумов (если считаем что используем синус и ищем в точке 0) равно arcsin (амплитуда_в_0/максимальную_амплитуду) , далее из записи можно по семплам вычитать синус сгенерённый с дельтой, получится разница, но мешают шумы (аналоговые) и arcsin вернёт неверное смещение...
Для точной подгонки фазы беру около10-100 семплов и и с шагом сначало в 1 , от -10 до 10 суммирую разницу между каждым семплом записи и оригинала , выбираю наименьшую, потом шаг 0.1 потом 0.01 итд до 5ти нолей (хоть до 64 можно) - так я считаю что нашёл идеальное смещение! (верно ли считаю?)
По амплитуде... сигнал пишу 960 Гц чтобы был кратный тактовым частотам и после дискретного преобразования фурье без окнных предварительных функций (оноже квадратное окно) получаю амплитуду синуса как корень квадратный из суммы квадратов мнимой и вещественной части , за счёт именно дискретного преобразования (не быстрого кратного 2^n) могу точно измерять 960 Гц - получаю абсолютно вплоть до 1 в интежер пространстве амплитуду записанного синуса, без вмешательства шумов. (проверял скармливанием чистого сегенерённого синуса на разных амплитудах, фурье возвращал идеальный ответ)
THD+n измеряю как сумму модуля разниц посемпольно запись- сгенеренный сигнал делить на сумму семплов сгенерённого сигнала, в процентах домножаем на 100, т.к. количество семплов в чеслителе и знаменателе одинаковое - сокразается.
Померил карту - получил 0.02253106801295506%
еёже в rmma - THD + Noise (at -3 dB FS)
IMD + Noise, % L 0.00429 R 0.00427
IMD + Noise (A-weighted), % L 0.00392 R 0.00387
Подумал что я чото нетак сделал...
Проверил - сгенерил искажённый сигнал $d= $db_to_abs(-1) * sin($n * $w) + db_to_abs(-100)*sin($n * 2* $w) + db_to_abs(-110)*sin($n * 3* $w) + db_to_abs(-120)*sin($n * 4* $w) + db_to_abs(-130)*sin($n * 5* $w);
w=2 * M_PI * 960 / $sampleRate;
db_to_abs возвращает интежер громкость из децебелов для 32 бит инт 2147483647-1=0dB
скормил анализатору и сравнил с теоретическим отвтом по формуле sqrt(pow(db_to_abs(-100),2)+pow(db_to_abs(-110),2)+pow(db_to_abs(-120),2)+pow(db_to_abs(-130),2))/db_to_abs(-1)*100
энергия синусов не зависит от частоты и всегда равна амплитуда / корень из 2 который в чеслителе и знаменателе сокращается и остаётся корень из суммы квадратов амплитуд гармоник делить на амплитудуду основной частоты
Так вот ответы совпали вплоть до 11го знака после 0 ???
rmaa чото совсем другое кажет :wall:
Profi:
Испытания одним синусом? Кроме Кг, другой информации с него не получить же.
Kvach:
--- Цитата: Profi от 09 Декабря 2023, 20:18:49 ---Испытания одним синусом? Кроме Кг, другой информации с него не получить же.
--- Конец цитаты ---
По этой части возникли вопросы, а так ещё свип тон сделал который не ровно бежит и каждый ровный кГц отсчитывает 4 полных периода, потом плавно меняет до следущего , по макушкам можно восстановить частоту при считывании понимать какая макушка соответствует какой частоте,
на высоких частотах интерполировать в 10 раз 1920000 семплрейт soxr и на 30 кГц будет достаточно точек чтобы измерить амплитуду без fft. При измерении ачх на шумы забить - 4 макушки аппроксимировать. Уровень шума вроде просто тишину замерить. Все фазовые типа импульс респонс по записи по худу не возможно замерить. Сигнал / шум - отдельным файлом - если это ваще интересно - нужно понять как детектить аналоговый клипинг...
Но THD и THD+n это самое важное
и добавил...
попробовал REW там всё настраивается и всё зависит от оконной функции (как и должно быть) - показания ближе к моим 0.019
по ходу rmaa без шума показывает как и rew если в нём смотреть на thd 0.0038%
и добавил...
Ещё вопрос, если у нас частота кратная частоте дискретизации 960 Гц (48 96 192 кГц), то каждый период должен быть одинаковый семпл +- шумы (аналоговые), если сильно отличаются - это джитер ?
Profi:
Сам по себе общий Кг мало говорит о качестве. Гораздо большее значение имеет спектр искажений. Если стоит задача оценки качества тракта, то надо именно сам спектр обрабатывать и интерпретировать. Например, как в работе нагличананина, придумавшего коэффициент качества.
и добавил...
--- Цитата: Kvach от 10 Декабря 2023, 00:46:54 ---нужно понять как детектить аналоговый клипинг...
--- Конец цитаты ---
Резкий рост нечётных гармоник.
dimonos:
Женя, зря тратишь время.
Чела из дурки тока на время отпустили... :laugh:
Навигация
Перейти к полной версии