Showcase tool: the synthetic writer does not hold a cue for its headline's reading time, so the render refuses it

Đang mở Phù hợp với người mới
#1,447 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
90/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
testing, tooling

Hướng nghiên cứu

Bắt đầu với write_voiced trong tests/acceptance/showcase/render/synthetic.py, đặc biệt là phần tính thời lượng cue quanh các dòng 348-349. So sánh hành vi của nó với storyboard.min_cue_ms(cue) và với thời lượng cue tối thiểu của bản capture thực. Cập nhật thời lượng cue tổng hợp và thêm một bài kiểm thử acceptance sử dụng một board có tiêu đề yêu cầu thời gian giữ lâu hơn; bản capture tổng hợp sau đó phải vượt qua capture gate.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

The showcase tool's synthetic writer (tests/acceptance/showcase/render/synthetic.py, write_voiced) is meant to produce a narrated capture "that passes every gate" (its docstring, line 326). For some storyboards it produces one that the render refuses.

What happens

write_voiced sizes each caption cue as the sum of its sentences' slots (line 348), plus an extra on every third cue (line 349). It never holds a cue for its headline's minimum reading time.

The real capture does hold a cue for storyboard.min_cue_ms(cue): the headline's reading time plus a margin. So when a cue's headline needs longer to read than its sentences take to say, the render's capture gate refuses the synthetic capture.

Measured on video 9's board, 09-design-in-depth:

cue 1: 54 characters and 10 words in 2.067 s, needs 3.834 s

The cue is "Choose New Experiment." under a 54-character headline. Video 1's board has no such cue, which is why it renders.

Expected

write_voiced holds every cue for at least min_cue_ms, as the capture does. For example, after line 349:

length = max(length, contract.frames_for_ms(storyboard.min_cue_ms(headline)))

Evidence

  • With that one line applied, video 1's synthetic capture is byte-identical to its capture without it.
  • On video 9's board, only cue 1 grows, by 56 frames, and every later cue shifts by the same amount.
  • Integrated loudness moves by 0.01 LU, because the added silence falls below the loudness gate.

A test should load a board with such a cue and assert that the synthetic capture passes the capture gate.

Ngôn ngữ chính
Python
Star
0
Fork
4
Merge trung bình
6 giờ 5 phút
Pull request đã merge (30 ngày)
453

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Controlvar/controlvar

Tất cả issue của Controlvar/controlvar

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.