cmd - 从 sox 获取 .wav 的平均振幅(仅)

标签 cmd wav sox

C:\Program Files\sox-14-4-0>sox Sample.wav -n stat

上面的代码给出了下面的结果

Samples read:             26640
Length (seconds):      3.330000
Scaled by:         2147483647.0
Maximum amplitude:     0.515625
Minimum amplitude:    -0.734375
Midline amplitude:    -0.109375
Mean    norm:          0.058691
Mean    amplitude:     0.000122
RMS     amplitude:     0.101146
Maximum delta:         0.550781
Minimum delta:         0.000000
Mean    delta:         0.021387
RMS     delta:         0.041831
Rough   frequency:          526
Volume adjustment:        1.362

现在我只需要平均振幅。如何做到这一点?

最佳答案

有几种方法。

方法一:

"C:\Program Files\sox-14-4-0\sox" Sample.wav -n stat | find "Mean    amplitude: " > %TMP%\amp.tmp
set /p meanAMP=<%TMP%\amp.tmp
set meanAMP=%meanAMP:*:     =%
del %TMP%\amp.tmp
echo %meanAMP%

方法2:

for /f "tokens=1-3" %%x in ('"%ProgramFiles%\sox-14-4-0\sox" Sample.wav -n stat') do (
  if "%%x %%y"=="Mean amplitude:" set meanAMP=%%z
)
echo %meanAMP%

最快:

方法3:

for /f "skip=7 tokens=1-3" %%x in ('"%ProgramFiles%\sox-14-4-0\sox" Sample.wav -n stat') do (
  if "%%x %%y"=="Mean amplitude:" set meanAMP=%%z
)
echo %meanAMP%

方法4:

for /f "tokens=1-3" %%x in ('"%ProgramFiles%\sox-14-4-0\sox" Sample.wav -n stat ^| find "Mean    amplitude:"') do (
  set meanAMP=%%z
)
echo %meanAMP%

我怀疑方法 3 是最快的,因为:

方法一使用了很多步骤,包括外部程序find,临时文件的创建、访问和删除,以及变量的重新定义。

方法 2 检查 SOX 的所有输出。

方法 4 使用外部程序 find ,这会减慢执行速度。

方法 3 实际上跳过了 SOX 的前 7 行输出,然后开始评估输出。

注意:方法 2-4 都可以在一行中完成,只需删除 () 即可。

编辑:修复了代码中的一些错误。

注意:从命令提示符使用方法 1 应该按原样工作。方法 2-4 需要将所有 %% 更改为 %

例如,您可以将其直接粘贴到 cmd 中:

for /f "skip=7 tokens=1-3" %%x in ('"%ProgramFiles%\sox-14-4-0\sox" Sample.wav -n stat') do (
  if "%x %y"=="Mean amplitude:" set meanAMP=%z
)
echo %meanAMP%

请注意,这几乎是方法 3 的精确副本,只是我更改了 %%x%%y%%z分别为 %x%y%z

关于cmd - 从 sox 获取 .wav 的平均振幅(仅),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383496/

相关文章:

python - 激活virtualenv时如何不显示路径

C++ 读取 WAV 文件的数据部分

file - 如何使用 sox 合并多个音频文件

linux - 用于提取第一秒并重命名文件夹中的 mp3 文件的 Bash 脚本

bash - 如果 #channels 为 2,则连接 wav 文件将忽略

regex - 正则表达式批处理

python - 从 cmd 启动 conda 提示符

Java 捕获带有颜色的过程输出

java - 如何无延迟播放WAV文件?

c# - 如何使用 C# 从 Properties.Resources 播放 WAV 文件