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

Spliting audio file into overlaping chunks

这似乎更像是一道数学题。

一个音频文件的长度为 L 秒。我们想把它分成长度相等的块 c 秒。每个下一个块应该与前一个块重叠 ø 秒。

我们可以将这个文件分成多少块(N)?剩下的最后一个chunk有多长r(如果整个文件不能这样分割无余)?


示例 1:

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

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

Simple image to illustrate this example


在没有重叠的情况下,找到块的数量和余数就像 N = L / sr = L % s 一样容易。但是我不能完全想出一个公式或一段代码来解决这个重叠问题。任何帮助,将不胜感激。谢谢。

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