将音频文件拆分为重叠的块

时间:2019-02-28 03:55:07

标签: math audio split overlap chunks

这似乎更多是数学问题。

音频文件的长度为L秒。我们希望将其拆分为长度为c秒的相等块。每个下一个块应该与上一个块有ø秒的重叠。

我们可以将这个文件分成多少块(N)?剩下的最后一块r还有多长时间(如果整个文件没有剩余部分就无法分割)?


示例1:

L = 12s,c = 4s,ø = 1s。

结果:长度c的块数为N = 3,剩余的最后一块长度r = 3s

Simple image to illustrate this example


在不重叠的情况下,找到块的数量和其余部分与N = L / sr = L % s一样容易。但是对于重叠的问题,我不太想出公式或一段代码。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

N个块给出长度:

Len = N * (C - F) + F

因此,要获得未切割块的数量,我们应该除以

K = (L - F) / (C - F)     

最后一个块的长度(如果非零)为

if ((L - F) % (C - F) > 0)    
        LastLen = L - K * (C - F)        

示例:

 L = 12  C = 4  F = 1
 K = (12 - 1) / (4 - 1) = 3
 (12 - 1) % (4 - 1) > 0, so
     LastLen = 12 - 3 * 3 = 3

 L = 8  C = 5  F = 2
 K = (8 - 2) / (5 - 2) = 2
 (8 - 2) % (5 - 2)  =  0, so
     LastLen = 0