GNU/Linux >> Belajar Linux >  >> Linux

Memantau level mikrofon dengan alat baris perintah di Linux

Solusi ini akan menghindari penulisan berulang kali ke disk, dan meskipun dalam kasus terburuk membutuhkan waktu satu detik, bukan kurang dari setengah detik yang diinginkan, saya merasa cukup cepat setelah mencobanya. Jadi, inilah dua skrip yang saya gunakan:

./deteksi:

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"

Hampir tidak elegan, tetapi berhasil.

Catatan:Jika Anda menginginkan sesuatu yang lebih bertahap, tambahkan sesuatu seperti ini:

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

untuk menonaktifkan dan

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

untuk mengaktifkan suara.


Hanya versi tanpa skrip python dan TALKING_PERIOD, yang mengatur berapa detik suara akan terdengar pada level DOWN_SOUND_PERC, lalu naik ke level 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

selesai


Linux
  1. Miliki sapi di baris perintah Linux

  2. Masukkan diri Anda ke dalam baris perintah Linux

  3. Selesaikan lebih banyak di baris perintah Linux dengan GNU Parallel

  1. Jadwalkan tugas dengan Linux pada perintah

  2. Salin dan tempel di baris perintah Linux dengan xclip

  3. Bekerja dengan pipa di baris perintah Linux

  1. Menjadwalkan tugas dengan perintah cron Linux

  2. 8 tips untuk baris perintah Linux

  3. Kelola koneksi jaringan dari baris perintah Linux dengan nmcli