Barrel Timer is a tactical tool for League of Legends designed to track enemy Summoner Spells through voice commands. This allows players to register cooldowns in real-time without interrupting gameplay or manual typing.
Important
Barrel Timer is a convenience tool, not automation. It provides information a player could otherwise obtain with a manual stopwatch.
- Zero Integration: It does not read from or write to the game's memory.
- No Overlay: The application runs as a background tool and can be set on a secondary monitor; it does not inject any visual elements into the game client.
- Privacy & Performance: Voice recognition is processed 100% offline. No data is sent to external servers.
- Voice Recognition: Integrated offline speech engine for hands-free cooldown logging.
- Dynamic Cooldown Calculation: Automated tracking for Flash, Teleport, Ignite, and other spells.
- Ionian Boots Integration: Manual toggle for Summoner Spell Haste per role.
- Audio Alerts: Vocal notifications when tracked enemy spells are available.
- Responsive Interface: Adaptive UI designed for secondary monitors and different resolutions.
- Game Time Sync: Match the internal clock with the League of Legends match timer using the +/- controls.
- Voice Registration: State the role followed by the spell (e.g., "Mid Flash", "Support Ignite").
- Teleport Logic: Toggle "Unleashed TP" after the 10-minute mark to update cooldown values.
- Haste Adjustment: Select the Ionian Boots icon for specific roles to apply reduction.
Ensure you have a microphone properly configured in your operating system before launching.
- Clone the repository:
git clone https://github.com/R3ner/Barrel-Timer.git- Navigate to the directory:
cd Barrel-Timer- Install required dependencies (You need Python 3.13 installed please avoid 3.14 and experimental versions because some libs are not yet updated for it):
pip install -r requirements.txt-
(
⚠️ DO NOT SKIP THIS STEP⚠️ ) Download the Voice Recognition Model: The application requires an offline Vosk model to process voice commands:- Download the Small American English model from Vosk Models.
- We gonna use:
vosk-model-small-en-us-0.15(Lightweight for low CPU usage). - Extract the downloaded folder into the project root and rename it to
models. - It should look like this
/Barrel-Timer/models/vosk-model-small-en-us-0.15/
-
Execute the application:
python main.pyClick to expand: Don't want to use the console every time? Create a Shortcut!
You can launch Barrel Timer like a standard Windows application by creating a custom desktop shortcut:
- Create the Shortcut:
- Right-click on your Desktop -> New -> Shortcut.
- The "Target" Field:
- Paste the path to your
pythonw.exefollowed by the path to yourmain.pyfile. - Example:
C:\Python3\pythonw.exe "C:\Users\Your_User\Documents\Barrel-Timer\main.py"alsopythonw.exe "C:\Users\Your_User\Documents\Barrel-Timer\main.py"can work perfectly too. - (Note: Using pythonw ensures the app runs in the background without a console window!)
- Paste the path to your
- Custom Icon:
- Right-click the shortcut -> Properties -> Change Icon.
- Select the
barrel-timer.icofile from the/Barrel-Timer/assets/images/folder.
Now you can just double-click your icon and start timing spells instantly! :D
Click to expand: How it works?
The application operates as a standalone Python process, independent of the League of Legends client. Here is the technical workflow:
- Audio Capture: The system initializes a localized audio stream using the
SoundDevicelibrary, capturing input from the default system microphone. - Offline Inference: Captured audio is processed by a Vosk Lightweight Model. This happens entirely on your local CPU; no voice data is transmitted to external APIs or cloud services.
- Keyword Detection: A custom parser monitors the transcribed text for specific "Role + Spell" patterns (e.g., "Mid Flash").
- State Management: Upon detection, the internal engine calculates the specific cooldown based on active modifiers (Ionian Boots, Unleashed TP status) and starts a non-blocking asynchronous timer.
- UI & Audio Feedback: The PySide6 interface updates the countdown visually, and a localized audio cue is triggered once the timer reaching zero via
Pygame.mixer.
Test a ported web version Here
This project uses high-quality assets and sounds from the community:
- Sound Effects:
- Sound Effect 1 by Universfield via Pixabay.
- Sound Effect 2 by freesound_community via Pixabay.
- Sound Effect 3 by Paul (PWLPL) via Pixabay.
- Sound Effect 4 by LIECIO via Pixabay.
- Sound Effect 5 by Universfield via Pixabay.

