Como detectar picos no arquivo de áudio?

2

Dado um ficheiro Wave de vários minutos com pequenos cliques a intervalos semi-regulares, como é que consegui obter carimbos de data e hora em milissegundos para cada um dos cliques? Estou tentando verifica a precisão de um único temporizador . De preferência usando apenas o shell, Python, Ruby ou outras ferramentas padrão * nix.

    
por l0b0 05.05.2015 / 15:08

1 resposta

4

Possivelmente sox seria uma opção.

Chamada assim:

sox sound.wav sound.dat

grava textual representation of the sample data no arquivo sound.dat . Dependendo das opções, você pode obter um arquivo com o tempo desde o início na primeira coluna e um volume de amostra normalizado em segundo coluna , por exemplo:

; Sample Rate 44100
; Channels 1
               0     -0.026428223 
   2.2675737e-05     -0.022186279 
   4.5351474e-05     -0.022186279 
   6.8027211e-05     -0.022827148 
   9.0702948e-05     -0.022491455 
   0.00011337868     -0.025756836 
   0.00013605442     -0.021850586 
   0.00015873016     -0.026428223 
    0.0001814059      -0.02545166 
   0.00020408163     -0.023162842 
   0.00022675737      -0.02545166 
   0.00024943311     -0.018249512 
   0.00027210884     -0.018249512 
   0.00029478458     -0.019226074 
   0.00031746032      -0.01663208 
   0.00034013605     -0.013702393 
   0.00036281179     -0.014984131 
   0.00038548753     -0.015319824 

Um pouco de awk poderia revelar as visualizações com um timestamp:

$ awk '$2 > 0.6 { print }' < sound.dat
; Sample Rate 44100
; Channels 1
       1.1002721       0.64196777 
       1.1004762       0.65371704 

man sox e man soxformat devem fornecer mais informações.

    
por 05.05.2015 / 16:02

Tags