LINUX.ORG.RU
Ответ на: комментарий от Harald

Ну это понятно, что можно, я бы и тему не начал, не будь уверен, что можно, однако вопрос скорее: куда копать? Делать это в юзерспейс или в ядре? В общем, что почитать?

IvanR ★★★
() автор топика
Ответ на: комментарий от XoFfiCEr

Мне хотелось бы подавлять внешние шумы, то есть, надеть наушники и ничего не слышать, разговоров, телевизор и т. п. Перейти в другую комнату не могу за неимением таковой

IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

надеть наушники и ничего не слышать

Купи наушники с активным шумоподавлением. Они будут ещё и умными, будут отключать шумодав, когда с кем-то разговариваешь, ставить на паузу музыку, когда снимаешь их с головы. Зачем так мучаться?

sergej ★★★★★
()
Ответ на: комментарий от IvanR

Для этого включают белый шум. Ты думаешь что если ты будешь слушать инвертированный звук то он погасит (так как волны встречнонаправленны) внешний звук на котором он направлен? Как волны на воде? Или импульсы электромагнитные… Лол ты серьёзно? Для этого должны быть идеальные условия, а так ты просто в уши направишь себе ещё один поток звука и будешь вместо привычных домашних визгов ребёнка слышать воообще адовую хероту хахаха. Крыша поедет ты чё дядь )))

anonymous
()

Вангую, что программно не получится – задержка не позволит. Даже на проф. оборудовании она составляет минимум несколько миллисекунд, что, кмк, не достаточно. Не спроста же шумоподавление аппаратно делают прямо в наушниках.

anonymous
()
Ответ на: комментарий от sergej

Теория про это ещё в школе проходится. Но на практике оно идеально никогда не будет если не создавать лабораторные условия.

anonymous
()

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

Shulman
()
Ответ на: комментарий от IvanR

ну теория такая теоритечески подавление шума противофазой возможно но все зависит от расстояний от излучателей и частоты звука, которая тоже постоянно меняется. Музыка это ведь не постоянный сигнал 400 Hz.

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от anonymous

Именно так и работают наушники с шумоподавлением. Звучит как будто бы не реалистично, но я сам офигел, как это хорошо работает, когда первый раз надел такие наушники.

anonymous
()
Ответ на: комментарий от anonymous

Теория про это ещё в школе проходится

Смотря что подразумевать под словом «теория». В пдфке вроде как описание рабочей модели 1957 года для наушников, которая гасит низкочастотный шум на 20дБ. Хотя бы есть с чего начать.

А то, что применяется в нормальных современных наушниках наверное открыто не распространяют.

sergej ★★★★★
()
Ответ на: комментарий от Shulman

Тут вообще никакого кода не надо, микрофон + усилок на аналоговой схеме результат прямо в динамики наушников. Аппаратные вычислительные хернюшни никогда не дадут отсутствие задержки такое как аналоговые схемы. (нуууууу лаааааадно можно туда ещё 1, 100 гигарег транзистор поставить что-бы легче усиливать, скорость его работы достаточна чтобы логорифм волны реальной по точности был выше чем float 32)

anonymous
()
Ответ на: комментарий от anonymous

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

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от XoFfiCEr

ты должен подавать не чисто шум на вход а немного зашумленный гармонический сигнал т. е. синусоиду

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

какие-то гармоники от электронного шума тут приплетаешь. пфф.

anonymous
()
Ответ на: комментарий от anonymous

неа не очень понял ну смотри какие у нас источники шума это внешний шум и шум при усилении, ты знаешь как увеличивают частоту сигнала? Фильтрами вырезают гармоники от основого сигнала. https://www.asutpp.ru/garmoniki-v-elektricheskih-setyah.html

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от XoFfiCEr

ты пьяный что ли? при чём тут гармоники, лол? для чего увеличивать частоту? а если синусоида чистая, без гармоник, как ты тогда увеличишь её частоту? а если надо увеличить до значения, для которого гармоника отсутствует в сигнале?

шум при усилении оставим на совесть производителей микросхем и транзисторов.

anonymous
()
Ответ на: комментарий от XoFfiCEr

как это к теме-то относится? для чего увеличивать и уменьшать частоты?

anonymous
()
Ответ на: комментарий от IvanR

они дорого стоят

Экономически целесообразнее заработать денег и купить готовые наушники с шумоподавлением, чем заниматься разработкой самостоятельно. Тем более ради одного экземпляра.

Собственно возможно ли и как реализовать с минимальной задержкой? Что-то типа шумоподавления. Язык си

С обработкой на CPU основной машины? Нет, это не реально.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от IvanR

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

motato
()

Представь, что ты приложение, один лишь размер буфера от звуковой подсистемы у тебя, ну пусть всего 64 сэмпла + еще неизвестно че там в остальном тракте. И все, что ты сейчас будешь выдавать обратно со знаком минус, к моменту озвучивания уже отстало минимум на несколько миллисекунд минимум.

Все еще хочется? Тогда еще смотри что — для шумоподавления надо вычитать звук именно таким, какой он в твоем ухе. Соответственно и решение простое — пихаешь микрофон себе в ушной канал… а дальше можно уже и не напрягаться особо, дело сделано =)

t184256 ★★★★★
()

О, могу объяснить короче. Так как все твои попытки выдать умножания на минус сколько-нибудь за противофазу разобьются о конскую задержку, шум ты в итоге будешь прибавлять, и результат будет практически эквивалентен pactl load-module module-loopback.

t184256 ★★★★★
()
Ответ на: комментарий от Shulman

Аналоговая схема тут нужна для начала, без нанокодов. Потом еще наушники, проектировщики наушников, сотни нефти, несколько лет и к пятой коммерчески успешной модели будет уже почти как у того, что уже сейчас лежит на прилавке в магазине.

t184256 ★★★★★
()
Ответ на: комментарий от anonymous

Задержки обработки.

А если бы и не они, то че-то ухо у тебя — не материальная точка, а сложный разнесенный аппарат попротяженнее полуволны (300 м/c / 20 кГц / 2 = 7.5 мм).

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

t184256 ★★★★★
()
Ответ на: комментарий от IvanR

Для справки: одного из отметившихся регистрантов шоман госпитализировал в псих. больницу, но ты продолжай спрашивать советов у умалишённых, да.

anonymous
()
Ответ на: комментарий от i-rinat

С обработкой на CPU основной машины? Нет, это не реально.

Что не реально? Делать ДПФ на частоте 20 килосамплов в секунду? С этим даже дсп справляется, не говоря уже про современные процессоры на пк.

anonymous
()
Ответ на: комментарий от anonymous

шоман госпитализировал в псих. больницу

Типа забанил?

anonymous
()

это не очень сложно - берешь openal и прогоняешь к выходу два сигнала, один из плеера, второй с микрофона, противофаза микрофона зависит от формата, если фреймы знаковые, то value *= -1;, если беззнаковые, то value = max - value; затем тупо складываешь фрейм с микра с фреймом с плеера, и не забудь нормализовать, а задержку (одних фреймов от других) можно сделать настраиваемой «раньше-позже» ведь это будет зависеть от размеров помещения и расстояния источников до микра и ушей.

deep-purple ★★★★★
()
Ответ на: комментарий от sergej

купи лицуху винды и не страдай линуксом, винда еще и умная - за тебя думает.

deep-purple ★★★★★
()
Ответ на: комментарий от anonymous

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

deep-purple ★★★★★
()
Ответ на: комментарий от anonymous

ээээ, это шамана в психбольницу определили, ну, того, который на коне в москву ехать собирался

deep-purple ★★★★★
()

как реализовать с минимальной задержкой?

Например, DSP-процессор в наушниках Sony WF-1000XM3 HD NCP QN1 ©.

Что-то типа шумоподавления.

Основы ЦОС. Активное шумоподавление (видео) ©.

Программы для настройки шумоподавления микрофона ©.

Язык си

The Canonical Csound Reference Manual ©.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Лорчую видео.

Рассказываю как сделать:

  1. Нужно три микрофона: один внешний и два должны быть установлены в камерах наушников. Как ты их все подцепишь к компу - твои проблемы.

  2. Берем нерекурсивный цифровой фильтр и алгоритм адаптивной фильтрации RLS (он же - фильтр Калмана).

  3. Решаем задачу прямой идентификации путей прохождения сигнала от внешнего микрофона к внутренним. Т.е. в качестве входного сигнала для адаптивного фильтра берем сигнал с внешнего микрофона. На динамики в наушниках подаем сигнал с выходов адаптивных фильтров соответствующих каналов в противофазе. Вычитание (на самом деле сложение) сигналов, прошедших через адаптивный фильтр и через корпус наушников происходит на внутреннем микрофоне, его сигнал - сигнал ошибки.

  4. На Си сразу не делай. Сначала сделай записи со всех трех микрофонов, и отработай алгоритм на питоне. В принципе, если убирать только речевые сигналы (частота дискретизации 8 кГц), то питона должно хватить и на работу в реальном времени при использованиии подходящих библиотек, например моей: https://github.com/shkolnick-kun/yafl (правда она пока в стадии актовной разработки, сегодня буду заканчивать массивный рефакторинг).

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

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

Решаемо, но 1 внешнего микрофона мало. Шум может быть с разных направлений да ещё с переотражениями, что с учётом фаз требует нескольких пространственно разнесённых внешних микрофонов. В некоторых звукостудиях так делают, но это сложно и дорого.

и два должны быть установлены в камерах наушников

и по два в каждый… ставят во все современные шумодавы.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

нескольких пространственно разнесённых внешних микрофонов.

Не-не! хеpнЯ-колонку с пусть в хернЯ делают. Это там по 8 микрофонов вставляют для учета многолучевого распространения.

ТСу нужен POC вроде как. Я указал минимальную конфигурацию.

и по два в каждый… ставят во все современные шумодавы.

Не знал.

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 2)

беруши уже предлагали?

anonymous
()

Не вдаваясь в глубокие дебри аккустических тонкостей, самое простое - устанавливаешь faust, пишешь простейши кейс типа

process = *(-1);
Комниляешь его с помощью faust2alsa и запускаешь. :)

ChekPuk ★★★
()
Ответ на: комментарий от shkolnick-kun

Это реально. Иначе не было бы всяких там программных гитарных примочек и прочего GNU Radio.

Задачи разные. В GNU Radio и гитарных примочках задержка в 10-20 миллисекунд не имеет значения. В шумоподавлении в реальном времени имеет, потому что ты не можешь задержать шум на произвольный период времени для обработки. Что такое 10 миллисекунд задержки при игре на гитаре? Я не играю, но в интернете пишут, что мало кто чувствует такие задержки. Для SDR, если только для прослушивания, и секунда не так уж страшно. А для шумодава 10 миллисекунд означает, что у тебя нет шумодава.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.