GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Überwachen des Mikrofonpegels mit einem Befehlszeilentool unter Linux

Diese Lösung vermeidet das wiederholte Schreiben auf die Festplatte, und obwohl es im schlimmsten Fall eine Sekunde statt der gewünschten weniger als einer halben Sekunde dauert, fand ich es nach dem Versuch schnell genug. Also, hier sind die beiden Skripte, die ich verwende:

./erkennen:

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"

Kaum elegant, aber es funktioniert.

Hinweis:Wenn Sie eine schrittweisere Sache wünschen, fügen Sie so etwas hinzu:

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

zum Stummschalten und

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

zum Aufheben der Stummschaltung.


Nur Version ohne Python-Skript und TALKING_PERIOD, die festlegt, wie viele Sekunden auf DOWN_SOUND_PERC-Pegel klingen, und geht dann auf UP_SOUND_PERC-Pegel.

#!/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

erledigt


Linux
  1. Planen von Aufgaben mit dem Linux-Cron-Befehl

  2. 8 Tipps für die Linux-Kommandozeile

  3. Arbeiten mit Datenströmen auf der Linux-Befehlszeile

  4. So verwenden Sie das Linux-Befehlszeilentool sipcalc

  5. Spielen Sie MP3- oder WAV-Dateien über die Linux-Befehlszeile ab

Machen Sie mit Nyan Cat eine Pause an der Linux-Befehlszeile

Tipps zum Auflisten von Dateien mit ls in der Linux-Befehlszeile

So prüfen Sie die Rechtschreibung auf der Linux-Befehlszeile mit Aspell

Meistern Sie die Linux-Befehlszeile

Ripgrep – Das schnellste Kommandozeilen-Suchtool für Linux

So überwachen Sie Hosts mit dem Linux-Icinga-Überwachungstool