Kullanım sox
gelen SOX kısa ses örneğini analiz etmek:
sox -t .wav "|arecord -d 2" -n stat
İle -t .wav
biz wav türünü işlemek belirtin "|arecord -d 2"
yürütür arecord
, iki saniye programı -n
boş dosyaya verir ve birlikte stat
biz biz istatistiklerini istiyoruz belirtin.
Bu komutun çıktısı, bazı arka plan konuşmalarına sahip sistemimde:
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
Samples read: 16000
Length (seconds): 2.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.312500
Minimum amplitude: -0.421875
Midline amplitude: -0.054688
Mean norm: 0.046831
Mean amplitude: -0.000044
RMS amplitude: 0.068383
Maximum delta: 0.414063
Minimum delta: 0.000000
Mean delta: 0.021912
RMS delta: 0.036752
Rough frequency: 684
Volume adjustment: 2.370
Maksimum genlik daha sonra yoluyla elde edilebilir:
grep -e "RMS.*amplitude" | tr -d ' ' | cut -d ':' -f 2
Biz grep
istediğimiz hattı için kullanmak tr
boşluk karakterleri uzak trim ve daha sonra cut
bunu tarafından :
karakter ve bize verdiği ikinci katılmak 0.068383
bu örnekte. Yorumlar tarafından önerildiği gibi, RMS , maksimum genlikten daha iyi bir enerji ölçüsüdür.
bc
Sonuçta kayan nokta değerlerini komut satırından karşılaştırmak için sonucu kullanabilirsiniz :
if (( $(echo "$value > $threshold" | bc -l) )) ; # ...
1 dakika boyunca uyku çağıran bir döngü oluşturursanız ( Bash örneklerine bakın ), sesi sınar ve ardından tekrarlarsa, arka planda çalışmaya devam edebilirsiniz. Son adım, init komut dosyalarına veya servis dosyalarına (işletim sisteminize / dağıtımınıza bağlı olarak) manuel olarak başlatmanıza gerek kalmayacak şekilde eklemektir.