Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выделение слабых звуков на фоне сильных
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
sifadin
Здравствуйте!
Какие алгоритмы используют чтобы выделить слабые шумы, разговор на заднем плане от основного выступления?
Есть готовые пакеты программ для этих целей?
Alex11
При такой общей постановке задачи - не разделить. Можно адаптивной фильтрацией убить заглушающую разговор музыку или другие шумы, можно при наличии стереозаписи попытаться отделить двух дикторов, если хорошо разнесены по углам. Но разделить два разговора в моно записи практически не реально. Что-то можно попытаться сделать, если один голос мужской, а другой женский.
Xenia
Цитата(sifadin @ Oct 24 2013, 17:20) *
Здравствуйте!
Какие алгоритмы используют чтобы выделить слабые шумы, разговор на заднем плане от основного выступления?
Есть готовые пакеты программ для этих целей?


Если поставить один микрофон (узконаправленный?) так, чтобы он принимал преимущественно основное выступление (на сцене), а второй микрофон установить в зале, где есть посторонние шумы, то есть возможность вычесть из второй записи первую. Только не целиком, а только общую (коррелирующую) составляющую между обеими сигналами.
kolobok0
Цитата(sifadin @ Oct 24 2013, 17:20) *
..Какие алгоритмы используют чтобы выделить слабые шумы..


алгоритмы вряд-ли. Но судя по инфе от одного изобретателя, у которого изымало в своё время(прошлый век) государство не одно изобретение, рыть надо в конструктив. именно в ввиде решётки как звуковой фильтр на определённую волну.

так например микрофон зарытый в землю на расстоянии пару десятков метров, замечательно пишет и передаёт звуковой сигнал беседующих на скамейке sm.gif
Alex11
Микрофонная решетка очень помогает. Даже линейка (только по горизонтальному углу) из восьми микрофонов полметра в поперечнике дает очень хороший эффект. Людей на расстоянии полметра, понятное дело, не различить с 20 метров, но метра за 3 разделяет. Это не совсем то, что предлагалось в предыдущем посте, зато позволяет сначала все записать, а потом уродоваться с разделением.
KPiter
Цитата(Xenia @ Oct 25 2013, 03:47) *
возможность вычесть из второй записи первую. Только не целиком, а только общую (коррелирующую) составляющую между обеими сигналами.

А как получить это "не целиком"? то что надо вычитать из второй записи
Xenia
Цитата(KPiter @ Oct 26 2013, 23:49) *
А как получить это "не целиком"? то что надо вычитать из второй записи.


Представим себе микрофонную запись, как вектор длины N, состоящий из N точек (например, wav-файл). Тогда, установив два микрофона - первый на сцене, а второй в зале, - и оцифровывая их синхронно, получим два вектора одной и той же длины N.
Введем обозначения:
Вектор A (звук на сцене, оно же запись со сценического микрофона)
Вектор B (вектор разговоров в зале, неизвестен, подлежит вычислению)
Вектор С (запись с микрофона в зале)
Здесь A и C - данные с микрофонов, а B - чистый разговор, который мы хотим выделить.

Если микрофон А установлен так, что шум зала он не улавливает, а микрофон C улавливает разговор в зале + частично то, что идет со сцены, то вектор С может быть представлен в виде суммы:
Код
   С = k*A + B

где: k - скалярный коэффициент, указывающий долю звука со сцены в качестве примеси к разговору. Он неизвестен, но сейчас мы его вычислим из известных A и C по формуле:
Код
   k = (A'*C) / ( sqrt(A'A) * sqrt(C'C) )
где:
   (A'*C) = скалярное произведение векторов A и C
   sqrt(A'*A) = норма вектора A
   sqrt(C'*C) = норма вектора C

Поскольку векторы A и C нам известны (это записи с 1-го и 2-го микрофонов), то вычислить их скалярное произведение и нормы не составляет большого труда.
После того, как скалярный коэффициент k определен, искомый вектор разговора получается вычетом:
Код
   B = C - k*A

Оттого-то я и сказала, что из зального звука надо вычитать сценический звук не целиком (C-A), а только его корреллирующую долю (C-k*A).
sifadin
Спасибо!
Но запись уже имеется сделана хоть и стерео диктофоном но с малой базой между микрофонам
Думаю разрешение по углу мало что даст
Может ли дать что-либо такой подход
Пусть сигнал
S сумма
от независимых истоников
Возможно ли его разбить на сумму
S = S1 + S2
так чтобы корреляция между S1 и S2 была минимальна?


Xenia
Цитата(sifadin @ Oct 27 2013, 16:34) *
Пусть сигнал
S сумма от независимых истоников
Возможно ли его разбить на сумму
S = S1 + S2
так чтобы корреляция между S1 и S2 была минимальна?


К сожалению, существует бесконечно большое количество вариантов такого разбиения. Типа того, что вам выдали сумму 10000 руб, а требуется определить, какими бумажками она была выдана.

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

Ваши два вектора от микрофонов A и C образуют плоское двумерное пространство, состоящее из их всевозможных линейных комбинаций. И в этом пространстве можно как угодно расположить пару ортогональных координат (базис), и каждый из них будет отвечать условию нулевой корреляции между осями базиса. Ограничитель того рода, что обе проекции на базис должны быть положительны, ситуацию не спасает, т.к. и в этом случае число вариантов слишком велико.

Однако можно попытаться вращать "крестовину" осей шагами по 5 угловых градуса, оценивая на слух разборчивость речи.
sifadin
А как вращать крестовину на практике?
разбить всю запись на фрагменты
и для каждого подбирать такой частотный фильтр который
максимально выделяет слабый сигнал
или есть какие-то другие алгоритимы
Xenia
Цитата(sifadin @ Oct 27 2013, 18:30) *
А как вращать крестовину на практике?
разбить всю запись на фрагменты и для каждого подбирать такой частотный фильтр который максимально выделяет слабый сигнал или есть какие-то другие алгоритимы.


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

Проблема в другом - разделять фильтрами можно только то, что фильтруется sm.gif, т.е. для этого оба сигнала должны как-то различаться по спектру. Однако в вашем случае не сказано, что они отличаются. Например, разговор басом, можно успешно выделить на фоне игры на скрипке, но трудно на фоне игры на контарабасе.

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

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

"Вращать крестовину" - это лишь иная формулировка того, что искомый разговор является линейной комбинацией сигналов двух микрофонов. Т.е. вращение вокруг начала координат аналитически определяется так:
X = x * cos(a) - y * sin(a)
Y = y * cos(a) + x * sin(a)
где синусы и косинусы есть лишь иное представление коэффициентов линейной комбинации:
B = k1*A + k2*C

В практическом случае, когда постоянство громкости соблюдать не требуется, можно обойтись одним коэффициентом, как в прошлый раз:
B = С - k*A
И тут можно попытаться его подобрать "на слух" следующим образом: на стандартном проигрывателе в диалоге "Mаster Volume" есть движок "Balance", позволяющий корректировать баланс левого и правого канала. У меня Винда английская, а потому знать не знаю, как это на русскоязычной Винде переведено. Далее на 1-ый канал подается сигнал с первого микрофона, а на второй ИНВЕРТИРОВАННЫЙ (с обратной полярностью) сигнал со второго микрофона. Если это уже стереозапись, то надо цифровым образом инвертировать сигнал в одном из каналов. Потом слушают запись, в процессе прослушивания которой подбирают положение движка "Balance", стараясь задавить мешающую разборчивости речи музыку (не знаю точно, что у вас там).

Если у обоих микрофонов наблюдается разное предрасположение к одному и другому (сцене и залу), то должно существовать такое положение движка "Balance", при котором ненужное гасится вычитанием. А если этого нет, то в самом лучшем случае вы лишь несколько улучшите разборчивость речи, но от сценического звука полностью не избавитесь.
iiv
Цитата(sifadin @ Oct 24 2013, 19:20) *
Какие алгоритмы используют чтобы выделить слабые шумы, разговор на заднем плане от основного выступления?


два или больше микрофона с точными положениями их в пространстве позволят выделить несколько различных источников звука в аудитории - много раз так делал прослушку - работает очень успешно - в шумном ресторане можно выделить полностью все фразы каждого сидящего, хотя микрофоны по залу были разбросаны. Научные статьи гуглятся на Sidriopolis'а.

Цитата(sifadin @ Oct 24 2013, 19:20) *
Есть готовые пакеты программ для этих целей?


есть, но дорого, гуглите на EMMDD (кажется в Россию не поставляется) или на национальную лабораторию Сандии, но последние, думаю, вам тоже не продадут. У Кубисты (шведская мульти-ди) не покупайте, я этот софт в 1998 году им написал, а они до сих пор не удосужились его улучшить, а там есть некоторая специфика, которая на звуке работать не будет.
sifadin
Цитата(iiv @ Oct 27 2013, 22:38) *
два или больше микрофона с точными положениями их в пространстве позволят выделить несколько различных источников звука в аудитории - много раз так делал прослушку - работает очень успешно - в шумном ресторане можно выделить полностью все фразы каждого сидящего, хотя микрофоны по залу были разбросаны. Научные статьи гуглятся на Sidriopolis'а.



есть, но дорого, гуглите на EMMDD (кажется в Россию не поставляется) или на национальную лабораторию Сандии, но последние, думаю, вам тоже не продадут. У Кубисты (шведская мульти-ди) не покупайте, я этот софт в 1998 году им написал, а они до сих пор не удосужились его улучшить, а там есть некоторая специфика, которая на звуке работать не будет.

Sidriopolis'а не нашел. Если не трудно подскажите еще какие-нибудь ключевые слова
А к какого рода экспертам и куда нужно обращаться с подобными задачами.
Еще интересует другая задача. Есть жилое помещение в котором периодически раздается детский плач
Т.е. ребенка в помещении нет, но впечатление что всхлипывания идут из шкафа или другого места.
В общем впечатление присутствия. Человек утверждает что его преследует ОПГ, которой он что-то должен
Вопрос к какого рода экспертам следует обращаться в этой задаче?
iiv
Цитата(sifadin @ Oct 29 2013, 19:09) *
Sidriopolis'а не нашел. Если не трудно подскажите еще какие-нибудь ключевые слова

http://www.ece.umn.edu/users/nikos/
ключевых слов много, так как все кому не попадя это по-разному называют, тре-вей, мултивей, парафак разложения.

Цитата(sifadin @ Oct 29 2013, 19:09) *
А к какого рода экспертам и куда нужно обращаться с подобными задачами.
...
Вопрос к какого рода экспертам следует обращаться в этой задаче?

можно и ко мне sm.gif
sifadin
Ок я напишу в личку когда буду готов
163264
посмотрите этот http://telesys.ru/products/recorders/95/ диктофон с линейкой микрофонов. Может поможет.
Еще софт для обработки есть http://telesys.ru/products/recorders/soundprocessor.php
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.