Spaces:
Running
Running
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
Via Video URL:
- Enter a public video URL (Loom, YouTube, direct MP4, etc.)
- Click "Analyze Video"
- View the accent classification, confidence scores, and analysis
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:
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
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
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
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
- If running outside Docker, update yt-dlp to the latest version:
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:
- Make sure your audio file is under 200MB
- Try converting your audio to a WAV or MP3 format
- For longer files, consider extracting just the speech segment
- 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:
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
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