Skip to content

hayderkharrufa/audio-transcription-tool

Repository files navigation

Audio Transcription Tool

Browser-based audio transcription tool with secure S3 storage and role-based access control.

Prerequisites

  • Node.js (v18+)
  • AWS Account with S3 access
  • Supabase account
  • Vercel account (for deployment)

Setup Guide

1. Clone and Install

git clone https://github.com/hayderkharrufa/audio-labeling-tool.git
cd audio-labeling-tool
npm install
npm install -g supabase

2. AWS S3 Setup

  1. Create S3 bucket (private - block all public access)
  2. Create IAM user: supabase-audio-access
  3. Create policy for S3 read access:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        }
    ]
}
  1. Create access keys for the IAM user

3. Supabase Setup

supabase login
supabase link --project-ref YOUR_PROJECT_REF
supabase db push

Create admin user in Supabase SQL Editor:

INSERT INTO profiles (id, name, role)
VALUES ('your-user-id', 'Admin', 'ADMIN');

4. Environment Variables

Create .env.local:

VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_REGION=us-east-1
AWS_BUCKET_NAME=your-bucket-name

Deploy Edge Function:

supabase secrets set --env-file ./.env.local
supabase functions deploy get-audio-url

5. Development

npm run dev

6. Production Deployment

Deploy to Vercel:

vercel

Set environment variables in Vercel dashboard:

  • VITE_SUPABASE_URL
  • VITE_SUPABASE_ANON_KEY

Usage

  1. Admin: Create projects → Create datasets → Add S3 audio file URLs
  2. Users: Claim transcription/QA tasks → Create segments → Transcribe → Submit
  3. Audio files are accessed securely via pre-signed URLs (1-hour expiry)