реклама на сайте
подробности

 
 
> Выделение слабых звуков на фоне сильных
sifadin
сообщение Oct 24 2013, 13:20
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 11-02-09
Пользователь №: 44 698



Здравствуйте!
Какие алгоритмы используют чтобы выделить слабые шумы, разговор на заднем плане от основного выступления?
Есть готовые пакеты программ для этих целей?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Oct 24 2013, 23:47
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



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


Если поставить один микрофон (узконаправленный?) так, чтобы он принимал преимущественно основное выступление (на сцене), а второй микрофон установить в зале, где есть посторонние шумы, то есть возможность вычесть из второй записи первую. Только не целиком, а только общую (коррелирующую) составляющую между обеими сигналами.
Go to the top of the page
 
+Quote Post
KPiter
сообщение Oct 26 2013, 19:49
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 22-09-06
Из: NN
Пользователь №: 20 592



Цитата(Xenia @ Oct 25 2013, 03:47) *
возможность вычесть из второй записи первую. Только не целиком, а только общую (коррелирующую) составляющую между обеими сигналами.

А как получить это "не целиком"? то что надо вычитать из второй записи
Go to the top of the page
 
+Quote Post
Xenia
сообщение Oct 26 2013, 22:39
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(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).
Go to the top of the page
 
+Quote Post
sifadin
сообщение Oct 27 2013, 12:34
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 11-02-09
Пользователь №: 44 698



Спасибо!
Но запись уже имеется сделана хоть и стерео диктофоном но с малой базой между микрофонам
Думаю разрешение по углу мало что даст
Может ли дать что-либо такой подход
Пусть сигнал
S сумма
от независимых истоников
Возможно ли его разбить на сумму
S = S1 + S2
так чтобы корреляция между S1 и S2 была минимальна?


Go to the top of the page
 
+Quote Post
Xenia
сообщение Oct 27 2013, 14:15
Сообщение #6


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



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


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

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

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

Однако можно попытаться вращать "крестовину" осей шагами по 5 угловых градуса, оценивая на слух разборчивость речи.
Go to the top of the page
 
+Quote Post
sifadin
сообщение Oct 27 2013, 14:30
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 11-02-09
Пользователь №: 44 698



А как вращать крестовину на практике?
разбить всю запись на фрагменты
и для каждого подбирать такой частотный фильтр который
максимально выделяет слабый сигнал
или есть какие-то другие алгоритимы
Go to the top of the page
 
+Quote Post
Xenia
сообщение Oct 27 2013, 17:33
Сообщение #8


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(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", при котором ненужное гасится вычитанием. А если этого нет, то в самом лучшем случае вы лишь несколько улучшите разборчивость речи, но от сценического звука полностью не избавитесь.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sifadin   Выделение слабых звуков на фоне сильных   Oct 24 2013, 13:20
- - Alex11   При такой общей постановке задачи - не разделить. ...   Oct 24 2013, 23:00
- - kolobok0   Цитата(sifadin @ Oct 24 2013, 17:20) ..Ка...   Oct 25 2013, 15:07
- - Alex11   Микрофонная решетка очень помогает. Даже линейка (...   Oct 25 2013, 15:29
- - iiv   Цитата(sifadin @ Oct 24 2013, 19:20) Каки...   Oct 27 2013, 18:38
|- - sifadin   Цитата(iiv @ Oct 27 2013, 22:38) два или ...   Oct 29 2013, 14:09
|- - iiv   Цитата(sifadin @ Oct 29 2013, 19:09) Sidr...   Oct 29 2013, 16:31
|- - sifadin   Ок я напишу в личку когда буду готов   Oct 30 2013, 13:20
- - 163264   посмотрите этот http://telesys.ru/products/recorde...   Nov 4 2013, 15:15


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 02:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01511 секунд с 7
ELECTRONIX ©2004-2016