将音频文件拆分成重叠的块
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 / s
和 r = 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
这似乎更像是一道数学题。
一个音频文件的长度为 L
秒。我们想把它分成长度相等的块 c
秒。每个下一个块应该与前一个块重叠 ø
秒。
我们可以将这个文件分成多少块(N
)?剩下的最后一个chunk有多长r
(如果整个文件不能这样分割无余)?
示例 1:
L
=12s,c
=4s,ø
=1s。
结果:长度c
的块数为N
= 3,剩余最后一个块长度r
= 3s
Simple image to illustrate this example
在没有重叠的情况下,找到块的数量和余数就像 N = L / s
和 r = 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