Автор |
Сообщение |
|
Дата: 23 Июл 2019 12:40:45 · Поправил: wazzoo (23 Июл 2019 16:25:12)
#
Возможно, тема обсуждалась - беглым поиском не нашел.
Поводом для темы стали реплики отсюда: КВ DSP радиоприёмник "Белка" - Страница 70
В частности, от уважаемого Хайо
К сожалению, во многих софтах SDR скаты сделаны слишком крутые и это даст металлически тембр нехороший, от которого слух быстро устаёт.
эквалайзер на НЧ-плоскости не решение проблемы. Надо АЧХ до демодуляции правильно делать, т.е. выставить весы по палкам правильно.
От себя могу сказать, что звук SDR (я использую приемник HDSDR) является одной из самых нелюбимых мной проблем работы с неаналоговым приёмником вообще и конкретно DDC SDR в частности. Для долгого прослушивания он никуда не годится, усталость от прослушивания наступает довольно быстро. С чистым аналогом без ЭМФ на пьезо или LC фильтрах же прослушивать АМ-радио можно часами/сутками.
Решил проверить гипотезу Хайо по улучшению звука. Пока только в макетном варианте - прежде чем пилить в программном, надо понять, что и как делать.
Для затравки. Отрезок записи АМ-станции на средних волнах. Вот в такой соседней обстановке:
Идея эксперимента. Сравниваем следующие варианты обработки звука:
2. Звук SDR. Полоса фильтра SDR +/- 4,2 кГц, амплитудная демодуляция
3. Звук SDR но с обработкой "эквалайзером":
- Полоса фильтра SDR +/-24 кГц
- Амплитудная демодуляция SDR
- Эквалайзер "Фильтр Баттерворта 8..4000 кГц, 4-й порядок"
4. Собственная фильтрация и демодуляция. Фильтр после демодуляции:
- ПЧ. Получаем IQ ПЧ от SDR, частота несущей станции - на 0-й частоте ПЧ.
- Демодуляция. Поворачиваем фазу Q на 90 градусов, складываем I и Q в один канал
- Фильтрация ПЧ. Фильтруем I и Q - "Фильтр Баттерворта 8..4000 кГц, 4-й порядок"
5. Собственная фильтрация и демодуляция. Фильтр до демодуляции:
- ПЧ. Получаем IQ ПЧ от SDR, частота несущей станции - на 0-й частоте ПЧ.
- Фильтрация ПЧ. Фильтруем I и Q - "Фильтр Баттерворта 8..4000 кГц, 4-й порядок"
- Демодуляция. Поворачиваем фазу Q на 90 градусов, складываем I и Q в один канал
Для собственной обработки использовался Adobe Audition. Фильтр баттерворта выглядел так (ФНЧ его часть):
При записи SDR АРУ был отключен.
Результаты.
1. Исходник ПЧ
2. АМ 4,2кГц - HDSDR
3. АМ 24кГц + фильтр баттерворта 4-го порядка 8..4000 Гц
4. ПЧ + поворот фазы 90 + сложение IQ + фильтр Баттерворта 4-го порядка 8..4000Гц
5. ПЧ + фильтр Баттерворта 4-го порядка 8..4000Гц на I и Q + поворот фазы 90 + сложение IQ
Update:
6. ПЧ+фильтр IQ Баттерворт 4000 4-го порядка+АМ демодуляция в HDSDR
7. Демодуляция ECSS +/-24кГц + фильтр Баттерворта 8..4000Гц 4-го порядка
Обсудим? Последний вариант по идее самый "правильный". Сразу могу сказать, на что я обратил особое внимание - это фрагмент в районе 0:45..0:50 записи. В этом месте очень наглядно видна разница между звуком SDR и "хенд-мейдом" с фильтром Баттерворта. |
|
Дата: 23 Июл 2019 14:02:18 · Поправил: AOR (23 Июл 2019 14:05:18)
#
Скат надо делать близкий к аналоговому фильтру с колоколообразной АЧХ. Но даже небольшой наклон АЧХ заметно влияет на качество демодуляции.
Сейчас уже многие разработчики SDR к этому пришли, изначально попытка реализовать прямоугольный фильтр, пытаясь добиться максимума избирательности давала этот неприятный звук с "металлическим" оттенком, искажениями.
|
Реклама Google
|
|
|
Дата: 23 Июл 2019 16:02:10 · Поправил: wazzoo (23 Июл 2019 16:03:31)
#
AOR
Тут есть нюанс (ы).
В данном эксперименте использовались две разные демодуляции. Первая - каноническая от SDR, представляющая собой A=(I2+Q2)0,5
Вторая - "моя" - наверняка она имеет какое-то название, но я не знаю какое. Быть может синхронная, не знаю - хотелось бы комментарий специалиста тут. Суть у неё следующая:
1. Частота несущей выведена ровно в 0 (иначе будут биения)
2. На входе имеем I и сдвинутый от него на 90 градусов Q.
3. Демодулятор:
- обратно сдивгает фазу на 90 градусов у Q
- суммирует I и Q
Т.е. A=(I+Q-90deg)
Так вот можно обратить внимание, что решающую роль сыграл не фильтр, а демодулятор. Обратите внимание на "результат 3" - здесь использовалась SDR-демодуляция фактически без фильтрации (24 кГц не в счет - с таким фильтром все слышимые компоненты остаются нетронутыми). Далее фильтр Баттерворта.
Т.е. коротко Результат 3 = "SDR-демодуляция + фильтр Баттерворта"
Сравним с "Результат 4" = "синхронная" демодуляция + фильтр Баттерворта. Разница при прослушивании весомая - собственно именно смена демодулятора определила уход неприятных искажений в районе 0:45..0:50 записи.
Тогда как гипотеза, что фильтрация нужна именно до демодуляции, пока не подтвердилась - сравним результат 4 и результат 5 - разницу я так вот прямо и не вижу. Для полноты картины могу записать следующий вариант:
"Результат 6" = IQ + фильтрация I и Q Баттервортом + демодуляция в HDSDR (с фильтром +/-24 кГц)
Пробовал, результат так же не очень - т.е. демодулятор HDSDR все портит.
Быть может позже, как дойдут руки, я прогоню запись через демодулятор A=(I2+Q2)0,5 - а то вдруг HDSDR что-то сам вносит помимо чистой демодуляции. Просто в Adobe Audition нельзя смоделировать такой вариант демодуляции - вот почему я использовал центрирование частоты, сдвиг на 90, сложение.
|
|
Дата: 23 Июл 2019 16:26:08 · Поправил: wazzoo (23 Июл 2019 16:29:33)
#
Update: выше добавил варианты 6 и 7
Можно обратить внимание, что смена демодуляции с АМ на ECSS в рамках SDR (HDSDR) уже изменила ситуацию к лучшему в плане искажений
Так же - сравнивая результат 2 и 6 можно сделать вывод, что более плавный скат (баттерворт перед демодуляцией) так же улучшает ситуацию, но не так сильно, как смена демодулятора. Тем не менее отметим, что гипотеза о плавных скатах здесь наглядно подтвердилась
|
|
Дата: 23 Июл 2019 16:35:18
#
На фильтрах с излишней прямоугольностью практически все новички SDR строения спотыкаются, видел неоднократно. Но смотреть нужно не только на прямоугольность, но и на step response, как там это на русском – переходная функция. Если есть на ней большие выбросы, то фильтр будет «звенеть», лучше сменить аппроксимирующую функцию в пакете проектирования фильтра. И чем больше прямоугольность фильтра, при прочих равных, тем больше будут выбросы на step response.
Иногда излишняя прямоугольность появляется при неправильной схеме децимации, когда делают ее «в лоб» по школьному учебнику. Необходимо внимательно смотреть за наложением спектров, это позволит минимизировать прямоугольность фильтра без пролезания помех в полезную полосу.
|
|
Дата: 23 Июл 2019 16:38:57
#
Суммируя гипотезы:
1. Нужны плавные скаты. Да, подтверждена - сравним "2" (прямоугольный фильтр) и "6" (Баттерворт 4-го порядка) - демодуляция одинаковая, фильтры разные
2. Нужно делать скаты до демодуляции, а после демода уже не влияет. На мой взгляд НЕ подтверждается - просьба тут высказать свое мнение после прослушивания.
- Сравним для АМ демодулятора. "3" (демод до фильтра Баттерворта) и "6" (демод после фильтра Баттерворта)
- Сравним для "синхронного" демодулятора. "4" (демод до фильтра Баттерворта) и "5" (демод после фильтра Баттерворта)
3. Дело в демодуляторе (в устном разговоре с Хайо это была моя гипотеза). Подтверждается, при чем влияние в этом конкретном эксперименте сильнее, чем от фильтра.
- Сравним для фильтра Баттерворта с демодуляцией до фильтрации: "3" (АМ демод) и "4" ("синхро"-демод)
- Сравним для фильтра Баттерворта с демодуляцией после фильтрации: "6" (АМ демод) и "5" ("синхро"-демод)
Каждый может сам проверить гипотезы на слух. Суть проверки здесь - изменение лишь одной "переменной", и просмотр эффекта от изменения.
|
|
Дата: 23 Июл 2019 16:40:30 · Поправил: wazzoo (23 Июл 2019 16:41:44)
#
YuriVR
А где можно подробнее почитать про переходную функцию? И что такое "выбросы" в её случае? Если не сложно - на пальцах как-то пояснить...
А еще лучше - может у Вас есть какие-то готовые решения по проектированию "слушабельного" тракта SDR
|
|
Дата: 23 Июл 2019 17:58:37
#
wazzoo
«step response» вбиваете в гугл и читаете. Если на русском хочется, то сложнее поиском найти. Я студентам эту подборку скидываю - https://yadi.sk/d/79YG6CTO3KmyMZ , в ней рекомендую начинать с источника «01 - ЦОС теория обработки и схемотехника».
Примеры хороших и плохих step response сейчас сброшу. |
|
Дата: 23 Июл 2019 17:58:56
#
В 1 Гуляет сигнал из R в L
На слух мне больше подходит вариант 4, но разные куски фонограммы звучат по-разному , возможно, что из-за не корректного исходного сигнала.
Но в любом случае сигнала чистого не бывает , всегда присутствуют импульсные помехи . Вот именно и они создают "звон" , кот. при демодуляции делает дискомфортность.
Я не теоретик -это мое имхо и некоторый опыт использования приемников.
|
|
Дата: 23 Июл 2019 18:13:23
#
ats52
В 1 Гуляет сигнал из R в L
Это нормально - т.к. IQ сигнал - он не для слушания, а просто как исходник выложен. Гуляние обусловлено тем, что разрядность частоты 1 Герц, т.е. совсем точно, до долей герца, её не выставить, так что слышим гуляние вокруг несущей. Если бы попали ровно в частоту несущей, гуляния бы не было.
Следствия из этого гуляния:
- для АМ демодуляции вообще никакого
- для опробованной здесь "синхронной" - появление в демодулированном сигнале компонент с частотой "гуляния", они на слух конечно же не слышны, частота ведь меньше 1 герца - но на графике уровня их можно увидеть. Впрочем, и они убраны фильтром Баттерворта с частотой среза 8 Герц
YuriVR
Спасибо за подборку, интересные материалы.
Хотелось бы какой-то практичной проекции "на пальцах" от человека, знакомого с ней. Не поймите неправильно - просто из опыта, часто достаточно обойтись неким уровнем абстракции и упрощения для быстрого достижения конкретной практической цели. В данном случае эта цель узкая - фильтрация+демодуляция типичного вещательного АМ сигнала. Может есть какие-то известные подходы.
|
|
Дата: 23 Июл 2019 18:22:32
#
|
|
Дата: 23 Июл 2019 18:24:21
#
YuriVR
О - интересные графики. Т.е. показывают тот самый step responce. В какой программе можно такое получить?
|
|
Дата: 23 Июл 2019 18:28:38
#
wazzoo
Для работы с реальным эфиром, в идеале, реализовать по широкой полосе (хотя бы 20…40 кГц) очистку от импульсных помех, потом сделать ФОС (лучше с регулируемыми параметрами по границам по низу и верху, прямоугольности фильтра - как в нормальных шарманках типа FTDX-5000), потом АРУ (лучше тоже с несколькими значениями постоянной разряда, заряд можно быстрый делать – около 10 мс).
В общем, не так все просто, чтобы на пальцах быстро объяснить.
|
|
Дата: 23 Июл 2019 18:33:21
#
wazzoo
Характеристики фильтра рисует любая нормальная программа, которая их проектирует. Но если почитать методички, то без проблем и самому построить, имея коэффициенты фильтра – просто прогнать единичный скачок, т.к. step response – это реакция именно на него.
|
|
Дата: 23 Июл 2019 18:41:27 · Поправил: wazzoo (23 Июл 2019 18:42:29)
#
YuriVR
Если я правильно понял, что-то выше уже было сделано из этого:
1. реализовать по широкой полосе (хотя бы 20…40 кГц) - взята широкая ПЧ +/-24 кГц (48 кГц полоса).
2. очистку от импульсных помех - не чистилось, но в сигнале вижу лишь один импульсный артефакт, сам эфир чистый - так что это не отразилось на конечном результате с точки зрения слушабельности
3. потом сделать ФОС (лучше с регулируемыми параметрами по границам по низу и верху, прямоугольности фильтра - как в нормальных шарманках типа FTDX-5000) - ФОС - это фильтрация? Сделана на основе Баттерворта 4-го порядка - фильтр довольно гладкий, на слух один из самых "приятных" - был подобран в общем то как раз по хорошей слушабельности, граница 4 кГц сохраняет компоненты и речи и музыкальных вставок на данном конкретно сигнале. По идее соответствует двухзвенному LC фильтру, надеюсь, в Adobe Audition правильно воспроизвели математику фильтра.
4. потом АРУ (лучше тоже с несколькими значениями постоянной разряда, заряд можно быстрый делать – около 10 мс). . АРУ отсутствует, и не нужна - уровень сигнала станции почти постоянен в этом фрагменте.
Я тут поясню - хочется для начала решить задачу в гиперузком случае - т.е. на простом сигнале (как в данном случае - с хорошим уровнем над шумом, слабыми соседними станциями, постоянным уровнем на отрезке). Это позволит понимать предел - т.е. планку, на которую дальше ориентироваться. Пока не будет получен сравнимый например с Океаном Хайо результат по слушабельности даже на простом сигнале - нет смысла двигаться дальше. А дальше уже решать частные подзадачи (работу с слабыми сигналами, сигналами с соседними помехами, импульсными помехами и т.д.).
|
|
Дата: 23 Июл 2019 18:45:14
#
YuriVR
И еще вопрос. Есть ли на Ваш взгляд смысл смотреть в сторону FFT фильтров. Т.е. как я понимаю их принцип - вначале мы используем БПФ, получаем спектр, двигаемся по времени с неким окном (например Ханна) и оверлэпом. По своему усмотрению накладываем АЧХ на спектральные составляющие. Дальше делаем обратное БПФ - получаем фильтрованный сигнал.
Это будет давать нормальную step responce? Или таки сосредоточиться на фильтрах типа Баттерворта?
|
|
Дата: 23 Июл 2019 18:45:33
#
wazzoo
Ну у Вас средние волны, на них все несколько проще, но начать можно и так.
|
|
Дата: 23 Июл 2019 18:54:34 · Поправил: AOR (23 Июл 2019 18:57:44)
#
YuriVR прав в плане уточнения источника этого "звона" и искажений, это как раз переходная функция, просто она с "прямоугольностью" напрямую связана, поэтому мы начали обсуждать именно с этого момента.
Ну и конечно учитывать полезно не только АЧХ, но и ФЧХ фильтра. Демодулятор, опять же, может иметь разные параметры даже при одинаковой реализации, какой там фнч после детектора и пр. Вы можете его "настроить" при соответствующей симуляции? В железе (океан) Хайо менял как сам детектирующий диод, так и цепи, ответственные за постоянную времени, добивался минимальных нелинейных искажений по приборам. Может, взять такой же метод, смотреть мощность гармоник на выходе?
|
|
Дата: 23 Июл 2019 20:39:44
#
смотреть мощность гармоник на выходе?
Тогда уж надо как в ламповых каскадах, добиваться ярко выраженной 3-й гармоники.
Это как раз и придает "теплоту" звуку.
|
|
Дата: 23 Июл 2019 21:07:38
#
marvel
Доработка Океана преследовала цель высокой линейности и качества звучания, но не его "украшательства" как это происходит в ламповых ум.
|
|
Дата: 24 Июл 2019 09:43:24
#
AOR
У меня дома тоже ультралинейный каскад.
Хотя это и ЦАП (TEAC UD-501) и ушной усилитель (Violectric hpa v281).
Балансный выход и вход, топовые наушники...
Но от "нейтрального" звучания всей системы я, честно говоря, уже не в восторге.
Начинает резать ухо (особенно на CD рипах с разрешением 44 16).
|
|
Дата: 24 Июл 2019 12:18:15 · Поправил: wazzoo (24 Июл 2019 12:20:37)
#
AOR
но и ФЧХ фильтра.
Выше на графике она есть для Баттерворта - красная линия. Баттерворт из троицы Бессель, Баттерворт, Чебышев - имеет оптимальное сочетание избирательности и плавности ФЧХ. Про FFT фильтры ничего не знаю, может YuriVR что подскажет (выше я вопрос задавал). По идее, есть FFT фильтр будет работать хорошо - это наилучшее решение, мощности настольного компа/ноутбука ведь нам не жалко.
Хайо утверждал, что тракт в Океане максимально линеен и сохраняет АЧХ фильтров ПЧ. Особо подчеркнул, что и детектор линеен. Но как видим в этом эксперименте, способ детектирования влияет очень сильно. Видимо, сам детектор так-же имеет некую переходную характеристику - тот же диод ведь математически не идеальный. По АРУ разговор отдельный - пока надо решить задачу хотя бы на постоянном сигнале, без АРУ.
Может, взять такой же метод, смотреть мощность гармоник на выходе?
Какой метод предложите? Синтезируем две синусоиды максимального размаха на 1 и 2 кГц, смотрим на спектр после фильтра и после детектора?
Насчет "украшательства" - если будет полностью сохранена разборчивость речи/джинглов, включая слабые сигналы, но при этом не будет усталости от прослушивания - то пусть будет, это ж не фетиш. Правильный линейный тракт служит задаче получения максимума доступной в сигнале информации, т.е. главное не потерять её. В нашем случае (прием DX вещалок) нам по сути надо сохранить лишь разборчивость речи в максимальном объеме.
И еще один момент забываем - сам сигнал АМ-станции точно так же формируется, в том числе фильтрами - судя по спектру станций, так же довольно таки прямоугольными. Т.е. при "прямоугольной" АЧХ сигнала стацнии шириной +/-5кГц от несущей, нам выходит придется немного пожертвовать музыкой (речь вполне поместится в "плавный" фильтр).
|
|
Дата: 24 Июл 2019 17:28:06
#
wazzoo
Есть ли на Ваш взгляд смысл смотреть в сторону FFT фильтров.
Если тупо сделать прямое Фурье, обнулить часть гармоник, а потом обратное Фурье, то будут искажения. Здесь окном играться нужно, в общем, не так все просто.
Если КИХ фильтр достаточно длинный – более нескольких десятков отсчетов (точное значение границы зависит от архитектуры вычислителя), то с точки зрения производительности выгоднее использовать быструю свертку, основанную на БПФ, а не реализацию КИХ фильтра «в лоб». В методичке, которую я рекомендовал, это жуют достаточно подробно.
Но если у Вас получился сильно длинный КИХ фильтр, вероятнее всего, у Вас неоптимальная схема обработки – слишком большая частота дискретизации или слишком большая прямоугольность фильтра.
|
|
Дата: 24 Июл 2019 18:04:46 · Поправил: wazzoo (24 Июл 2019 18:10:38)
#
YuriVR
Да, конечно, с окном и оверлэпом - без них как я понял (когда делал NDB-скиммер) не обойтись, подбирать надо сочетание. Тестово сделал этот же фрагмент на FFT фильтре из пакета Adobe Audition, получилось весьма прилично.
В плане производительности - упор конечно на качество - за него борьба, производительность вторична - лишь бы хватило средненького компа для обработки в реалтайме. Т.е. это рассматривается как программная примочка к HDSDR (или к SDR sharp - в нём вроде можно свои плагины пилить), запускаемая на ноуте/компе.
FFT фильтр привлекателен тем, что он легко кастомизируется - можно просто задать нужную АЧХ (т.е. задать весовые коэффициенты на спектральные слоты) и всё.
Собственно пример для прослушивания на FFT:
ПЧ+"синхро" демод+FFT шириной 4600 по 6дБ
Получилось кмк лучше Баттервортовского варианта 4/5 (предыдущего лучшего варианта) - при том что полоса шире, а избирательность лучше (фильтр более прямоугольный, но и срез более широкий):
|
|
Дата: 24 Июл 2019 18:56:50
#
wazzoo
В методичке описан один из методов синтеза коэффициентов КИХ фильтра по АЧХ, он как раз использует теорему о связи АЧХ и ИХ. Вы делаете то же самое, только остаетесь в частотной области.
|
|
Дата: 25 Июл 2019 11:50:33 · Поправил: wazzoo (25 Июл 2019 11:54:18)
#
|
Реклама Google |
|