gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:32:40 26 4
gpt4 key购买 nike

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%

方法二:
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%

最快:

方法三:
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%

方法四:
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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com