给定一个几分钟的 Wave 文件,以半规则的间隔发出短暂的点击声,我将如何获取每次点击的毫秒时间戳?我试图验证单秒定时器的准确性。最好仅使用 shell、Python、Ruby 或其他标准 *nix 工具。
答案1
可能sox
是一个选择。
像这样调用:
sox sound.wav sound.dat
它将 a 写入textual representation of the sample data
文件sound.dat
。根据选项,您可以获得一个带有以下内容的文件自开始以来的时间在里面第一栏和一个归一化样本量在第二栏,例如:
; 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
一点点awk
可以揭示带有时间戳的一瞥:
$ awk '$2 > 0.6 { print }' < sound.dat
; Sample Rate 44100
; Channels 1
1.1002721 0.64196777
1.1004762 0.65371704
man sox
并man soxformat
应该提供更多信息。