Como monitorar o nível de volume do microfone?

1

Encontrei uma solução que não funciona comigo:

audio - Monitorando o nível do microfone com uma ferramenta de linha de comando no Linux - Super User link

O problema é que eles estão usando amplitude máxima para detectar o som. No entanto, seu valor é sempre o mesmo por mim, não importa se o áudio gravado contém apenas silêncio ou alguns sons. Por exemplo:

10 segundos de silêncio (pode ser baixado aqui: link ):

$ arecord -f S16_LE -D hw:2,0 -d 10 /tmp/test-mic-silence.wav

$ sox -t .wav /tmp/test-mic-silence.wav -n stat
Samples read:             80000
Length (seconds):     10.000000
Scaled by:         2147483647.0
Maximum amplitude:     0.999969
Minimum amplitude:    -1.000000
Midline amplitude:    -0.000015
Mean    norm:          0.202792
Mean    amplitude:     0.009146
RMS     amplitude:     0.349978
Maximum delta:         0.913849
Minimum delta:         0.000000
Mean    delta:         0.001061
RMS     delta:         0.005564
Rough   frequency:           20
Volume adjustment:        1.000

10 s com alguns sons (pode ser baixado aqui: link ):

$ arecord -f S16_LE -D hw:2,0 -d 10 /tmp/test-mic-sounds.wav

$ sox -t .wav /tmp/test-mic-sounds.wav -n stat
Samples read:             80000
Length (seconds):     10.000000
Scaled by:         2147483647.0
Maximum amplitude:     0.999969
Minimum amplitude:    -1.000000
Midline amplitude:    -0.000015
Mean    norm:          0.185012
Mean    amplitude:     0.010225
RMS     amplitude:     0.334286
Maximum delta:         1.999969
Minimum delta:         0.000000
Mean    delta:         0.006213
RMS     delta:         0.057844
Rough   frequency:          220
Volume adjustment:        1.000

Qual é a diferença? Quais valores usar para detecção de som? Ou eu tenho que arrumar alguma coisa porque algo funciona errado?

Acabei de usar outro computador (um notebook com microfone embutido). Eu gravei dois arquivos WMA (com e sem sons) usando o Windows "Sound Recorder". Converteu-os em arquivos WAV usando audacity e obteve as seguintes saídas. As amplitudes máximas diferem desta vez:

Com sons:

$ sox -t .wav /tmp/mic-sounds.wav -n stat
Samples read:            581632
Length (seconds):      6.594467
Scaled by:         2147483647.0
Maximum amplitude:     0.999969
Minimum amplitude:    -1.000000
Midline amplitude:    -0.000015
Mean    norm:          0.013987
Mean    amplitude:     0.000062
RMS     amplitude:     0.065573
Maximum delta:         1.999969
Minimum delta:         0.000000
Mean    delta:         0.011242
RMS     delta:         0.047009
Rough   frequency:         5031
Volume adjustment:        1.000

Sem sons:

$ sox -t .wav /tmp/mic-silence.wav -n stat
Samples read:            372736
Length (seconds):      4.226032
Scaled by:         2147483647.0
Maximum amplitude:     0.029022
Minimum amplitude:    -0.029114
Midline amplitude:    -0.000046
Mean    norm:          0.005082
Mean    amplitude:    -0.000053
RMS     amplitude:     0.006480
Maximum delta:         0.030487
Minimum delta:         0.000000
Mean    delta:         0.005815
RMS     delta:         0.007285
Rough   frequency:         7891
Volume adjustment:       34.348

Pode ser uma indicação de que existem alguns problemas com o microfone em outro computador?

    
por ka3ak 14.05.2017 / 10:26

0 respostas