Skip to content

TermSub v2.1.0: UI Polish, 59 Languages & Editable Timecodes

Latest

Choose a tag to compare

@seaweedbeehive seaweedbeehive released this 22 Jun 11:03

What's New

🌍 Expanded Language Support β€” 59 Languages

TermSub now supports 59 source and target languages, covering the full OpenAI Audio API (Whisper / GPT-4o transcribe) supported language set.

  • Searchable language dropdown β€” type to find any language by English or native name (e.g., "EspaΓ±ol" or "Spanish")
  • Pinned common languages β€” the 10 most spoken languages plus Persian (Farsi) appear at the top for one-click access
  • Native-name display β€” each language shown as English β€” English, Arabic β€” Ψ§Ω„ΨΉΨ±Ψ¨ΩŠΨ©, Persian (Farsi) β€” فارسی
  • New centralized app/core/languages.py module replaces hardcoded dictionaries across the codebase

⏱️ Editable Timecodes in Subtitle Timeline

Subtitle segments can now have their timestamps edited directly in the web UI.

  • PUT /segments/{segment_id} accepts start_time and end_time fields
  • Chronological validation ensures start_time is strictly before end_time
  • Smart session handling prevents DB refresh from undoing edits on commit
  • Unified timestamp formatting utilities (format_timestamp, format_timestamp_vtt) across all export formats

🎡 Audio Chunking for Large Files

Audio files that exceed OpenAI Whisper's 25 MB upload limit are now automatically split and transcribed seamlessly.

  • app/core/audio.py β€” new 196-line stateless audio utility module
  • chunk_audio_if_needed() β€” intelligently splits audio at ~10-minute intervals (well under the 25 MB threshold)
  • Fast FFmpeg stream-copy splitting β€” no re-encoding, chunks are produced in seconds
  • Seamless timestamp merging β€” chunk results are shifted by cumulative offsets to produce a single continuous segment list relative to the original audio
  • Per-chunk progress logging β€” each chunk reports its progress via the existing WebSocket pipeline

UI Improvements

Feature Description
Searchable language dropdown Tom Select integration replaces native <select> with type-ahead search across all 59 languages
Dark mode for dropdowns Complete CSS overrides for Tom Select in dark theme β€” no more blinding light dropdowns
"How to Use" modal Built-in onboarding guide accessible from the UI β€” walkthrough of upload β†’ transcribe β†’ review β†’ export
Version indicator New GET /api/version endpoint + footer badge showing the running app version
Toast notifications Non-blocking toast messages for user feedback (success, error, info)
Enhanced timeline cards Editable timestamps with contenteditable, improved Add/Split/Remove buttons with hover states
Activity log refinements Cleaner message formatting, consistent progress reporting across all pipeline stages

Export Pipeline Improvements

  • Fixed DB session lifecycle in all export endpoints (SRT, VTT, TXT, JSON) β€” content is now generated while the session is still open, preventing lazy-loading errors
  • Sanitized export filenames β€” derived from the original video filename for consistency
  • Unified timestamp formatting β€” format_timestamp() and format_timestamp_vtt() used consistently across SRT and WebVTT exporters

Bug Fixes

  • MIT license copyright year corrected from 2025 β†’ 2026
  • Leading silence preserved β€” first subtitle timestamp now correctly respects leading silence in the audio
  • Import sorting fixed in test files for consistent style
  • OpenAI 429 retry logic β€” longer exponential backoff for rate-limited batches so they wait and retry instead of being dropped

Testing

  • New tests/test_audio_chunking.py β€” 186 lines of comprehensive tests covering:
    • Chunking decision logic (under/over size threshold)
    • Offset accumulation across multiple chunks
    • FFmpeg integration test (skipped if FFmpeg not installed)
    • Full chunked transcription orchestration with cleanup verification

Migration Notes

No database migrations required for this release. The changes are fully backward-compatible with existing v2.0.0 installations.

Docker Deployment

docker compose pull
docker compose up --build

Local Development

git pull origin main
source venv/bin/activate
pip install -r requirements.txt
# Restart Celery worker and FastAPI server

TermSub is a production-ready FastAPI application for AI-powered video transcription, translation, and terminology management β€” with particular strength for Persian (Farsi) and RTL languages.