accent-detector / README.md
amirjamali's picture
Add Dockerfile and Streamlit configuration; implement video download with alternative YouTube sources, enhance error handling, and improve file upload processing
aca25cc unverified
metadata
title: English Accent Detector
emoji: 🎀
colorFrom: blue
colorTo: green
sdk: docker
app_port: 8501
tags:
  - streamlit
  - audio
  - accent-detection
  - hiring
pinned: false
short_description: Detect and analyze English accents from videos
license: mit

🎀 English Accent Detection Tool

This app analyzes a speaker's English accent from video URLs or audio uploads, providing detailed insights for hiring evaluation purposes.

Features

  • Video URL Processing: Accept and analyze videos from Loom, YouTube, or direct MP4 links
  • Audio Upload Support: Directly upload audio files for analysis
  • English Accent Classification: Identify specific English accents (American, British, Australian, etc.)
  • Confidence Scoring: Get detailed confidence scores for English proficiency
  • Detailed Analysis: Receive expert-like explanations about accent characteristics
  • Visual Feedback: View audio waveforms and listen to the processed audio

Usage

  1. Via Video URL:

    • Enter a public video URL (Loom, YouTube, direct MP4, etc.)
    • Click "Analyze Video"
    • View the accent classification, confidence scores, and analysis
  2. Via Audio Upload:

    • Upload an audio file (WAV, MP3, M4A, OGG)
    • Click "Analyze Audio"
    • View the results

Troubleshooting YouTube Authentication Issues

If you encounter errors like Sign in to confirm you're not a bot when using YouTube videos:

  1. Use a different video source (RECOMMENDED):

    • Try using Loom, Vimeo, or direct MP4 links instead of YouTube
    • These sources are more reliable and have fewer authentication requirements
  2. Use alternative YouTube frontends:

    • The app now automatically tries alternative YouTube frontends (Invidious, Piped)
    • Make sure the "Try alternative YouTube source" checkbox is checked
    • These frontend services can bypass some YouTube restrictions
  3. Using cookies for YouTube authentication:

    • The app supports uploading a cookies.txt file for YouTube authentication
    • You can export cookies from your browser using browser extensions like "Get cookies.txt"
    • Or use yt-dlp's built-in browser cookie extraction:
      # Install yt-dlp if you don't have it
      pip install yt-dlp
      
      # Extract cookies from your browser (replace chrome with your browser)
      yt-dlp --cookies-from-browser chrome -o cookies.txt https://youtube.com
      
    • Upload the generated cookies file in the app interface
  4. Update yt-dlp for better YouTube support:

    • If running outside Docker, update yt-dlp to the latest version:
      pip install -U yt-dlp
      
    • YouTube frequently updates its anti-bot measures, and newer yt-dlp versions often have fixes

Technology Stack

  • Audio Processing: FFmpeg, Librosa
  • ML Models: SpeechBrain, Transformers
  • UI: Streamlit
  • Deployment: Docker

Requirements

  • Python 3.9+
  • FFmpeg
  • See requirements.txt for Python dependencies

Deployment

The app is containerized with Docker for easy deployment. Use the included Dockerfile to build and run:

# Build the Docker image
docker build -t accent-detector .

# Run the container with volume mounting for better file handling
docker run -p 8501:8501 --volume /tmp/accent-detector:/app/uploads accent-detector 

# For Windows users:
docker run -p 8501:8501 --volume C:\temp\accent-detector:/app/uploads accent-detector

Troubleshooting Upload Issues

If you encounter 403 Forbidden errors when uploading files:

  1. Make sure your audio file is under 200MB
  2. Try converting your audio to a WAV or MP3 format
  3. For longer files, consider extracting just the speech segment
  4. If uploading an MP4 video, ensure it's not encrypted or DRM-protected

Troubleshooting Hugging Face Cache Issues

If you encounter errors related to Hugging Face model loading or cache permissions:

  1. Ensure proper volume mounts and permissions:

    # Create local directories with proper permissions
    mkdir -p /tmp/accent-detector /tmp/huggingface-cache
    chmod 777 /tmp/accent-detector /tmp/huggingface-cache
    
    # Run with multiple volume mounts for both uploads and cache
    docker run -p 8501:8501 \
      --volume /tmp/accent-detector:/app/uploads \
      --volume /tmp/huggingface-cache:/app/.cache/huggingface \
      accent-detector
    

    On Windows:

    # Create directories
    mkdir -Force C:\temp\accent-detector
    mkdir -Force C:\temp\huggingface-cache
    
    # Run with volume mounts
    docker run -p 8501:8501 `
      --volume C:\temp\accent-detector:/app/uploads `
      --volume C:\temp\huggingface-cache:/app/.cache/huggingface `
      accent-detector
    
  2. Reset the container and cache:

    # Stop any running containers
    docker stop $(docker ps -q --filter ancestor=accent-detector)
    
    # Remove the container
    docker rm $(docker ps -a -q --filter ancestor=accent-detector)
    
    # Optionally clear the cache directories
    rm -rf /tmp/accent-detector/* /tmp/huggingface-cache/*
    
    # Rebuild and run
    docker build --no-cache -t accent-detector .
    docker run -p 8501:8501 --volume /tmp/accent-detector:/app/uploads --volume /tmp/huggingface-cache:/app/.cache/huggingface accent-detector
    

Powered By