CIGA Annotator is a subtitle-centric video annotation tool with an Aegisub-like layout and keyboard-first coding workflow, designed for annotating character interactions (Speaker, Listener, Target).
This tool is part of the CIGA (Character Interaction Graph Analysis) project suite. The CSV exported from this annotator can be directly used in the CIGA library or CIGA GUI.
- Aegisub-like layout: Video + coding panel on top, clickable subtitle list at the bottom.
- Split right panel: Top area for character management, bottom area shows current Speaker/Listener/Target sets.
- Three-way coding: Code Speaker, Listener, and Target per subtitle line.
- Keyboard-first workflow:
Space: play/pause and continue line-by-lineUp/Down: previous / next subtitle lineN: jump to next uncoded subtitle lineLeft/Right: rewind/forward 2 secondsCtrl+F: focus subtitle search boxF1: open shortcut helpCtrl+1 / 2 / 3: set active coding role to Speaker / Listener / TargetCtrl+Q: cycle active coding roleAlt + key: toggle character in active coding role
- Dynamic character management: Add/remove/edit character names and shortcut bindings during annotation.
- Clickable subtitle list: Click any row to jump to that line and restore its coding state.
- Subtitle filtering: Search subtitle text and optionally show only uncoded lines.
- Status tracking: Each subtitle row is marked as
Uncoded,Partial, orDone. - Editable Note column: Fill per-line notes either from right panel Note input or directly in the table.
- Player controls: Built-in play/pause button, timeline slider, and current/total time display.
- Coding template options: Optional inheritance of Listener/Target from the previous line.
- Autosave + restore: Periodic autosave with optional restore prompt on startup.
- Unsaved-change protection: Save/discard/cancel prompt when closing.
- Safer writes: Manual save and autosave use atomic write replacement to reduce data corruption risk.
- CSV import/export: Save and load annotation progress in UTF-8 BOM CSV.
-
Clone the Repository
git clone https://github.com/MediaCompLab/ciga-annotator.git cd ciga/ciga-annotator -
Install Dependencies
pip install -r requirements.txt
-
Run the Application
python src/main.pyIf you are on Windows and get a Qt DLL load error in a Conda terminal, run with your system Python explicitly, for example:
c:/python313/python.exe src/main.py -
Select Files
Select your video and SRT files. Character file is optional. If provided, each line can be:CharacterNameCharacterName,ShortcutKey
-
Start Annotation
Click "Start Annotation" to begin. The player auto-pauses at subtitle boundaries for coding. -
Manage Characters Use the
Manage Characters & Shortcutsbutton any time to edit names and bindings. -
Save Progress
- Manual save:
Ctrl+S - Manual load:
Ctrl+O - Autosave is performed periodically and can be restored automatically.
- Manual save:
- Use
Up/Downto move between subtitle lines. - Use
Ctrl+1/2/3orCtrl+Qto choose the active coding role. - Use
Alt + character keyto toggle characters into the active role. - Turn on
Only show uncodedto focus on remaining lines. - Use
Inherit Listener/Target from previous lineto reduce repeated coding in dialogue runs. - Use
N(orNext Uncodedbutton) to jump through remaining work quickly.
Contributions are welcome! To contribute:
- Fork the Repository
- Create a New Branch
Run: git checkout -b feature/YourFeatureName - Make Your Changes
- Commit Your Changes
Run: git commit -m "Add Your Feature Description" - Push to Your Fork
Run: git push origin feature/YourFeatureName - Create a Pull Request
Please ensure your code follows the project's coding standards and includes appropriate documentation.
This project is licensed under the GPL-3.0 License.
