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:
| Audience | Use Case |
|---|---|
| Meeting participants | Follow bilingual conversations without a human interpreter |
| Teams with AWS accounts | Deploy a working AI-powered SaaS prototype end-to-end |
| Cloud practitioners | Learn ECS Fargate, WebSocket streaming, and AWS AI services together |
LiveCap falls into two overlapping categories:
| Service | Role in LiveCap |
|---|---|
| Amazon CloudFront | Public HTTPS/WSS entry point; routes static assets and API/WebSocket traffic |
| Amazon S3 | Private frontend hosting (OAC) and private TXT transcript storage |
| Application Load Balancer | Health checks and HTTP/WebSocket forwarding to the Fargate container |
| Amazon ECS Fargate | Serverless container runtime for the FastAPI backend |
| Amazon ECR | Immutable container image registry (Git SHA tags) |
| Amazon Transcribe Streaming | Converts 16 kHz PCM audio chunks to partial/final text |
| Amazon Translate | Translates finalized segments between Vietnamese and English |
| AWS WAF | Blocks managed threats and rate abuse at both CloudFront and ALB |
| AWS Lambda | Wake-on-demand: scales ECS from 0 → 1 before the first session |
| Amazon CloudWatch | Receives structured application logs and AWS service metrics |
| AWS IAM | Least-privilege roles for the ECS task, Lambda, and ECR execution |
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.

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

/api/wake through CloudFront, which
routes to a Lambda function that scales ECS from 0 → 1 if needed./api/health, requests microphone permission, then opens
/ws/transcribe over WSS through CloudFront → ALB → Fargate./api/sessions/{id}/export,
which writes a TXT object to the private transcript bucket and returns a
time-limited presigned URL.