Browse Source

调整细节

Signed-off-by: allan716 <[email protected]>
allan716 4 years ago
parent
commit
9d2f8d669a
2 changed files with 10 additions and 8 deletions
  1. 9 7
      internal/pkg/sub_helper/sub_helper.go
  2. 1 1
      internal/pkg/sub_timeline_fixer/fixer.go

+ 9 - 7
internal/pkg/sub_helper/sub_helper.go

@@ -369,19 +369,19 @@ func MergeMultiDialogue4EngSubtitle(inSubParser *subparser.FileInfo) {
 	inSubParser.DialoguesEx = merger.Get()
 }
 
+// GetVADINfoFromSub 跟下面的 GetVADINfoFromSubNeedOffsetTime 函数功能一致
+func GetVADINfoFromSub(infoSrc *subparser.FileInfo, FrontAndEndPer float64, SubUnitMaxCount int) ([]SubUnit, error) {
+	return GetVADINfoFromSubNeedOffsetTime(infoSrc, FrontAndEndPer, SubUnitMaxCount, 0)
+}
+
 /*
-	GetVADINfoFromSub
+	GetVADINfoFromSubNeedOffsetTime 只不过这里可以加一个每一句话固定的偏移时间
 	这里的字幕要求是完整的一个字幕
 	1. 抽取字幕的时间片段的时候,暂定,前 15% 和后 15% 要避开,前奏、主题曲、结尾曲
 	2. 将整个字幕,抽取连续 5 句对话为一个单元,提取时间片段信息
 	3. 可能还有一个需求,默认的模式是每五句话一个单元,还有一种模式是每一句话向后找到连续的四句话组成一个单元,允许重叠
 		目前看到的情况是前者的抽样率太低,需要使用后者的逻辑
 */
-func GetVADINfoFromSub(infoSrc *subparser.FileInfo, FrontAndEndPer float64, SubUnitMaxCount int) ([]SubUnit, error) {
-	return GetVADINfoFromSubNeedOffsetTime(infoSrc, FrontAndEndPer, SubUnitMaxCount, 0)
-}
-
-// GetVADINfoFromSubNeedOffsetTime 跟上面的函数功能一致,只不过这里可以加一个每一句话固定的偏移时间
 func GetVADINfoFromSubNeedOffsetTime(infoSrc *subparser.FileInfo, FrontAndEndPer float64, SubUnitMaxCount int, offsetTime float64) ([]SubUnit, error) {
 	if SubUnitMaxCount < 0 {
 		SubUnitMaxCount = 0
@@ -430,7 +430,9 @@ func GetVADINfoFromSubNeedOffsetTime(infoSrc *subparser.FileInfo, FrontAndEndPer
 		} else {
 			srcSubUnitList = append(srcSubUnitList, *srcOneSubUnit)
 			srcOneSubUnit = NewSubUnit()
-			i = i - SubUnitMaxCount + SubUnitMaxCount/5
+			// TODO 这里决定了插入数据的密度,有待测试
+			//i = i - SubUnitMaxCount + SubUnitMaxCount/5
+			i = i - SubUnitMaxCount + SubUnitMaxCount/2
 		}
 	}
 	if srcOneSubUnit.GetDialogueCount() > 0 {

+ 1 - 1
internal/pkg/sub_timeline_fixer/fixer.go

@@ -536,7 +536,7 @@ func (s *SubTimelineFixer) GetOffsetTimeV2(infoBase, infoSrc *subparser.FileInfo
 	println(fmt.Sprintf("Old Mean: %v SD: %v Per: %v", oldMean, oldSd, per))
 	println(fmt.Sprintf("New Mean: %v SD: %v Per: %v", newMean, newSd, per))
 
-	return false, -1, -1, nil
+	return true, newMean, newSd, nil
 }
 
 // GetOffsetTimeV3 使用 VAD 检测语音是否有人声,输出连续的点标记,再通过 SimHash 进行匹配,找到最佳的偏移时间