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.
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.
Paste a video link or upload a file. Get timestamped clips ranked by emotional intensity. No account. No subscription. No credit limit.
| 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.
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.
Kaggle gives you 30 free GPU hours per week. No credit card. No setup.
- Go to kaggle.com and create a free account
- Go to Settings → Phone Verification - required to enable GPU
- Open a new Notebook → Settings → Accelerator → GPU T4 x2
- In the first cell run:
!git clone https://github.com/axtheon/MoodCutter-Community.git
%cd MoodCutter-Community
!pip install -r requirements.txt -q- In the next cell run:
from pipeline.main import process_video
results = process_video("YOUR_YOUTUBE_URL_OR_FILE_PATH")- Your top five emotional clips are saved to
/kaggle/working/clips/
See Kaggle Guide for a detailed Overview.
- Go to colab.research.google.com
- Runtime → Change runtime type → T4 GPU → Save
- 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- 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.
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_URLNote: 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.
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
...
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
| 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) |
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.
| 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.
File upload: MP4, MOV, AVI, MKV, WebM
URL import (via yt-dlp):
- YouTube
- Twitch VODs
- TikTok
- Instagram Reels
- Facebook Video
- Vimeo
- Direct MP4 links
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 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.
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.
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.
Built by Abdullah Khan (@axtheon) - a 14-year-old CS student from Lahore, Pakistan.
- Twitter/X: @axtheon_
- LinkedIn: Abdullah Khan
- Email: abdullah.dev4220@gmail.com
They clip what you said. We clip what you felt.