Цитата(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).