Skip to content

中文 video_clip 阶段的 ASR/句段生成过碎,导致下游难以构造 对话 样本 #10

@Breton2913169045

Description

@Breton2913169045

问题描述

我在使用中文数据流水线时发现,video_clip 产出的 clip 粒度过细。
当前现象是:只要 ASR 把一段连续说话拆成多个 sentence,Stage 2 就会直接按这些 sentencestart/end 切成多个 clip。这样会导致:

  • 单句被过度切碎
  • 连续对白无法保留在同一个片段中
  • 双人/多人对话难以形成完整样本
  • 下游 speaker_diarization、CoT 校正、build_datasets.py 得到的样本上下文不足

我的理解

根据代码阅读,我理解当前流程大致是:

  1. Stage 1 生成 sentence_info
  2. total.srtsentences 都直接来自这份 sentence_info
  3. Stage 2 按 sentences 逐条切片
  4. 下游按单个 clip / RTTM 构造样本,不会再把多个小 clip 合并回一个对话窗口
    也就是说,当前基本是:
    一个 sentence = 一个 clip
    因此只要上游句段偏细,最终对话数据就会被切碎。

相关代码

video_clip/videoclipper.py

for sentence in sentences:
    start_time = sentence['start'] / 1000.0
    end_time = sentence['end'] / 1000.0
    speaker_id = sentence.get('spk', 'unknown')
    ts.append([start_time, end_time, speaker_id])

观察到的结果

我检查了如下文件:

datasets/clean/zh/my_movie/03/total.srt
datasets/clean/zh/my_movie/03/sentences
datasets/clean/zh/my_movie/03/clipped/*
datasets/clean/train.jsonl
目前看到的问题是:

total.srt 已经比较碎
连续对白被拆成多个很短 clip
最终样本大多变成 独白 / 旁白
很难形成稳定的 type="对话" 样本

我想请教

当前中文路径下,一个 sentence = 一个 clip 是否是有意设计?
如果目标是构建影视对话数据,是否更推荐在 Stage 2 前增加“句段合并 / 对话窗口构建”?
对这个问题,更推荐的修复方式是:
调整 ASR/VAD/标点参数
修改 FunASR timestamp_tools
还是在仓库里增加 merged segment 逻辑?

期望改进方向

相比直接按 sentence 切片,我更希望增加一层可配置的 segment builder,例如支持:

同 speaker 的短间隔句子自动合并
短时间内的多 speaker 来回对白合并成一个 dialogue clip
约束最短/最长片段时长
约束最少句子数、最少 speaker 数
这样会更适合影视对话数据构建。

复现命令

bash video_clip/run.sh \
  --stage 1 \
  --stop_stage 2 \
  --input /home/jcan/project/FunCineForge/datasets/raw_zh \
  --output /home/jcan/project/FunCineForge/datasets/clean/zh \
  --lang zh \
  --device gpu

后续:

bash speaker_diarization/run.sh \
  --stage 1 \
  --stop_stage 4 \
  --hf_access_token <HF_TOKEN> \
  --root /home/jcan/project/FunCineForge/datasets/clean/zh \
  --gpus "3 4"

感谢解答。
video: https://github.com/user-attachments/assets/5544901b-3310-46f0-82b1-dd30ea533050
total.srt: total.srt.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions