Skip to content

axtheon/MoodCutter-Community

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MoodCutter Community 🎬

They clip what you said. We clip what you felt.

Free. Open source. No subscription. No hosted backend. Bring your own compute.

MoodCutter Community is a three-signal multimodal emotion detection pipeline for video. It automatically detects and clips emotionally resonant moments - funny, sad, high-energy - using speech sentiment, laughter detection, and voice intensity analysis.

Run it on your own machine, on Kaggle (free GPU), or on Google Colab (free GPU). You bring the compute. We bring the intelligence.


Why MoodCutter Exists

Every AI video clipper on the market - OpusClip, TuBoost, and others - detects moments based on transcripts. They find your most quotable line. They do not find your funniest moment.

The funniest moment in a stream is not always the most quotable sentence. It is the laugh in the audio, the energy spike in your voice, and the emotional peak in your speech - all happening in the same second. Transcripts miss all of that.

MoodCutter reads what you felt. Not just what you said.


What MoodCutter Community Does

Paste a video link or upload a file. Get timestamped clips ranked by emotional intensity. No account. No subscription. No credit limit.

The Three-Signal Pipeline

Signal What It Detects Technology
Speech Sentiment Emotional polarity in spoken words - joy, sadness, anger, excitement WhisperX + RoBERTa
Laughter Detection Genuine laughter in the audio stream with confidence score CNN on MFCC audio features
Voice Intensity Energy spikes, pitch variation, excitement peaks librosa DSP

These three signals are combined into a single Emotional Moment Score per video segment. The top five scoring segments are returned as your clips.


What MoodCutter Community Does NOT Include

MoodCutter Community is the free open-source version. The following features are part of MoodCutter Pro (closed source, coming soon):

  • Facial emotion recognition
  • Crowd reaction detection
  • The full six-signal fusion layer
  • Virality Score with plain-language reasoning
  • Hosted web interface - no setup required

MoodCutter Pro is for content creators who want the complete system without running anything locally.


Quick Start — Three Ways to Run


Option A — Run on Kaggle (Recommended - Free GPU)

Kaggle gives you 30 free GPU hours per week. No credit card. No setup.

  1. Go to kaggle.com and create a free account
  2. Go to Settings → Phone Verification - required to enable GPU
  3. Open a new Notebook → Settings → Accelerator → GPU T4 x2
  4. In the first cell run:
!git clone https://github.com/axtheon/MoodCutter-Community.git
%cd MoodCutter-Community
!pip install -r requirements.txt -q
  1. In the next cell run:
from pipeline.main import process_video
results = process_video("YOUR_YOUTUBE_URL_OR_FILE_PATH")
  1. Your top five emotional clips are saved to /kaggle/working/clips/

See Kaggle Guide for a detailed Overview.


Option B — Run on Google Colab (Free GPU)

  1. Go to colab.research.google.com
  2. Runtime → Change runtime type → T4 GPU → Save
  3. Run:
!git clone https://github.com/axtheon/MoodCutter-Community.git
%cd MoodCutter-Community
!pip install -r requirements.txt -q
!apt-get install -y ffmpeg -q
  1. Then:
from pipeline.main import process_video
results = process_video("YOUR_YOUTUBE_URL_OR_FILE_PATH")

Note: Colab free tier disconnects after ~90 minutes of inactivity. Save your results before the session ends. For longer videos use Kaggle.

See Colab Guide for a detailed Overview.


Option C — Run Locally

Requires Python 3.10+ and FFmpeg installed.

# Clone the repo
git clone https://github.com/axtheon/MoodCutter-Community.git
cd MoodCutter-Community

# Install dependencies
pip install -r requirements.txt

# Install FFmpeg
# Windows:  winget install ffmpeg
# Ubuntu:   sudo apt install ffmpeg
# Mac:      brew install ffmpeg

# Run on a video
python pipeline/main.py --input YOUR_VIDEO_PATH_OR_URL

Note: Running locally without a GPU is slow on long videos. Recommended only for videos under 10 minutes or for development purposes. Use Kaggle or Colab for longer content.


Output Format

MoodCutter Community returns the top five clips ranked by Emotional Moment Score.

MoodCutter Community - Results
================================

Clip 1 — Score: 87/100
  Timestamp:  00:12:34 → 00:12:51
  Duration:   17 seconds
  Signals:    Laughter detected (94%), Voice intensity spike (3.1x baseline),
              Speech sentiment: Joy (0.88)
  Saved to:   clips/clip_1.mp4

Clip 2 — Score: 79/100
  Timestamp:  00:34:02 → 00:34:19
  Duration:   17 seconds
  Signals:    Voice intensity spike (2.7x baseline),
              Speech sentiment: Excitement (0.81)
  Saved to:   clips/clip_2.mp4

...

Repository Structure

MoodCutter-Community/
├── pipeline/
│   ├── main.py                 # Entry point — run this
│   ├── audio_extractor.py      # FFmpeg audio extraction
│   ├── transcriber.py          # WhisperX transcription pipeline
│   ├── signals/
│   │   ├── speech_sentiment.py # RoBERTa sentiment scoring
│   │   ├── laughter.py         # CNN laughter classifier
│   │   └── voice_intensity.py  # librosa intensity scoring
│   └── fusion.py               # Combines signals into clip score
├── models/
│   └── README.md               # Links to pre-trained model weights
├── examples/
│   ├── sample_video.mp4        # Test video for quick start
│   └── expected_output.txt     # Expected results for sample video
├── docs/
│   ├── HOW_IT_WORKS.md         # Technical explanation of each signal
│   ├── KAGGLE_GUIDE.md         # Detailed Kaggle setup walkthrough
│   └── COLAB_GUIDE.md          # Detailed Colab setup walkthrough
├── tests/
│   ├── test_transcriber.py
│   ├── test_speech_sentiment.py
│   ├── test_laughter.py
│   ├── test_voice_intensity.py
│   └── test_fusion.py
├── .gitignore
├── requirements.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
└── README.md

Tech Stack

Layer Technology
Video/Audio Processing FFmpeg, MoviePy
Transcription WhisperX
Speech Sentiment HuggingFace Transformers, RoBERTa
Laughter Detection PyTorch, torchaudio, librosa
Voice Intensity librosa
Video Import yt-dlp (YouTube, TikTok, Twitch, Instagram)

Models Used

All models are free and open source.

Model Purpose Source
WhisperX (base) Speech transcription with word-level timestamps github.com/m-bain/whisperx
cardiffnlp/twitter-roberta-base-emotion Speech sentiment classification huggingface.co
Custom CNN on AudioSet Laughter detection Trained weights in /models/

Model weights are included in the repository or downloaded automatically on first run.


Hardware Requirements

Environment Minimum Recommended
Local CPU 4GB RAM, any CPU 8GB RAM
Google Colab Free T4 GPU Colab Pro T4/A100
Kaggle Free T4 x2 GPU Same

Processing time for a 1-hour video: approximately 8-12 minutes on Kaggle free GPU.


Supported Input Formats

File upload: MP4, MOV, AVI, MKV, WebM

URL import (via yt-dlp):

  • YouTube
  • Twitch VODs
  • TikTok
  • Instagram Reels
  • Facebook Video
  • Vimeo
  • Direct MP4 links

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.

Areas where contributions are most valuable:

  • Improving laughter detection accuracy on gaming and streaming content
  • Adding support for additional input platforms
  • Performance optimizations for CPU inference
  • Documentation improvements and translations
  • Frontend UI/UX - if you know React and want to build an interface on top of this pipeline, open an issue and let us know

MoodCutter Pro

MoodCutter Community is the free open-source foundation.

MoodCutter Pro adds:

  • Facial emotion recognition across all faces in the frame
  • Crowd reaction detection for live content
  • Full six-signal fusion model
  • Virality Score - 0 to 100 - with plain-language explanation
  • Hosted web app - paste a link, get clips, no setup required
  • Low-cost credit-based pricing - credits never expire

MoodCutter Pro is coming soon. Follow @axtheon for updates.


Why the Full Product Is Not Open Source?

The three-signal pipeline in MoodCutter-Community is open source because it demonstrates the approach and gives the developer community something real to build on.

The advanced features - facial emotion recognition, crowd reaction detection, and the fusion layer - represent the core technical moat of the product. Making them open source would allow well-funded competitors to absorb years of research and development instantly.

MoodCutter-Community is genuinely useful and genuinely free. MoodCutter-Pro is for creators who want the full system without running anything locally.


License

Apache 2.0 - see LICENSE for details.

You are free to use, modify, and distribute this code for any purpose including commercial use. See license for full terms.


About

Built by Abdullah Khan (@axtheon) - a 14-year-old CS student from Lahore, Pakistan.

They clip what you said. We clip what you felt.

About

Open-source Python tool that automatically detects and extracts emotionally resonant moments from videos using audio and video analysis. This is the Community version of MoodCutter. It also have a Pro version for creators who don't want to configure anything manually.

Topics

Resources

License

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors