Music Plagiarism Detection¶
Detect potential music plagiarism by comparing audio against a database of existing songs using structural music analysis.
Endpoint¶
POST /api/v1/plagiarism/{model_name}
Parameters¶
Path Parameters¶
Name |
Type |
Required |
Description |
|---|---|---|---|
|
string |
Yes |
Model to use: |
Request Body¶
Field |
Type |
Required |
Description |
|---|---|---|---|
|
binary |
Yes |
Audio file to analyze (mp3, wav, flac, m4a, aac, ogg) |
|
string |
No |
Dataset ID for comparison, ‘default’ is only option available for now. |
Request Example¶
cURL¶
curl https://platform.mippia.com/api/v1/plagiarism/standard \
-H "Authorization: Bearer YOUR_API_KEY" \
-X POST \
-F "file=@/path/to/audio.mp3" \
-F "dataset_id=default"
Python¶
import requests
url = "https://platform.mippia.com/api/v1/plagiarism/standard"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}
files = {
"file": open("/path/to/audio.mp3", "rb")
}
data = {
"dataset_id": "default"
}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
Response (Initial)¶
{
"task_id": "task_20251204052920_J8uNdq5z",
"status": "pending",
"filepath": "uploads/task_20251204052920_J8uNdq5z.mp3",
"model": "standard",
"created_at": "2025-12-04T05:29:20Z"
}
Callback Response (Processing)¶
{
"task_id": "task_20251204052920_J8uNdq5z",
"task_type": "plagiarism_detection",
"status": "processing",
"result": null,
"started_at": "2025-12-04T05:29:25Z"
}
Callback Response (Completed)¶
{
"task_id": "task_20251204052920_J8uNdq5z",
"task_type": "plagiarism_detection",
"status": "success",
"completed_at": "2025-12-04T05:30:45Z",
"result": {
"signature": [
{
"signature_metric": 0.847,
"original": {
"title": "My New Song",
"link": "https://example.com/my-song.mp3",
"time_start": 30.5,
"time_end": 45.2,
"key": "C major",
"chords": ["C", "Am", "F", "G", "C", "Am", "Dm", "G", "C", "F", "Am", "G", "F", "C", "G", "C"]
},
"comparison": {
"title": "Similar Existing Song",
"link": "https://example.com/existing-song.mp3",
"time_start": 15.0,
"time_end": 30.0,
"key": "C major",
"chords": ["C", "Am", "F", "G", "C", "Am", "Dm", "G", "C", "F", "Am", "G", "F", "C", "G", "C"]
},
"scores": {
"vocal": 0.823,
"melody": 0.891,
"bass": 0.756,
"chord": 0.912
}
}
],
"vocal": [
{
"signature_metric": 0.792,
"original": {
"title": "My New Song",
"link": "https://example.com/my-song.mp3",
"time_start": 45.0,
"time_end": 60.0,
"key": "G major",
"chords": ["G", "Em", "C", "D", "G", "Em", "Am", "D", "G", "C", "Em", "D", "C", "G", "D", "G"]
},
"comparison": {
"title": "Another Song",
"link": "https://example.com/another-song.mp3",
"time_start": 20.0,
"time_end": 35.0,
"key": "G major",
"chords": ["G", "Em", "C", "D", "G", "Em", "Am", "D", "G", "C", "Em", "D", "C", "G", "D", "G"]
},
"scores": {
"vocal": 0.856,
"melody": 0.734,
"bass": 0.689,
"chord": 0.878
}
}
],
"inst": [...],
"topline": [...]
}
}
Result Fields¶
Field |
Type |
Description |
|---|---|---|
|
string |
Unique task identifier |
|
string |
Task type: |
|
string |
Task status: |
|
string |
ISO 8601 completion timestamp |
|
object |
Detection results grouped by match type |
Result Categories¶
Category |
Description |
|---|---|
|
Overall signature similarity matches |
|
Vocal melody similarity matches |
|
Instrumental similarity matches |
|
Topline (main melody) similarity matches |
Match Object Fields¶
Field |
Type |
Description |
|---|---|---|
|
float |
Overall similarity score (0.0 - 1.0) |
|
object |
Information about the query segment |
|
object |
Information about the matched segment |
|
object |
Detailed similarity scores by component |
Original / Comparison Fields¶
Field |
Type |
Description |
|---|---|---|
|
string |
Song title |
|
string |
Audio file URL or path |
|
float |
Segment start time (seconds) |
|
float |
Segment end time (seconds) |
|
string |
Musical key (e.g., “C major”, “A minor”) |
|
array |
Chord progression (fixed length: 16 chords) |
Score Fields¶
Field |
Type |
Description |
|---|---|---|
|
float |
Vocal melody similarity (0.0 - 1.0) |
|
float |
Instrumental melody similarity (0.0 - 1.0) |
|
float |
Chord progression similarity (0.0 - 1.0) |
Analysis Method¶
The plagiarism detection system analyzes music at a structural level:
Segmentation: Audio is divided into musical segments based on beat and bar detection
Feature Extraction: Each segment is analyzed for vocal melody, instrumental melody, bass line, and chord progression (16 chords per segment)
Clustering: Segments are matched against pre-indexed clusters for efficient search
Comparison: Matched candidates are compared in detail using multiple similarity metrics
Notes¶
Database: 150,000+ songs indexed
Processing time: 30-60 seconds typical
Segment-based: Results show which specific parts of songs are similar
Multi-dimensional: Analyzes vocal, melody, bass, and chord independently
Chord resolution: Fixed 16-chord sequence per segment for consistent comparison
Note: This API is currently in Beta. Pricing will be announced before general availability.