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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions