【问题标题】:how to find best set of splitting points如何找到最佳的分裂点集
【发布时间】:2018-04-29 22:24:53
【问题描述】:

我有一个很长的声音文件,其中包含不同长度的停顿。如何找到将声音文件分成多个片段的暂停集,以便每个片段的长度为 30-120 秒,并且使用的最短暂停是最大的?

【问题讨论】:

  • the shortest used pause is maximal解释更多!
  • 结果是一组暂停,每个暂停都有一个持续时间。因此,在结果集中,一个或多个具有最小长度。我希望这个最小长度尽可能长。简而言之:我想拆分文件以避免短暂的停顿。
  • 也许您可以创建一个小型数据集和解决方案,以便我们更好地理解问题。例如。分手的停顿是怎么回事?

标签: algorithm constraints mathematical-optimization


【解决方案1】:

假设你能找到停顿:

  • 列出所有暂停的(开始时间、持续时间),按开始时间排序
  • 对于每个暂停,计算将声音拆分到该点的最佳结果(最大最短暂停长度)。对于每个暂停,您可以通过考虑您已经为 30 到 120 秒之前发生的暂停计算的结果轻松计算出这一点。
  • 最后,通过考虑在结束前 30 到 120 秒之间发生的停顿进行类似的计算,以获得最终解决方案。

【讨论】:

  • 再想一想,我认为你的方法行不通。在深入检查文件时,您可能必须重新选择暂停直到开始。 s18.postimg.cc/tohmni70p/image.jpg
  • 它工作正常。如果最终选择一个停顿作为切点,那么如果在它之前选择的停顿是最佳的,那么肯定没有什么坏处,因此无需重新审视前面的选择。不过,您的方式也很有效,而且更容易理解。我更喜欢你的方式,除非你需要以流的方式这样做。
  • 我不明白有没有害处。如果我为文件的一部分选择最佳剪切点,它可能会强制执行更糟糕的全局解决方案。想象一个记录,在位置 118 处暂停长度为 0.4,在位置 120 处暂停长度为 0.5。这每 120 秒重复一次,在 238 处为 0.4,在 240 处为 0.5,连续 10 次。然后在位置 1228 有一个长度为 0.5 的暂停,之后只有 0.2 的暂停。我必须重新回到第一个切点以避免 0.2 次停顿。
  • 对于每个暂停,您可以为文件中结束和暂停的部分选择最佳剪辑集,可能只需将其链接到该集中的最后一个暂停.直到您到达最后并选择最后一个暂停时,才会选择整个文件的暂停集。在您的示例中,所有重复的 0.4 和 0.5 暂停都指向前面的 0.5 暂停,除了第一个指向什么都没有的暂停。在文件的末尾,您选择最后一个 0.5 暂停,它指向前面的 0.4 暂停,它指向所有其他 0.5 秒
【解决方案2】:

我找到了另一个解决方案:按长度对暂停进行排序,从最短到最长进行迭代。如果所有间隔都已达到所需的长度,请中断。如果手头的暂停可以删除,并且所有条件仍然满足,则将其删除。

【讨论】:

  • 这种方法也有缺陷。如果有许多相同大小的停顿,则不清楚如何在其中选择正确的停顿。
猜你喜欢
  • 2017-08-17
  • 2012-06-11
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
相关资源
最近更新 更多