GNU/Linux >> Tutoriels Linux >  >> Linux

Surveillance du niveau du microphone avec un outil de ligne de commande sous Linux

Cette solution évitera d'écrire à plusieurs reprises sur le disque, et même si cela prend dans le pire des cas une seconde au lieu des moins d'une demi-seconde souhaitées, j'ai trouvé qu'elle était assez rapide après l'avoir essayée. Alors, voici les deux scripts que j'utilise :

./détecter :

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"

Peu élégant, mais ça marche.

Remarque :Si vous voulez quelque chose de plus progressif, ajoutez quelque chose comme ceci :

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

pour désactiver et

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

pour activer le son.


Juste une version sans script python et TALKING_PERIOD, qui définit le nombre de secondes sonores au niveau DOWN_SOUND_PERC, puis passe au niveau 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

terminé


Linux
  1. Planification des tâches avec la commande Linux cron

  2. 8 conseils pour la ligne de commande Linux

  3. Gérer les connexions réseau à partir de la ligne de commande Linux avec nmcli

  4. Comment utiliser l'outil de ligne de commande sipcalc Linux

  5. Lire un fichier MP3 ou WAV via la ligne de commande Linux

Faites une pause en ligne de commande Linux avec Nyan Cat

Conseils pour lister les fichiers avec ls sur la ligne de commande Linux

Comment vérifier l'orthographe sur la ligne de commande Linux avec Aspell

Maîtrisez la ligne de commande Linux

Ripgrep - L'outil de recherche de ligne de commande le plus rapide pour Linux

Comment surveiller les hôtes avec l'outil de surveillance Linux Icinga