Multimodal AI Content Detection Agent for Text, Image, Audio, and Video
Python
3
66 commits
updated Oct 16, 2026
Status: Text, image, and audio detector logic plus file-based multimodal routing are implemented; video detection is planned.
A multimodal system designed to detect potentially AI-generated text, images, and audio using open-source pretrained models, with video detection planned.
Develop a resource-efficient AI detection system leveraging pretrained models without fine-tuning in Version 1.
The file-based agent routes .txt, .md, and .csv files to text detection;
.jpg, .jpeg, .png, and .webp files to image decision logic; and .wav,
.mp3, .ogg, .m4a, and .flac files to audio detection. Video files are
not supported yet. Text and audio routes call their detector pipelines. The
image route combines two supplied model scores; it does not currently load an
image or run either image model itself.
Oxidane/tmr-ai-text-detector (RoBERTa-base fine-tuned on 50k RAID samples with Focal Loss to minimize false positives).mujian2026/multilingual-ai-text-detector (XLM-RoBERTa-base derivative reserved for cross-lingual screening).ShantanuT01/gradient-ai-text-detector (DeBERTa-v3-based single-logit classifier).Input Validation $\rightarrow$ Token Chunking $\rightarrow$ Sequential Three-Model Inference $\rightarrow$ Softmax/Sigmoid Logit Normalization $\rightarrow$ Majority Vote $\rightarrow$ Standardized Schema Output.Ateeqq/ai-vs-human-image-detector with threshold 0.70.haywoodsloan/ai-image-detector-deploy with threshold 0.50.Moderate.Image Input $\rightarrow$ Model 1 Score + Model 2 Score $\rightarrow$ Binary Label Derivation $\rightarrow$ Consensus / Fallback Decision $\rightarrow$ Normalized Output Payload.Sayantan090/audio-fake-detector (FAKE โ AI; REAL โ HUMAN).Mahmoud59/wav2vec2-fake-audio-detector (LABEL_0 โ AI; LABEL_1 โ HUMAN), using a 0.90 AI-score threshold.Audio File(s) $\rightarrow$ Model 1 Inference $\rightarrow$ Model 2 Inference $\rightarrow$ Model 2 Threshold Decision $\rightarrow$ Confidence + Agreement Telemetry $\rightarrow$ Structured Result.The project retains the previously reported benchmark results below. The linked Kaggle text and image datasets are the evaluation datasets already used for project testing; another direct Kaggle download or evaluation run is not required.
| Dataset source | Configuration | Accuracy | Precision | Recall | F1 |
|---|---|---|---|---|---|
| Historical local benchmark (validated) | Gradient alone | 82.18% | 100.00% | 64.00% | 0.7805 |
| Historical local benchmark (validated) | Three-model majority | 84.16% | 84.00% | 84.00% | 0.8400 |
The agent loads the three text models sequentially to reduce peak memory usage. A two-out-of-three vote determines likely_ai_generated or likely_human, and the result reports each model score, vote counts, and agreement strength.
These are the Kaggle dataset collections used for text and image evaluation:
The evaluation scripts first honor MULTIMODAL_TEXT_DATASET_DIR or
MULTIMODAL_IMAGE_DATASET_DIR, then use data/<modality>/evaluation when
local evaluation data is present. If it is absent, the shared dataset resolver
can download the corresponding Kaggle dataset and place its files under that
local data path.
multimodal-ai-content-detection-agent/
โ
โโโ docs/
โโโ scripts/
โโโ src/
โ โโโ detectors/
โ โโโ audio/
โ โ โโโ __init__.py
โ โ โโโ audio_detectors.py
โ โ โโโ ensemble.py
โ โ โโโ label_normalization.py
โ โโโ image/
โ โ โโโ __init__.py
โ โ โโโ ensemble.py
โ โ โโโ image_detectors.py
โ โ โโโ label_normalization.py
โ โโโ text/
โ โโโ __init__.py
โ โโโ detector.py
โ โโโ preprocessing.py
โ โโโ schemas.py
โ
โโโ tests/
โ โโโ test_audio_detector_package.py
โ โโโ test_audio_label_normalization.py
โ โโโ test_image_detector_package.py
โ โโโ test_text_detector.py
โ
โโโ .gitignore
โโโ pytest.ini
โโโ README.md
โโโ requirements.txt
โโโ results/
See docs/architecture.md for the current routing overview and docs/audio-detector.md for the audio execution graph, output contract, test commands, and evaluation artifacts.
This project is licensed under the Apache License 2.0.
pip install -r requirements.txt
pytest -s
python3 scripts/text_detector/test_text_agent.py
python3 -c "from src.detectors.image import ImageDetector; print(ImageDetector().predict('test.jpg', 0.8, 0.2))"
python3 scripts/audio_detector/pipeline.py --input path/to/audio.wav
Run the audio unit tests with:
python3 -m pytest tests/test_audio_label_normalization.py tests/test_audio_detector_package.py -q
See docs/audio-detector.md for the complete audio output schema, execution diagram, test commands, and evaluation artifact list.
The project uses a virtual environment in .venv. Activate it first when the
system Python does not contain the required dependencies:
source .venv/bin/activate
Detailed evaluation outputs are written to results/, including
extended_gradient_results.csv and three_models_comparison.csv.
Learn $\rightarrow$ Experiment $\rightarrow$ Implement $\rightarrow$ Evaluate $\rightarrow$ Integrate $\rightarrow$ Deploy
Multimodal AI Content Detection Agent for Text, Image, Audio, and Video
Python
3
66 commits
updated Oct 16, 2026
Status: Text, image, and audio detector logic plus file-based multimodal routing are implemented; video detection is planned.
A multimodal system designed to detect potentially AI-generated text, images, and audio using open-source pretrained models, with video detection planned.
Develop a resource-efficient AI detection system leveraging pretrained models without fine-tuning in Version 1.
The file-based agent routes .txt, .md, and .csv files to text detection;
.jpg, .jpeg, .png, and .webp files to image decision logic; and .wav,
.mp3, .ogg, .m4a, and .flac files to audio detection. Video files are
not supported yet. Text and audio routes call their detector pipelines. The
image route combines two supplied model scores; it does not currently load an
image or run either image model itself.
Oxidane/tmr-ai-text-detector (RoBERTa-base fine-tuned on 50k RAID samples with Focal Loss to minimize false positives).mujian2026/multilingual-ai-text-detector (XLM-RoBERTa-base derivative reserved for cross-lingual screening).ShantanuT01/gradient-ai-text-detector (DeBERTa-v3-based single-logit classifier).Input Validation $\rightarrow$ Token Chunking $\rightarrow$ Sequential Three-Model Inference $\rightarrow$ Softmax/Sigmoid Logit Normalization $\rightarrow$ Majority Vote $\rightarrow$ Standardized Schema Output.Ateeqq/ai-vs-human-image-detector with threshold 0.70.haywoodsloan/ai-image-detector-deploy with threshold 0.50.Moderate.Image Input $\rightarrow$ Model 1 Score + Model 2 Score $\rightarrow$ Binary Label Derivation $\rightarrow$ Consensus / Fallback Decision $\rightarrow$ Normalized Output Payload.Sayantan090/audio-fake-detector (FAKE โ AI; REAL โ HUMAN).Mahmoud59/wav2vec2-fake-audio-detector (LABEL_0 โ AI; LABEL_1 โ HUMAN), using a 0.90 AI-score threshold.Audio File(s) $\rightarrow$ Model 1 Inference $\rightarrow$ Model 2 Inference $\rightarrow$ Model 2 Threshold Decision $\rightarrow$ Confidence + Agreement Telemetry $\rightarrow$ Structured Result.The project retains the previously reported benchmark results below. The linked Kaggle text and image datasets are the evaluation datasets already used for project testing; another direct Kaggle download or evaluation run is not required.
| Dataset source | Configuration | Accuracy | Precision | Recall | F1 |
|---|---|---|---|---|---|
| Historical local benchmark (validated) | Gradient alone | 82.18% | 100.00% | 64.00% | 0.7805 |
| Historical local benchmark (validated) | Three-model majority | 84.16% | 84.00% | 84.00% | 0.8400 |
The agent loads the three text models sequentially to reduce peak memory usage. A two-out-of-three vote determines likely_ai_generated or likely_human, and the result reports each model score, vote counts, and agreement strength.
These are the Kaggle dataset collections used for text and image evaluation:
The evaluation scripts first honor MULTIMODAL_TEXT_DATASET_DIR or
MULTIMODAL_IMAGE_DATASET_DIR, then use data/<modality>/evaluation when
local evaluation data is present. If it is absent, the shared dataset resolver
can download the corresponding Kaggle dataset and place its files under that
local data path.
multimodal-ai-content-detection-agent/
โ
โโโ docs/
โโโ scripts/
โโโ src/
โ โโโ detectors/
โ โโโ audio/
โ โ โโโ __init__.py
โ โ โโโ audio_detectors.py
โ โ โโโ ensemble.py
โ โ โโโ label_normalization.py
โ โโโ image/
โ โ โโโ __init__.py
โ โ โโโ ensemble.py
โ โ โโโ image_detectors.py
โ โ โโโ label_normalization.py
โ โโโ text/
โ โโโ __init__.py
โ โโโ detector.py
โ โโโ preprocessing.py
โ โโโ schemas.py
โ
โโโ tests/
โ โโโ test_audio_detector_package.py
โ โโโ test_audio_label_normalization.py
โ โโโ test_image_detector_package.py
โ โโโ test_text_detector.py
โ
โโโ .gitignore
โโโ pytest.ini
โโโ README.md
โโโ requirements.txt
โโโ results/
See docs/architecture.md for the current routing overview and docs/audio-detector.md for the audio execution graph, output contract, test commands, and evaluation artifacts.
This project is licensed under the Apache License 2.0.
pip install -r requirements.txt
pytest -s
python3 scripts/text_detector/test_text_agent.py
python3 -c "from src.detectors.image import ImageDetector; print(ImageDetector().predict('test.jpg', 0.8, 0.2))"
python3 scripts/audio_detector/pipeline.py --input path/to/audio.wav
Run the audio unit tests with:
python3 -m pytest tests/test_audio_label_normalization.py tests/test_audio_detector_package.py -q
See docs/audio-detector.md for the complete audio output schema, execution diagram, test commands, and evaluation artifact list.
The project uses a virtual environment in .venv. Activate it first when the
system Python does not contain the required dependencies:
source .venv/bin/activate
Detailed evaluation outputs are written to results/, including
extended_gradient_results.csv and three_models_comparison.csv.
Learn $\rightarrow$ Experiment $\rightarrow$ Implement $\rightarrow$ Evaluate $\rightarrow$ Integrate $\rightarrow$ Deploy