Skip to content

Latest commit

ย 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽค Browser-Based Voice Changer Demo

A privacy-first, browser-only voice recording and transformation web application that allows students to record short voice samples and apply fun audio effects while learning basic STEM concepts about sound, frequency, and digital signal processing.

Perfect for: Middle school and high school STEM demonstrations, science fairs, and educational workshops.

๐ŸŒ Live Demo: yourspraveen.github.io/browser-voice-changer ๐Ÿ‘ค Author: yourspraveen.com

License: MIT TypeScript React

โœจ Features

๐Ÿ”’ Privacy-First

  • 100% browser-based - No server uploads, no cloud processing
  • Your audio stays on your device - Nothing is sent to any server
  • No login required - Start using immediately
  • Open source - Transparent and auditable

๐ŸŽ“ Educational

  • Learn DSP basics - Understand frequency, pitch, and sound waves
  • Interactive visualizations - See waveforms in real-time
  • STEM concepts - Age-appropriate explanations for each effect
  • "Did you know?" facts - Fascinating audio science trivia

๐ŸŽจ Voice Effects

  • Chipmunk - High-pitched, squeaky voice
  • Deep Voice - Low, booming voice like a movie trailer
  • Robot - Mechanical, synthetic sound
  • Telephone - Old-fashioned phone call effect
  • Echo - Canyon/hall reverb effect
  • Alien - Otherworldly, modulated voice

๐Ÿ“ฑ Accessible & Easy

  • Mobile-first design - Works on phones, tablets, and computers
  • Large buttons - Easy for all ages to use
  • Keyboard navigation - Fully accessible
  • QR code friendly - Share via QR code for classroom use
  • Works offline - PWA with offline support
  • EN / ES - English and Spanish UI

๐Ÿš€ Quick Start

Prerequisites

  • Node.js 18+ and npm 9+
  • Modern browser (Chrome 79+, Safari 14.1+, Firefox 76+, Edge 79+)

Installation

# Clone the repository
git clone https://github.com/yourspraveen/browser-voice-changer.git
cd browser-voice-changer

# Install dependencies
npm install

# Start development server
npm run dev

Open http://localhost:3000 in your browser.

Building for Production

# Build optimized production bundle
npm run build

# Preview production build
npm run preview

๐Ÿ—๏ธ Project Structure

browser-voice-changer/
โ”œโ”€โ”€ public/               # Static assets
โ”‚   โ”œโ”€โ”€ icons/           # PWA icons
โ”‚   โ”œโ”€โ”€ samples/         # Pre-recorded demo audio (AI-generated voices)
โ”‚   โ””โ”€โ”€ manifest.json    # PWA manifest
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ audio/           # Audio processing core
โ”‚   โ”‚   โ”œโ”€โ”€ effects/     # Effect implementations
โ”‚   โ”‚   โ”œโ”€โ”€ AudioCapture.ts
โ”‚   โ”‚   โ”œโ”€โ”€ AudioProcessor.ts
โ”‚   โ”‚   โ””โ”€โ”€ AudioExporter.ts
โ”‚   โ”œโ”€โ”€ visualization/   # Waveform and visualizations
โ”‚   โ”œโ”€โ”€ ui/
โ”‚   โ”‚   โ”œโ”€โ”€ components/  # React components
โ”‚   โ”‚   โ””โ”€โ”€ styles/      # CSS stylesheets
โ”‚   โ”œโ”€โ”€ state/           # State management
โ”‚   โ”œโ”€โ”€ hooks/           # React hooks
โ”‚   โ”œโ”€โ”€ i18n/            # EN/ES translations
โ”‚   โ”œโ”€โ”€ utils/           # Utility functions
โ”‚   โ”œโ”€โ”€ types/           # TypeScript types
โ”‚   โ”œโ”€โ”€ App.tsx          # Root component
โ”‚   โ””โ”€โ”€ main.tsx         # Entry point
โ”œโ”€โ”€ tests/               # Unit tests (Vitest)
โ”œโ”€โ”€ docs/                # Documentation
โ”‚   โ”œโ”€โ”€ ARCHITECTURE.md
โ”‚   โ”œโ”€โ”€ TECH_STACK.md
โ”‚   โ”œโ”€โ”€ DSP_SPECIFICATIONS.md
โ”‚   โ”œโ”€โ”€ DESIGN_SYSTEM.md
โ”‚   โ””โ”€โ”€ PROJECT_STATUS.md
โ””โ”€โ”€ package.json

๐Ÿงช Testing

# Run unit tests
npm test

# Run tests in watch mode
npm run test:watch

# Generate coverage report
npm run test:coverage

๐ŸŽจ Code Quality

# Lint code
npm run lint

# Fix linting issues
npm run lint:fix

# Format code
npm run format

# Type check
npm run type-check

๐Ÿ“š Documentation

Comprehensive documentation is available in the docs/ directory:

๐ŸŽ“ Educational Use

For Teachers

This application is designed for classroom demonstrations:

  1. No Setup Required - Students can access via web browser
  2. QR Code Access - Generate a QR code to the live demo
  3. Privacy Compliant - No data collection, FERPA friendly
  4. Offline Capable - Works without internet after first load
  5. Cross-Platform - Works on Chromebooks, iPads, laptops, and phones

Lesson Plan Ideas

  • Physics: Sound waves, frequency, amplitude
  • Math: Hertz (Hz), waveforms, ratios
  • Computer Science: Digital signal processing, algorithms
  • Engineering: Audio engineering, recording technology

Demo Mode

Three AI-generated voice samples are included so students can experiment without a microphone:

  • Samantha (US English) โ€” "This is a demo voice. Try changing it with robot, echo, or telephone effects!"
  • Daniel (British English) โ€” "Hello there! I am a voice sample. Can you make me sound like a chipmunk?"
  • Moira (Irish English) โ€” "Testing, one two three! The voice changer turns any voice into something amazing."

๐ŸŒ Browser Support

Browser Minimum Version Status
Chrome (desktop) 79+ โœ… Fully Supported
Edge 79+ โœ… Fully Supported
Safari (macOS) 14.1+ โœ… Fully Supported
Firefox 76+ โœ… Fully Supported
Safari (iOS) 14.3+ โœ… Supported
Chrome (iOS) 79+ โœ… Supported (uses WebKit)

Note: All iOS browsers use WebKit under the hood and require iOS 14.3+ for MediaRecorder support. Recording uses audio/mp4 on iOS automatically.

๐Ÿ”ง Technology Stack

  • Framework: React 18 + TypeScript 5
  • Build Tool: Vite 5
  • Audio: Web Audio API + Tone.js v14
  • Styling: CSS Modules + CSS Variables
  • Testing: Vitest + jsdom
  • PWA: vite-plugin-pwa + Workbox
  • Deployment: GitHub Pages via GitHub Actions

See TECH_STACK.md for detailed technology decisions.

๐Ÿค Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (npm test)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Built with Tone.js for pitch-shifting effects
  • Demo voices generated with macOS TTS (Samantha, Daniel, Moira)
  • Inspired by educational STEM projects worldwide

๐Ÿ“ž Support

๐Ÿ—บ๏ธ Roadmap

Phase 1: MVP โœ…

  • Basic recording functionality
  • 6 core effects (Chipmunk, Deep Voice, Robot, Telephone, Echo, Alien)
  • Waveform visualization
  • Educational content with STEM explanations

Phase 2: Polish โœ…

  • PWA support with offline caching
  • AI-generated demo voice samples
  • EN / ES language switcher
  • iOS Safari compatibility
  • GitHub Pages deployment

Phase 3: Enhancements (Future ๐Ÿ”ฎ)

  • Advanced visualizations (FFT, Spectrogram)
  • More languages
  • Teacher dashboard
  • Printable worksheets

๐Ÿ“Š Performance

  • Bundle Size: ~156KB gzipped (well under 500KB target)
  • Initial Load: <3 seconds on 3G
  • Lighthouse Score: >90 target
  • Memory Usage: <100MB during recording
  • Processing Latency: <200ms for effects

๐ŸŽฏ Project Status

โœ… Live at: yourspraveen.github.io/browser-voice-changer


Made with โค๏ธ for STEM education by yourspraveen.com

Report Bug ยท Request Feature

About

No description, website, or topics provided.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages