Снижение многоканального звукового шума с помощью Speex

Я много раз искал пример того, как использовать препроцессор библиотеки Speex для многоканального звука.

В документации для speex_preprocess_state_init() сказано, что:

Создает новое состояние предварительной обработки. Вы ДОЛЖНЫ создать одно состояние для каждого обрабатываемого канала.

Я предполагаю, что это означает, что мне нужно вызывать speex_preprocess_run() на каждом канале отдельно, но не будет ли это потенциально "искажать" результат, если препроцессор удалит больше шума из одного канала, чем из другого?

Кроме того, speex_preprocess_run() указывает, считается ли звук голосом или шумом / тишиной. Если мне нужно вызвать функцию для каждого канала, что произойдет, если один канал будет считаться голосовым, а другой - нет?

Я слишком много думаю об этом?


person dreijer    schedule 26.11.2013    source источник
comment
Сколько каналов? Если вы просто говорите о голосе, записанном в стерео, почему бы сначала не свести его в моно? Если вы говорите о многих каналах, на каждом из которых, вероятно, есть отдельные голоса, вам в любом случае может быть удобно рассматривать их независимо.   -  person Brad    schedule 26.11.2013
comment
Да, просто речь идет о голосе, записанном в стерео, так что 2 канала. Может быть, я отсталый, но не потеряю ли я верность, если микширую до моно?   -  person dreijer    schedule 26.11.2013
comment
Попробуйте и убедитесь. Вы обнаружите, что для голоса все будет хорошо. Иногда возникают проблемы с фазированием в зависимости от того, как были настроены микрофоны, но это редко и обычно не влияет на то, будет ли слышен голос.   -  person Brad    schedule 26.11.2013
comment
Интересно. Итак, вы говорите, что использование монофонического звука для голосового приложения, такого как Mumble или Skype, в целом нормально?   -  person dreijer    schedule 27.11.2013
comment
Абсолютно. В конце концов, ваш голос моно. Если вам интересно, почему у громкоговорителей и некоторых ноутбуков есть набор микрофонов, это для уменьшения шума и обратной связи. Основываясь на фазовой задержке между микрофонами, аппаратный DSP может более легко определить, какой полезный сигнал отличается от шума. Это не то, что вы можете (или должны) делать в программном обеспечении, не зная конкретных параметров микрофонов и не лицензируя некоторые хитрые алгоритмы.   -  person Brad    schedule 27.11.2013
comment
Что ж, обалденно! Большое спасибо за быстрые ответы!   -  person dreijer    schedule 27.11.2013
comment
Без проблем. Я резюмирую как ответ для других людей, которые смотрят на этот вопрос.   -  person Brad    schedule 27.11.2013


Ответы (1)


Голоса, записанные в стерео, обычно без проблем микшируются в моно. Размещение микрофона может вызвать некоторые проблемы с фазированием, но обычно это не проблема.

Как только вы сведете его в моно, вы можете обрабатывать звук как обычно.

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

person Brad    schedule 26.11.2013