← All work

Personal project

DubSub Studio

Voice AI and TTS platform for Vietnamese creators

Role
Full-stack developer
Links
Stack
  • Next.js
  • NestJS
  • PostgreSQL
  • Redis
  • BullMQ
  • Cloudflare R2
  • VoxCPM2 · Modal / RunPod
  • Google TTS

Overview

Clone a voice, save it as a preset, then call it by @name inside a script. DubSub turns writing dialogue into directing a cast, backed by a queue-driven pipeline across several TTS providers.

What I built

System design

Script studio in Next.js

A writing surface where saved voices are called by @name, so a creator can direct several characters in one script.

Credit reservation first

Credits are reserved before a job is queued and settled when it finishes, which keeps billing correct even when a render fails halfway.

BullMQ on Redis

NestJS pushes render jobs into BullMQ queues; workers pick them up, call the providers and report progress back.

GPU providers with fallback

VoxCPM2 runs on Modal or RunPod. When it is unavailable, jobs fall back to Google TTS instead of failing.

Idempotent storage on R2

Finished audio lands in Cloudflare R2. Processing is idempotent and errors are classified, so only retryable failures are retried.

Gallery