Микрофон - подавление статического фонового шума в Linux


13

Моя звуковая карта - Realtek ALC 892. В Windows 7 я использую официальные драйверы Realtek, в Linux я использую PulseAudio (в Ubuntu 13.10). Как в Windows, так и в Linux, когда я включаю усиление микрофона + 30 дБ (требуется, потому что у меня тихий микрофон), я получаю очень раздражающий и громкий фоновый шум (я также подтвердил фоновый шум с Audacity в обеих системах).

Однако драйверы Windows Realtek имеют опцию подавления шума, которая работает (после ее включения Audacity не показывает фоновый шум, и мои уши также подтверждают, что фоновый шум отсутствует).

Изображение, показывающее опцию подавления шума

У меня вопрос, как я могу включить подавление фонового шума в ALSA / PulseAudio? Есть ли какой-нибудь модуль, который я могу установить, или, может быть, для него есть настройка, которую можно включить в файле конфигурации?

Я не могу найти решение для этого, и это единственное, что мешает мне полностью перейти на Linux - так как я много говорю с микрофоном, а в Windows ПО Realtek полностью удаляет фоновый шум, а PulseAudio не удаляет его, что означает, что записанный голос в Linux очень плохой.

Я знаю, что мог бы купить лучшую звуковую карту и микрофон, но, как я уже сказал, драйверы Windows Realtek устраняют шум на программном уровне в режиме реального времени (то есть не шумят при разговоре по TeamSpeak3 / Steam / любой другой программе voip), поэтому я надеюсь, что есть такая возможность и в Linux.

Это также crossposted на Ask Ubuntu , который в свою очередь уже ответили здесь .


1
Crossposted : askubuntu.com/questions/421671/… В этом IMO нет ничего плохого, если вы укажете это явно. В противном случае вы создаете возможность для людей тратить свое время, публикуя дубликаты ответов и т. Д.
Златовласка

2
@goldilocks добавил информацию на обоих сайтах о том, что она размещена перекрестно, чтобы избежать повторяющихся ответов
user1873947

Ответы:


5

Согласно спецификации Realtek ,

  • Микрофонная акустическая эхоподавление (AEC), подавление шумов (NS) и технология формирования лучей (BF) для голосовых приложений

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

Поэтому я бы приложил усилия к более общему решению подавления шума в Linux, не привязанном к этому конкретному драйверу:

/programming//q/4875818/684229


Спасибо за твой ответ. Однако связанный с вами вопрос говорит об эхоподавлении, которое отличается от статического подавления фонового шума (эхо от динамиков, статический шум обычно вызывается аппаратными средствами).
user1873947

По всей видимости, Realtek (и другие) были привлечены к ответственности за нарушение патентных прав за реализацию этой функции lexology.com/library/. Возможно, стоит проверить упомянутые там патенты.
Fizz

Поскольку я не убежден в долговечности этой ссылки: «Патенты США № 5825898 (патент '898); 6,483,923 (патент 923); 6,049,607 (патент 607); 6,363,345 (патент 345); и 6 377 637 (патент '637) ".
Fizz

3

Если это особенность устройства, а не только программное обеспечение, которое оно поставляло (вероятно, первое), то оно должно быть реализовано в драйвере ядра. 1 Мне кажется, что обычно звуковые карты Realtek PCI на самом деле используют драйвер Intel HDA с патчем для поддержки кодеков ALC (для всех, кто интересуется:) [src]/sound/pci/hda/patch_realtek.c.

Поиск в исходной документации ядра, «подавление шума» или «эхоподавление» не упоминается в отношении этих устройств. Поиск самого источника драйвера также явно не упоминается. Я думаю , что если бы он был реализован, это будет почти наверняка документированы с интерфейсом в /procили /sysкоторый пользовательское программное обеспечение может использовать, или с опциями для модуля драйвера.

Проблема, конечно, в том, что Realtek, как и большинство производителей оборудования, считает, что их исходный код драйвера является секретным, что затрудняет или делает невозможным создание драйверов для, например, систем, которые Realtek не полностью поддерживает, таких как Linux , У Realtek есть страница с перечнем драйверов Linux , однако ссылки кажутся мертвыми. Если вам повезет, у кого-то есть инструкции по его установке здесь (это сайт, ориентированный на Mint, но процесс будет одинаковым для любого дистрибутива). 2

Однако , даже если вы можете найти копию где-нибудь, я очень сомневаюсь, что драйвер реализует нужные вам функции, так как я не могу найти упоминания об этом. Скорее всего, оно более или менее совпадает с тем, что у вас уже есть; это может быть немного лучше (на странице Mint упоминается, что драйвер ядра меняет местами боковые и задние динамики), но может также оказаться хуже или полностью не работать, так как драйверы вне дерева не проверяются разработчиками ядра и может содержать проблемы с ядром, о котором авторы не знают (обратите внимание, что у авторов встроенного hda-патча есть @realtek.com.twадреса электронной почты).

Так что, если вы не услышите что-то другое, вам, вероятно, не повезло. Вы можете найти программные решения для этого, такие функции, по-видимому, реализованы Skype на Linux, поэтому они, очевидно, могут работать в режиме реального времени, используя только программное обеспечение. Кто-то также написал статью об этом, смеется. К сожалению, мне больше не повезло в поисках.

Здесь обсуждается использование возможностей alsamixerдля снижения шума. Я думаю, вам придется отключить pulseaudio, чтобы сделать это.


1. Pulseaudio на самом деле является инструментом пользовательского пространства, который построен на основе ALSA, звуковой подсистемы ядра (то есть: pulseaudio не реализует аппаратный доступ, он просто работает с потоками, поступающими из драйвера ядра или идущими к нему).

2. Если вы найдете его, вам нужна версия 3.0, а не версия 2.6. Эти цифры относятся к версии ядра Linux, с которой они совместимы, и вы используете ядро ​​3.x. Однако, опять же, если с вашим звуком все в порядке, я настоятельно рекомендую не беспокоиться об этом, поскольку вряд ли он что-то сделает для вас.


Спасибо за подробный ответ. Однако я обнаружил нечто, называемое «модуль webrtc-aec», описанное здесь: wiki.gentoo.org/wiki/PulseAudio . Однако, похоже, это работает только в приложениях, которые поддерживают этот модуль, это правильно? Также возможно, что это отключено в Ubuntu, случайно вы знаете, как включить этот модуль в PulseAudio? Это может быть решением моей проблемы
user1873947

Я не извиняюсь. Модуль pulseaudio был бы примером программного решения. Это похоже на то, что лучше всего рассматривать с отдельным, конкретным вопросом;)
Златовласка

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.