Workshop Overview

What Problem Does LiveCap Solve?

In multilingual meetings, participants often struggle to follow conversations happening in a language they are not fluent in. Traditional solutions either require a human interpreter (expensive and slow) or depend on meeting-platform plugins that store audio recordings on third-party servers.

LiveCap is a browser-based, real-time bilingual caption application that:

  • Captures microphone audio inside the browser – no plugin or app install needed.
  • Streams compressed PCM audio over a secure WebSocket directly to a backend.
  • Produces Vietnamese ↔ English bilingual captions in near real time using Amazon Transcribe and Amazon Translate.
  • Stores only finalized TXT transcripts in a private S3 bucket; raw audio is never recorded.

Who Is This For?

AudienceUse Case
Meeting participantsFollow bilingual conversations without a human interpreter
Teams with AWS accountsDeploy a working AI-powered SaaS prototype end-to-end
Cloud practitionersLearn ECS Fargate, WebSocket streaming, and AWS AI services together

Use-Case Category

LiveCap falls into two overlapping categories:

  • AI/ML Application – uses Amazon Transcribe Streaming and Amazon Translate as the core intelligence layer.
  • Web Application – delivers a React frontend through CloudFront + S3 and a FastAPI backend through ECS Fargate behind an ALB.

AWS Services Used

ServiceRole in LiveCap
Amazon CloudFrontPublic HTTPS/WSS entry point; routes static assets and API/WebSocket traffic
Amazon S3Private frontend hosting (OAC) and private TXT transcript storage
Application Load BalancerHealth checks and HTTP/WebSocket forwarding to the Fargate container
Amazon ECS FargateServerless container runtime for the FastAPI backend
Amazon ECRImmutable container image registry (Git SHA tags)
Amazon Transcribe StreamingConverts 16 kHz PCM audio chunks to partial/final text
Amazon TranslateTranslates finalized segments between Vietnamese and English
AWS WAFBlocks managed threats and rate abuse at both CloudFront and ALB
AWS LambdaWake-on-demand: scales ECS from 0 → 1 before the first session
Amazon CloudWatchReceives structured application logs and AWS service metrics
AWS IAMLeast-privilege roles for the ECS task, Lambda, and ECR execution

Verified As-Deployed Architecture

The diagram below shows LiveCap’s current deployed architecture: a custom VPC with private Fargate subnets, NAT Gateway, scale-to-zero, WAF, dashboard, and budget. After the blue/green cutover, the rollback stack was retired; only the target ALB serves API and WebSocket traffic.

LiveCap as-deployed architecture diagram

The LiveCap landing page (served from CloudFront via private S3 with OAC):

LiveCap landing page showing hero section with bilingual caption preview card

Main Runtime Flow

  1. CloudFront serves the React/Vite frontend from a private S3 bucket using Origin Access Control (OAC) — the bucket has no public access.
  2. User clicks Start; the frontend calls /api/wake through CloudFront, which routes to a Lambda function that scales ECS from 0 → 1 if needed.
  3. The frontend polls /api/health, requests microphone permission, then opens /ws/transcribe over WSS through CloudFront → ALB → Fargate.
  4. FastAPI checks global/per-IP session limits before starting AWS streams.
  5. 16 kHz PCM chunks are forwarded to Amazon Transcribe Streaming (two parallel streams: Vietnamese and English).
  6. Only finalized segments are sent to Amazon Translate and appended as bilingual caption rows; partial results are shown transiently and discarded.
  7. Captions travel back: Fargate → ALB → CloudFront → browser.
  8. Export: the frontend posts finalized rows to /api/sessions/{id}/export, which writes a TXT object to the private transcript bucket and returns a time-limited presigned URL.