Make the Video Translator honest about voice cloning, lip-sync and non-English TTS
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- nextjs, playwright, typescript
- Domain
- audio-video-rtc, frontend, testing-qa
Research direction
Start with frontend/src/components/translate/VideoTranslator.tsx, frontend/src/engine/translation-pipeline.ts, and frontend/src/engine/f5tts-engine.ts, then follow CONTRIBUTING.md for setup. Run the relevant Playwright and unit tests to confirm the clone toggle, language selection, and TTS voice-selection behavior. Done means unsupported cloning is disabled with a reason, non-English text never reaches an English voice, Wav2Lip failures are surfaced, and an English-to-English run still produces an ffprobe-valid MP4.
Written by the indexing model from the issue text.
Description
Context
The translator UI promises things the engines cannot do today. The "Clone original speaker voice" toggle says it uses F5-TTS, but cloneAndSpeak always throws, because F5 is quarantined under L4 (LICENSES.md). Non-English targets are voiced with English Kokoro voices (af_sky, bf_emma), even though the Kokoro front-end only supports en-US/en-GB (voice-presets.ts:24), so Spanish or Hindi text gets English pronunciation. Wav2Lip is quarantined too, and its errors are swallowed by a bare catch {}. The language list also uses emoji flags, which breaks the no-emoji brand rule.
Where
frontend/src/components/translate/VideoTranslator.tsx:11-21(emoji flags, duplicate language list),:176,:186,:335-349frontend/src/engine/translation-pipeline.ts:15-26,:241,:255-260(voiceMap),:278-287(swallowed Wav2Lip error)frontend/src/engine/f5tts-engine.ts:116-124
What to do
- Disable the clone toggle with the real reason whenever
f5tts.isModelDownloaded()is false. - For targets Kokoro cannot voice, either block TTS with an explicit message or produce a translated-caption-only output. Never pass non-English text to an English voice.
- Reuse
TRANSLATION_LANGUAGESin the component, use text or Lucide icons instead of emoji, and log or surface the Wav2Lip failure reason.
Acceptance criteria
- An English → English run still produces an ffprobe-valid MP4 (attach it)
- A Playwright spec asserts that the clone toggle is disabled and shows the reason
- A non-English target never calls
ttsManager.synthesizewith an English voice (unit test)
Getting started
Read CONTRIBUTING.md for dev setup and the quality bar (no facades, evidence before done). Comment here to claim the issue.
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 3
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 5
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from BeyondITL/contentine-create
-
good first issue level: 1 ui
Difficulty 2/5 1-3 hours Newbie friendliness 94/100
BeyondITL/contentine-create#58 ·
Maintainers usually reply within 1 day
-
Fix Enter on the marketplace Buy button opening details instead of buyingPossibly taken @developedbyBob claimed this 4 days ago. Openaccessibility claimed good first issue level: 1
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
BeyondITL/contentine-create#57 · 3 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
Enable JSX in vitest so React component tests can runPossibly taken @29miaoet claimed this 5 days ago. Openclaimed good first issue level: 1 testing
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
BeyondITL/contentine-create#56 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
good first issue level: 1 testing
Difficulty 2/5 1-3 hours Newbie friendliness 94/100
BeyondITL/contentine-create#55 ·
Maintainers usually reply within 1 day
-
good first issue level: 1 testing
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
BeyondITL/contentine-create#54 ·
Maintainers usually reply within 1 day
All issues in BeyondITL/contentine-create
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
appandflow/stim#5258 ·
Maintainers usually reply within 1 day
-
area/docs framework/hugo help wanted language/markdown
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 68/100
lingdojo/kana-dojo#33660 · 1 comment · 5 reactions ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
drizzle-team/drizzle-orm#6639 ·
Maintainers usually reply within 4 days
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 76/100