2

Есть ли способ (через командную строку) вывести уровень децибела звука, поступающего в линейный вход звуковой карты? Я хочу запустить скрипт, если громкость / интенсивность звука, поступающего в линейный вход, превышает определенный порог.

Я проверил файлы и подкаталоги в /proc /asound и немного поиграл с инструментами alsa /a *, но ничего перспективного не нашел.

Есть идеи / мысли?

3 ответа3

3

Попробуйте rec, включенный в пакет sox, с фильтром тишины. Вы можете определить уровень и продолжительность, чтобы начать и остановить запись. Затем вы можете использовать его как триггер для продолжения работы скрипта.

Есть очень хорошая ссылка: http://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/

С Уважением,

1

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

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

0

Вы можете попробовать что-то вроде этого:

/usr/bin/arecord -L # figure out what device to use

/usr/bin/arecord -d 1 --device plughw:CARD=HD1,DEV=0 -t wav | sox -t .wav - -n stats 2>&1 | awk '/RMS lev dB/{print $4}'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .