gpt4 book ai didi

audio - 使用 sox 解释音频统计

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

我有一堆音频文件,需要根据静音和使用 SOX 拆分每个文件.但是,我意识到有些文件的背景非常嘈杂,而有些则没有,因此我无法使用一组参数来迭代所有进行拆分的文件。我试图弄清楚如何通过嘈杂的背景将它们分开。这是我从 sox input1.flac -n stat 得到的和 sox input2.flac -n stat

Samples read:          18207744
Length (seconds): 568.992000
Scaled by: 2147483647.0
Maximum amplitude: 0.999969
Minimum amplitude: -1.000000
Midline amplitude: -0.000015
Mean norm: 0.031888
Mean amplitude: -0.000361
RMS amplitude: 0.053763
Maximum delta: 0.858917
Minimum delta: 0.000000
Mean delta: 0.018609
RMS delta: 0.039249
Rough frequency: 1859
Volume adjustment: 1.000
Samples read:         198976896
Length (seconds): 6218.028000
Scaled by: 2147483647.0
Maximum amplitude: 0.999969
Minimum amplitude: -1.000000
Midline amplitude: -0.000015
Mean norm: 0.156168
Mean amplitude: -0.000010
RMS amplitude: 0.211787
Maximum delta: 1.999969
Minimum delta: 0.000000
Mean delta: 0.091605
RMS delta: 0.123462
Rough frequency: 1484
Volume adjustment: 1.000
前者不包含嘈杂的背景,后者包含。我怀疑我可以使用 Sample MeanMax delta因为差距大。
任何人都可以为我解释这些统计数据的含义,或者至少告诉我我可以在哪里获得它(我尝试在官方文档中查找,但他们没有解释)。非常感谢。

最佳答案

我不知道我是如何设法错过 SoX docs 中的 stat 的一直以来,它就在那里。

  • 长度
  • 音频文件的长度(以秒为单位)
  • 缩放
  • 输入的缩放比例。默认情况下 2^31-1,从 32 位有符号整数到 [-1, 1]
  • 最大振幅
  • 最大样本值
  • 最小振幅
  • 最小样本值
  • 中线振幅
  • 又名 mid-range , 最大值和最小值之间的中点。
  • 平均范数
  • 样本绝对值的算术平均值
  • 平均振幅
  • 样本值的算术平均值
  • RMS 幅度
  • root mean square , 平方值均值的根
  • 最大增量
  • 两个连续样本之间的最大差异
  • 最小增量
  • 两个连续样本之间的最小差异
  • 平均增量
  • 连续样本间差异的算术平均值
  • RMS 增量
  • 连续样本之间差异的均方根
  • 粗频率
  • 估计输入文件的频率,以赫兹为单位。不确定使用的方法
  • 音量调节
  • 应发送到 -v 的值,因此峰值绝对幅度为 1

  • 我个人更愿意使用 stats函数,我发现它的输出更实用。

    作为区分或多或少嘈杂音频的一种措施,我会尝试使用最高和最低声级之间的差异。最安静的部分永远不会比单独的背景噪音更安静,所以如果差别很小,音频要么很吵,要么一直很响,比如 compressed pop song .您可以计算最大和最小 RMS 值之间的差异,或者峰值和最小 RMS 之间的差异。 RMS 窗口长度应该保持相当短,例如在 10 到 200 毫秒之间,如果音频具有淡入或淡出部分,则应该将其修剪掉,尽管我没有在代码中包含这些部分。
    audio="input1.flac"
    width=0.01

    # Mixes down multi-channel files to mono
    stats=$(sox "$audio" -n channels 1 stats -w $width 2>&1 |\
    grep "Pk lev dB\|RMS Pk dB\|RMS Tr dB" |\
    sed 's/[^0-9.-]*//g')

    peak=$(head -n 1 <<< "$stats")
    rmsmax=$(head -n 2 <<< "$stats" | tail -n 1)
    rmsmin=$(tail -n 1 <<< "$stats")

    rmsdif=$(bc <<< "scale=3; $rmsmax - $rmsmin")
    pkmindif=$(bc <<< "scale=3; $peak - $rmsmin")

    echo "
    max RMS: $rmsmax
    min RMS: $rmsmin

    diff RMS: $rmsdif
    peak-min: $pkmindif
    "

    关于audio - 使用 sox 解释音频统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43415353/

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