Skip to content

fix(skills): default to non-.en whisper models to prevent silent translation - #186

Closed
vanceingalls wants to merge 1 commit into
vance/validate-commandfrom
fix/whisper-multilingual-default
Closed

vanceingalls wants to merge 1 commit into
vance/validate-commandfrom
fix/whisper-multilingual-default

Conversation

@vanceingalls

@vanceingalls vanceingalls commented Apr 1, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • .en whisper models (small.en, medium.en) translate non-English audio into English instead of transcribing it, silently destroying the original language
  • Added non-negotiable language rule to captions skill: never use .en unless user explicitly says audio is English
  • Updated default model tables in SKILL.md, transcript-guide.md, and CLAUDE.md from .en variants to multilingual models
  • The transcribe CLI already has language auto-detection — this fix ensures agents don't bypass it by specifying .en models directly

Test plan

  • Run hyperframes transcribe on non-English audio without specifying a model — should transcribe in original language, not translate
  • Verify captions skill instructions clearly state the language rule at the top

🤖 Generated with Claude Code

vanceingalls commented Apr 1, 2026 •

Copy link
Copy Markdown
Collaborator Author

@vanceingalls vanceingalls mentioned this pull request Apr 1, 2026
8 tasks
…slation

.en models (small.en, medium.en) translate non-English audio into English
instead of transcribing it. This silently destroys the original language.

- Add non-negotiable language rule to captions skill
- Update model tables to default to models without .en suffix

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vanceingalls
vanceingalls force-pushed the fix/whisper-multilingual-default branch from 47ee56a to b025994 Compare April 2, 2026 05:30
@vanceingalls
vanceingalls force-pushed the vance/validate-command branch from a321571 to 2917f6a Compare April 2, 2026 05:30
@vanceingalls
vanceingalls marked this pull request as ready for review April 2, 2026 05:31
@vanceingalls

Copy link
Copy Markdown
Collaborator Author

Folded into #175 (vance/whisper-improvements)

vanceingalls added a commit that referenced this pull request Apr 2, 2026
…multilingual defaults (#175)

## Summary

**Whisper improvements:**
- Auto-detect language and switch from `.en` to multilingual model when needed
- Detect speech onset in WAV to strip hallucinated words before speech begins
- Merge whisper-cpp token fragments: contractions (`didn` + `'t` → `didn't`), split capitals (`C` + `aught` → `Caught`), dropped-g (`shin` + `in'` → `shinin'`)
- Interpolate zero-duration word clusters for reliable karaoke timing

**Captions skill updates (folded from #176):**
- Rewrite script-to-style mapping as an energy detection table (high → low) with mandatory animation requirements: karaoke baseline, 2+ highlight techniques, kinetic exits
- Replace `tl.call()` per-frame audio-reactive pattern with group-level GSAP tweens — read peak bass/treble for each group's time range and modulate entrance intensity at build time
- Add transcript quality check with automatic retry rules (>20% music tokens = retry with larger model)
- Add caption word structure lint rule (`.caption-group` + `<span>`) for studio editor compatibility

**Multilingual defaults (folded from #186):**
- Default whisper model changed from `small.en` to `small` to prevent silent translation of non-English audio
- Added non-negotiable language rule to captions skill

## Test plan

- [ ] `pnpm test` passes (contraction merging, fragment merging, zero-duration interpolation, speech onset)
- [ ] Transcribe non-English audio — verify it transcribes in original language, not translates
- [ ] Skill files render correctly, cross-references resolve
- [ ] `dynamic-techniques.md` audio-reactive section uses `tl.to()`/`tl.set()` only, no `tl.call()` loops

🤖 Generated with [Claude Code](https://claude.com/claude-code)
dahans-msft2 pushed a commit to dahans-msft2/hyperframes that referenced this pull request Aug 6, 2026
…multilingual defaults (heygen-com#175)

## Summary

**Whisper improvements:**
- Auto-detect language and switch from `.en` to multilingual model when needed
- Detect speech onset in WAV to strip hallucinated words before speech begins
- Merge whisper-cpp token fragments: contractions (`didn` + `'t` → `didn't`), split capitals (`C` + `aught` → `Caught`), dropped-g (`shin` + `in'` → `shinin'`)
- Interpolate zero-duration word clusters for reliable karaoke timing

**Captions skill updates (folded from heygen-com#176):**
- Rewrite script-to-style mapping as an energy detection table (high → low) with mandatory animation requirements: karaoke baseline, 2+ highlight techniques, kinetic exits
- Replace `tl.call()` per-frame audio-reactive pattern with group-level GSAP tweens — read peak bass/treble for each group's time range and modulate entrance intensity at build time
- Add transcript quality check with automatic retry rules (>20% music tokens = retry with larger model)
- Add caption word structure lint rule (`.caption-group` + `<span>`) for studio editor compatibility

**Multilingual defaults (folded from heygen-com#186):**
- Default whisper model changed from `small.en` to `small` to prevent silent translation of non-English audio
- Added non-negotiable language rule to captions skill

## Test plan

- [ ] `pnpm test` passes (contraction merging, fragment merging, zero-duration interpolation, speech onset)
- [ ] Transcribe non-English audio — verify it transcribes in original language, not translates
- [ ] Skill files render correctly, cross-references resolve
- [ ] `dynamic-techniques.md` audio-reactive section uses `tl.to()`/`tl.set()` only, no `tl.call()` loops

🤖 Generated with [Claude Code](https://claude.com/claude-code)
SanHsien added a commit to SanHsien/hyperframes that referenced this pull request Oct 25, 2026
happy-dom ^20.9.0 升到 ^21.0.4(修 GHSA-834v-8h66-3h79),bun.lock 解析為 21.0.4。
測試端配合 21 的行為差異,沒有動產品程式:iframe 頁面載入改在 player、sdk、studio 的
vitest 設定開啟;inlineTextStyleRange、Menu、ShortcutsPanel、motion-signature、
manualOffsetDrag、NLEPreview.slowBoot 的測試調整環境設定或等待方式。
移除 dependabot 對 happy-dom 的 semver-major ignore;DECISIONS 記錄理由失效與
CodeQL 警示 heygen-com#186 至 heygen-com#193 以 false positive 駁回。

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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