|
|
  |
Подавление акустического эха с помощью FPGA, Какие алгоритмы подходят, и вообще, реализуемо ? |
|
|
|
Aug 2 2009, 14:29
|
Местный
  
Группа: Свой
Сообщений: 339
Регистрация: 27-08-05
Пользователь №: 8 013

|
Рассматривается система, в которой есть полностью четырехпроводный речевой тракт с выходом во внешний мир через цифру. Частота следования отсчетов 8 КГц, 16 разрядов. Есть необходимость кроме использования телефонной трубки обеспечить громкоговорящую связь для одного такого канала. Из свободных ресурсов - половина LE в Циклон 3 ( EP3C5 ) и почти все умножители ( 20 - 21 ) и ОЗУ ( блоков 40 ). Посмотрел применяемые алгоритмы в системах на DSP, похоже, самый популярный - компенсация по методу наименьших квадратов. Опыта в цифровой обработке сигнала у меня мало, прикинул, вроде могу втиснуть что-то такое, но никакой уверенности в том, что ресурсов хватит и что работать будет как надо, нет. Как последний вариант, можно сделать систему с переключением, но этого очень не хочется. Просьба помочь советом, где посмотреть самые "модные" алгоритмы с прицелом на FPGA и насколько это вообще реализуемо при таких ресурсах.
|
|
|
|
|
Aug 2 2009, 16:07
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Если задача для Вас новая - прицепите DSP и отладьте алгоритм в нем. А потом сами легко оцените, уберется он внутрь, или нет. В AEC очень много подводных камней, которые отловить на моделе крайне сложно, а реализация в FPGA очень негибкая с точки зрения отладки алгоритма. Что касается собственно алгоритма - да, разумеется, это адаптивные фильтры, и часто обычный LMS (NLMS), который несмотря на свою простоту обладает и довольно серьезными недостатками, как то медленная сходимость и разваливаемость при попытках повышения скорости. Я бы посоветовал обратить внимание еще и на Fast RLS реализации, как то например адаптивные фильтры на структурах Лягерра, они (у меня) показали значительно лучшие результаты на подавлении акустического эха.
ЗЫ. Касаемо ресурсов - должно хватить с запасом.
|
|
|
|
|
Aug 3 2009, 07:03
|
Местный
  
Группа: Свой
Сообщений: 339
Регистрация: 27-08-05
Пользователь №: 8 013

|
Спасибо SM, про достаточность ресурсов приятно слышать. Что касается DSP, то с ними на уровне программ я вообще не работал, надо нагружать человека, и так занятого выше головы. Посмотрел Матлаб, им хоть как-то пользовался. Но там другая проблема - в реальном времени не выйдет поэксперементировать. Придется прямо на FPGA разбираться, благо железо готовое есть. В связи с этим очень хотелось-бы посмотреть примеры реализации похожих систем на FPGA. Если есть ссылки или сами тексты, очень буду признателен за помощь! Мне в основном попадаются примеры на "C", а это не то, что привычный Verilog, да и рассчитано на DSP.
|
|
|
|
|
Aug 3 2009, 07:31
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(bsp @ Aug 3 2009, 11:03)  Мне в основном попадаются примеры на "C", а это не то, что привычный Verilog, да и рассчитано на DSP. Я тоже не видел описаний для ПЛИС, да и не слышал, чтобы кто-то использовал ПЛИС для этой цели в принципе (разве что ASIC-остроители в прототипах, но те ничего никому за так не дадут). ПЛИС для речевого сигнала - это как из С-300 по воробью. Если с ДСП нет желания связываться - тогда предлагаю два других варината: 1) Матлаб, и несколько разных моделей тракта ЦАП -> усилитель -> динамик -> корпус_устройства+помещение+окр.среда+шум+сигнал -> микрофон -> усилитель -> АЦП, и гонять на нескольких вариантах моделей помещения с разными шумами и полезным сигналом. Снять параметры модели "корпус_устройства+помещение+окр.среда" можно тем же матлабом и звуковой картой, выдав ограниченный по спектру псевдослучайный сигнал на динамик, который в корпусе, и приняв сигнал с микрофона, после чего в матлаб. 2) Временно запаять ПЛИС пожирнее, вогнать туда софт-процессор достаточной мощности, и отладить на нем алгоритм в виде программы, после чего реализовать железно. Алгоритм такой сложности, написанный на С, переделывается в описание устройства, его исполняющего, на раз одной левой.
|
|
|
|
|
Aug 5 2009, 08:05
|
Местный
  
Группа: Свой
Сообщений: 339
Регистрация: 27-08-05
Пользователь №: 8 013

|
Вот еще вопрос. Есть плата с микросхемой Cirrus Logic CS6422, представляет из себя адаптивный компенсатор акустического и сетевого эха, четырехпроводная, внутри цифровая, на входах выходах АЦП ЦАП. В нее заложена возможность при перехода в полудуплексный режим, если компенсация не справляется. Означает-ли это, что гарантированной устойчивости компенсации во всех ситуациях нельзя добиться, или есть примеры, говорящие об обратном? Лирическое отступление - свалилась другая срочная работа совершенно отличающегося характера, теперь месяц или два эхоподавлением придется заниматься в фоновом режиме ( хотя эту работу тоже никто не отменял, и тянуть с ней сильно нельзя ). А изучить в области цифровой обработки сигналов похоже, придется много. Может кто посоветует хорошую литературу для изучения. С основами был знаком когда-то, но многое уже забыл.
|
|
|
|
|
Aug 5 2009, 08:25
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(bsp @ Aug 5 2009, 12:05)  Означает-ли это, что гарантированной устойчивости компенсации во всех ситуациях нельзя добиться, или есть примеры, говорящие об обратном? Да, означает. Всегда может быть эхо с такой задержкой, с которой не справится адаптивный фильтр имеющейся длины. Более того, возможно, что существует такое эхо (или сигнал), которое "развалит" адаптивный фильтр с заложенными параметрами. Особенно это касается узкополосных (около-гармонических сигналов). Цитата(bsp @ Aug 5 2009, 12:05)  А изучить в области цифровой обработки сигналов похоже, придется много. Может кто посоветует хорошую литературу для изучения. С основами был знаком когда-то, но многое уже забыл. Ну тут вопрос - с какого уровня. Вспомнить основы - "библию" - например Оппенгейма с Шафером или Рабинера с Голдом. Конкретно по теме - Адаптивная обработка сигналов, Б. Уидроу, С.Стирнз. Еще я бы сам посоветовал обратить внимание на публикации Ali H.Sayed и Ricardo Merched на тему адаптивной фильтрации, про быстрые RLS-ы.
|
|
|
|
|
Aug 12 2009, 06:29
|

Участник

Группа: Свой
Сообщений: 41
Регистрация: 4-05-08
Из: Новосибирск
Пользователь №: 37 258

|
Да, результаты Fast RLS реализации, особенно на структурах Лягерра впечатляют (на графиках из статей Ali H.Sayed и Ricardo Merched). Одно но - при беглом взгляде на алгоритм, для реализации RLS нужно использовать деление, что для FPGA неудобно. 2SM: Вы использовали деление в своих алгоритмах fast RLS? 2bsp: http://www.rowetel.com/ucasterisk/oslec.html - собираюс реализовать эот алгоритм в FPGA тк без делений, но он не очень подходит для подавления при громкой связи ( этот алгоритм скорее рассчитан на остаточное эхо ).
|
|
|
|
|
Aug 12 2009, 09:38
|

Участник

Группа: Свой
Сообщений: 41
Регистрация: 4-05-08
Из: Новосибирск
Пользователь №: 37 258

|
Цитата(SM @ Aug 12 2009, 14:39)  Разумеется использовал. Более того, деление нужно и в классическом NLMS... Это одно место с делением на усреднённую мощность в NLMS красиво обходится : Поправка коэффициентов в фильтре всё-равно с эмпирическим коэффициентом, и значение усреднённой мощности для нормализации поправок (N-нормализация) берётся с точностью до одного бита (те коэффициент от этого скачет от 1 до 2х). Далее деление заменяется на сдвиг и всё )
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|