GNU/Linux >> Znalost Linux >  >> Linux

Monitorování úrovně mikrofonu pomocí nástroje příkazového řádku v Linuxu

Toto řešení zabrání opakovanému zápisu na disk, a i když to v nejhorším případě trvá sekundu místo požadované méně než půl sekundy, po vyzkoušení jsem zjistil, že je dostatečně rychlé. Zde jsou tedy dva skripty, které používám:

./detect:

while true; do
    arecord -d 1 /dev/shm/tmp_rec.wav ; sox -t .wav /dev/shm/tmp_rec.wav -n stat 2>\
    &1 | grep "Maximum amplitude" | cut -d ':' -f 2 | ./check.py
    if [ $? -eq 0 ] ; then
         amixer set Master 0
    else
         amixer set Master 80
    fi
done

./check.py:

#!/usr/bin/env python
import sys

number = 0.0
thing="NO"

line = sys.stdin.readline()
thing = line.strip()
number = float(thing)

if number < 0.15:
    raise Exception,"Below threshold"

Sotva elegantní, ale funguje to.

Poznámka:Pokud chcete postupnější věc, přidejte něco takového:

   for i in `seq 0 80 | tac`; do
      amixer set Master $i
   done

pro ztlumení a

   for i in `seq 0 80`; do
      amixer set Master $i
   done

pro zrušení zvuku.


Pouze verze bez python skriptu a TALKING_PERIOD, která nastavuje, kolik sekund bude znít na úrovni DOWN_SOUND_PERC, a poté přejde na úroveň UP_SOUND_PERC.

#!/bin/bash

TALKING_PERIOD=16
UP_SOUND_PERC=65
DOWN_SOUND_PERC=45
counter=0
while true; do

echo "counter: " $counter

if [ "$counter" -eq 0 ]; then
    nmb=$(arecord -d 1 /dev/shm/tmp_rec.wav ; sox -t .wav /dev/shm/tmp_rec.wav -n stat 2>&1 | grep "Maximum amplitude" | cut -d ':' -f 2)

    echo "nmb: " $nmb

    if (( $(echo "$nmb > 0.3" |bc -l) )); then
        echo "ticho"
        amixer -D pulse sset Master 45%
        counter=$TALKING_PERIOD
    else
        echo "hlasno"
        amixer -D pulse sset Master 65%
    fi
fi

if [[ $counter -gt 0 ]]; then
        ((counter--))
fi

sleep 1

hotovo


Linux
  1. Plánování úloh pomocí linuxového příkazu cron

  2. Naplánujte si úlohu pomocí příkazu Linux at

  3. Zkopírujte a vložte na příkazový řádek Linuxu pomocí xclip

  1. Mít krávu na příkazovém řádku Linuxu

  2. Přihlaste se do příkazového řádku Linuxu

  3. Práce s datovými toky na příkazovém řádku Linuxu

  1. 8 tipů pro příkazový řádek Linuxu

  2. Udělejte více na příkazovém řádku Linuxu s GNU Parallel

  3. Jak používat nástroj příkazového řádku sipcalc Linux