Professional audio transcription powered by open-source Whisper AI. Record live audio or upload files for accurate, local transcription with rich text editing and export capabilities.
- Live Audio Recording: Record directly from your microphone with real-time visualization
- File Upload: Support for MP3, WAV, and M4A files up to 100MB
- Local AI Processing: Uses Hugging Face Transformers with Whisper for client-side transcription
- Rich Text Editor: Professional editing interface with formatting tools
- Export Options: Save transcripts as PDF or DOCX files
- No API Costs: Everything runs locally in your browser
- Frontend: React + Vite + TypeScript + Tailwind CSS
- AI Model: Whisper (via @huggingface/transformers)
- Audio Recording: MediaRecorder API
- Rich Text: TipTap editor
- Export: jsPDF and html-docx-js
- UI Components: shadcn/ui
- Node.js 18+ and npm
- Modern browser with WebGPU support (Chrome 113+, Edge 113+)
- Clone the repository:
git clone <YOUR_GIT_URL>
cd townhall-transcriber- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser to
http://localhost:8080
-
Recording Audio:
- Click the "Record Audio" tab
- Grant microphone permissions when prompted
- Click "Start Recording" and speak clearly
- Click "Stop" when finished
-
Uploading Files:
- Click the "Upload File" tab
- Drag and drop an audio file or click "Choose File"
- Supported formats: MP3, WAV, M4A (up to 100MB)
-
Editing Transcripts:
- Use the rich text editor to format and edit your transcript
- Add formatting like bold, italic, lists, and quotes
- Word and character counts are displayed in the status bar
-
Exporting:
- Click "PDF" to download as PDF
- Click "DOCX" to download as Word document
- Recommended: Chrome 113+, Edge 113+ (with WebGPU support)
- Fallback: All modern browsers (CPU processing)
- Required Features: MediaRecorder API, File API, Web Workers
- First Run: Initial model download (~40MB) may take time
- WebGPU: Significantly faster transcription on supported browsers
- CPU Fallback: Automatic fallback for unsupported browsers
- Memory Usage: Large files may require more RAM
- ✅ Fully Local: All audio processing happens in your browser
- ✅ No Data Upload: Audio never leaves your device
- ✅ No API Keys: No external services or costs
- ✅ Open Source: Transparent and auditable code
npm run buildFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 8080
CMD ["npm", "run", "preview"]- Check microphone permissions in browser settings
- Ensure secure context (HTTPS or localhost)
- Try refreshing the page
- Large files may need more memory - try shorter audio
- Check console for detailed error messages
- Ensure stable internet for initial model download
- Disable popup blockers for file downloads
- Check browser download permissions
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Hugging Face Transformers.js for browser-based AI
- OpenAI Whisper for the speech recognition model
- TipTap for the rich text editor
- shadcn/ui for beautiful UI components
