GNU/Linux >> Tutoriales Linux >  >> Linux

Monitoreo del nivel del micrófono con una herramienta de línea de comandos en Linux

Esta solución evitará escribir repetidamente en el disco, y aunque en el peor de los casos toma un segundo en lugar del deseado menos de medio segundo, encontré que es lo suficientemente rápido después de probarlo. Entonces, aquí están los dos scripts que uso:

./detectar:

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"

Apenas elegante, pero funciona.

Nota:si quieres algo más gradual, agrega algo como esto:

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

para silenciar y

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

para desactivar el silencio.


Solo la versión sin script de python y TALKING_PERIOD, que configura cuántos segundos sonará en el nivel DOWN_SOUND_PERC, luego pasa al nivel 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

hecho


Linux
  1. Programación de tareas con el comando cron de Linux

  2. Programar una tarea con Linux al mando

  3. Copie y pegue en la línea de comandos de Linux con xclip

  4. Tener una vaca en la línea de comandos de Linux

  5. Encárguese en la línea de comandos de Linux

Tómese un descanso en la línea de comandos de Linux con Nyan Cat

Sugerencias para enumerar archivos con ls en la línea de comandos de Linux

Cómo revisar la ortografía en la línea de comandos de Linux con Aspell

Domina la línea de comandos de Linux

Ripgrep:la herramienta de búsqueda de línea de comandos más rápida para Linux

Cómo monitorear hosts con la herramienta de monitoreo Linux Icinga