Utilice sox
de SoX pour analyser un court échantillon audio :
sox -t .wav "|arecord -d 2" -n stat
Avec -t .wav
nous spécifions que nous traitons le type wav, "|arecord -d 2"
exécute le arecord
pendant deux secondes, -n
vers le fichier nul et avec stat
nous spécifions que nous voulons des statistiques.
La sortie de cette commande, sur mon système avec un certain bruit de fond, est la suivante :
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
L'amplitude maximale peut alors être extraite via :
grep -e "RMS.*amplitude" | tr -d ' ' | cut -d ':' -f 2
Nous grep
pour la ligne que nous voulons, utilisez tr
pour supprimer les caractères d'espacement, puis cut
par le :
et prendre la deuxième partie qui nous donne 0.068383
dans cet exemple. Comme suggéré par les commentaires, RMS est une meilleure mesure de l'énergie que l'amplitude maximale.
Vous pouvez enfin utiliser bc
sur le résultat pour comparer des valeurs à virgule flottante à partir de la ligne de commande :
if (( $(echo "$value > $threshold" | bc -l) )) ; # ...
Si vous construisez une boucle (voir Exemples de Bash ) qui appelle dormir pendant 1 minute, teste le volume, puis répète, vous pouvez le laisser tourner en arrière-plan. La dernière étape consiste à l'ajouter à l'init scripts ou aux fichiers de service (selon votre OS / distro), de sorte que vous ne devez même pas le lancer manuellement.
6 votes
Jusqu'à ce qu'ils apprennent à appuyer sur CTRL + ALT + F7.
2 votes
@SuiciDoga Hey ; ils ne savent pas ce qui se passe !
3 votes
Félicitations pour la solution technique. Mais je pense qu'il est important de toujours dire la vérité aux enfants.
2 votes
Ça fait 8 ans, j'espère que tes enfants ne sont pas aussi crédules ou bruyants maintenant.