LINUX.ORG.RU

Чтение сигнала микрофона


0

0

Подскажите в общих чертах, как решить след. экзотическую задачу ;-)

Рядом с компом стоит телефонный аппарат и есть микрофон, подключенный к звуковой карте.
Хочется, чтобы при входящем звонке комп реагировал на сигнал микрофона и производил некие действия. На компе Linux. Звуковая карта Intel 82801 (ac97).
Прикол в том, что действия должны производиться только в случае достаточно громкого сигнала (т.е. звонка телефона).

anonymous

Предлагаю решить задачу по-другому.
Телефон подключается через модем.
На ожидание от модема строки "RING\r\n" вешается прога.
По получении этой строки прога совершает нужные тебе действия.

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

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

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

anonymous
()

cat /dev/dsp0 и фильтруй его. Можно на какую нибудь фиксированную частоту (телефонного звонка) настроиться чтобы лишние помехи отсекать.
Фильтр - быстрое фурье преобразование на каком нибудь отрезке данных - пусть будет 1000 самплов - при частоте оцифровки 44 кГц это значит что будут потеряны сигналы с частотой ниже 44 Гц (звонок заведомо выше). Ну и в спектре смотришь интересующий тебя частотный диапазон и проверяешь есть ли там пики выше какого-нибудь порогового значения
В Октаве такой фильтр реализовать несложно будет

geekkoo

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

Спасибо. А анализировать уровень громкость не проще ли будет ? Если да, то как это сделать ?

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