因此,我一直在尝试创建一个SoundClouds“峰值”波形的小克隆。我注意到它们的波形更加简化
与我的“响度”突然变化相比。峰值之间的动态范围似乎从未太陡峭,它们始终很好地代表了音轨各部分的感知响度。

这是一个例子:

php - 波形不如应有的平滑-LMLPHP

请注意,所有“滴”如何与波形中的“击穿”区分开来,但是我的位置无处不在(除了最后的滴和击穿外,它们是相似的)。 有一些轻微的相似之处,但是即使在那些区域中,“锯齿状”仍然非常突出。

我将wav2json用作峰转换器(通过命令行运行并以C++进行编程)。这是我如何使用它的一个示例:

/*
*    --channels: mids and min
*    --db-min (minimum level in dB to capture): -35dB
*    --db-max (pretty self explanatory): 6dB
*    -d: use logarithmic instead of linear scale
*    -s (number of peaks to generate): 1800
*    -o (output file): outputfile.json
*    -p (precision of floats): 0
*    -n: no header
*/
exec("wav2json inputfile.wav -s 1800 --channels mid min -d --db-min -35 --db-max 6 -p 0 -o outputfile.json -n");

$fp     = fopen($tmpOutput, "r");
$json   = fread($fp, filesize($tmpOutput));
// get mids and min from the generated peaks file
$mid    = json_decode($json, true)["mid"];
$min    = json_decode($json, true)["min"];
fclose($fp);
unlink($tmpOutput);

/*
*  from here I just combine each mid and min value together and divide by two
*
*  then I normalise all the peaks (instead of each value being between -0.293 to
*  1.766(just as an example), it is between 0 and 100)
*/

我试图弄清楚(过去几个月来一直在努力)的是如何使每个峰更合理化,以及如何使每个峰的动态范围看起来如何。

我尝试过的是:
  • ffmpeg eqing
  • 实际上使清算中的高点和低点变得清澈,然后比较波形
  • 使用wav2json的各种参数(db最小和最大,线性等)
  • 轨道上使用各种压缩器和多频带压缩器

    感谢所有帮助,
    干杯。

    最佳答案

    只是在这里猜测,但是dB刻度与实际水平相比已经是对数的,因此添加-d参数可能会使您的情况更糟。

    您可能还只尝试了几分钟或几分钟,而不是两者都尝试! max有可能是正确的事情吗?

    另一件事是您抽取的样本数量,我确定它们在该图中没有1800,您可以尝试对它们进行计数并得出相同的数量。

    您还将“剪切”输出到最大db为35,请尝试不沿正向剪切它,而可能沿负向增加剪切。

    您还可以通过对上一个,当前和下一个值进行平均来“平滑”曲线。

    尝试结合以上内容,别忘了告诉我们是否有适合您的方法。

    关于php - 波形不如应有的平滑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54987250/

    10-12 03:49