High-performance text-to-speech application with global edge deployment. Converts CSV study materials into natural-sounding audio using advanced AI voices.
Frontend: SvelteKit, TypeScript, Tailwind CSS, Vite
Backend: Bun runtime, Hono framework, Drizzle ORM
Edge: Cloudflare Workers, D1 database, R2 storage
AI: OpenAI TTS API, Microsoft Edge TTS
Audio: FFmpeg processing, MP3 encoding
- < 50ms response times globally via 320+ edge locations
- 3x faster backend processing with Bun runtime vs Node.js
- 12KB framework footprint (Hono vs Express 200KB)
- Zero cold starts with V8 isolate deployment
- Automatic scaling from 0 to millions of requests
- Dual TTS engines with voice quality optimization
- Real-time processing with background job queues
- Temporary file management with automatic cleanup
- CSV validation and structured data parsing
- Global edge deployment with serverless architecture
- Type-safe end-to-end with TypeScript
// Ultra-lightweight edge API with Hono
const app = new Hono<{ Bindings: Env }>()
app.use('*', cors(), logger(), prettyJSON())
// Background audio processing with Bun performance
await generateAudioFromCSV(csvPath, voiceType, voiceId, outputPath)
// Edge-optimized database queries
const files = await db.select().from(files).where(eq(files.status, 'ready'))Voice Processing Pipeline:
- CSV parsing with Front/Back column validation
- Concurrent TTS generation (questions at 1.0x, answers at 0.9x speed)
- Audio concatenation with silence intervals (1.5s Q→A, 2.0s between cards)
- Streaming MP3 delivery with automatic cleanup
Edge Deployment:
- D1 SQLite database with global replication
- R2 object storage for temporary file handling
- Durable Objects for stateful processing (future enhancement)
- Custom domain support with SSL termination
# Edge deployment (Cloudflare Workers + D1 + R2)
./deploy-edge.sh
# Local development
bun run dev # Backend (port 8000)
npm run dev # Frontend (port 3000)- TTS Generation: ~2-3s per question/answer pair
- File Processing: Concurrent with progress tracking
- Memory Usage: <128MB per request (edge limits)
- Database Queries: Sub-millisecond with edge caching
- Global Latency: P99 < 100ms, P50 < 30ms
Bun over Node.js: 3x faster startup, native TypeScript, built-in bundling
Hono over Express: 12KB vs 200KB, edge-optimized, better TypeScript support
D1 over PostgreSQL: Global replication, serverless scaling, SQLite performance
SvelteKit over React: Smaller bundle size, better performance, less complexity
Live Demo: ai-voiceover.vercel.app
API Docs: workers.dev/health
Tech Blog: Implementation deep-dive (coming soon)