Skip to content

feat(seedance): production QA section — audio-vs-script drift (post-gen verification)#21

Merged
RoboZephyr merged 1 commit into
mainfrom
feat/seedance-production-qa-note
May 29, 2026
Merged

feat(seedance): production QA section — audio-vs-script drift (post-gen verification)#21
RoboZephyr merged 1 commit into
mainfrom
feat/seedance-production-qa-note

Conversation

@RoboZephyr

Copy link
Copy Markdown
Owner

Summary

Backfills real dogfood from local seedance module: when `generate_audio: true` (Seedance 2.0 default) and content has dialogue, the model produces real spoken audio but the actual words spoken may diverge from the dialogue in the prompt. For subtitled publish workflows this is a silent production trap.

What lands

New section between "Trusted-result chaining" and "Polling vs callback":

  • 6-step production pattern: generate → ffmpeg extract audio → TOS upload → Seed-ASR transcribe → diff vs target → tag mismatches for editorial
  • 5-row status taxonomy mirrored from `library/volcengine-speech`: `asr_ok_text_match` / `asr_ok_text_mismatch` / `video_incomplete` / `asr_unreliable` / `asr_no_speech` — consistent label convention across trove content pipeline
  • 3 production rules: don't silently overwrite target subtitles with ASR; subtitles are a post-production layer; `status: "succeeded"` ≠ content QA
  • Cross-references `volcengine-tos` (audio hosting) + `volcengine-speech` (transcription)

Privacy

Local original had this in a "Production Note (2026-05-22)" section with private references (downstream project name / episode ID / file name / internal field+tool names). All stripped; OSS framing uses public placeholders and engineering shape only.

Verification

  • `bun bin/cli.ts validate library/seedance` — 0 errors / 0 warnings
  • Privacy scan against PRIVATE_RE clean on staged diff
  • Content is engineering-shape, no project-specific names

🤖 Generated with Claude Code

…on (post-gen verification)

Backfills a real dogfood insight from local module use into the OSS
library. When `generate_audio: true` is enabled (the default on Seedance
2.0) and your content has dialogue, Seedance produces real spoken audio
but the actual words spoken may diverge from the dialogue you wrote in
the prompt. The model is creative, not literal — prompt dialogue in
double quotes is a strong hint but for longer / narrative content the
model can omit lines, rephrase, substitute homophones, or fill silences
with ambient sound.

This matters for subtitled-content publish workflows; doesn't matter for
vibe / no-dialogue clips.

Body adds (between "Trusted-result chaining" and "Polling vs callback")
- 6-step production pattern: generate → ffmpeg extract → TOS upload →
  Seed-ASR transcribe → diff vs target → tag mismatches for editorial
- 5-row status taxonomy mirrored from `library/volcengine-speech`:
  asr_ok_text_match / asr_ok_text_mismatch / video_incomplete /
  asr_unreliable / asr_no_speech (consistent label convention across
  the trove content pipeline)
- 3 production rules: don't silently overwrite target subtitles with
  ASR; subtitles are a post-production layer; `status: "succeeded"`
  is not content QA — audio-vs-script is a separate gate
- Cross-references to the volcengine-tos (audio hosting) and
  volcengine-speech (transcription) modules — closes the production
  loop with explicit links

Privacy
- Maintainer's local module had this insight in a "Production Note
  (2026-05-22)" section with private references (downstream project
  name, episode ID, file name, internal field/tool names). All
  stripped — the OSS version frames the same engineering insight in
  general terms with public placeholders
- Pre-commit hook PRIVATE_RE scan: clean on staged diff

Validation
- bun bin/cli.ts validate library/seedance: 0 errors / 0 warnings

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@RoboZephyr RoboZephyr merged commit 554c576 into main May 29, 2026
1 check passed
@RoboZephyr RoboZephyr deleted the feat/seedance-production-qa-note branch May 29, 2026 07:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant