2026-04-16 05:06:13 +00:00
{
"$schema" : "http://json-schema.org/draft-07/schema#" ,
"title" : "Scene Description Training Entry" ,
2026-04-21 10:36:57 -04:00
"description" : "Schema for lyrics-to-visual scene description training data. Catches missing fields, wrong types, empty values, and unexpected fields." ,
2026-04-16 05:06:13 +00:00
"type" : "object" ,
2026-04-21 10:36:57 -04:00
"required" : [ "song" , "beat" , "lyric_line" , "scene" ] ,
2026-04-16 05:06:13 +00:00
"properties" : {
"song" : {
"type" : "string" ,
"minLength" : 1 ,
"description" : "Song title"
} ,
"artist" : {
"type" : "string" ,
"minLength" : 1 ,
2026-04-21 10:36:57 -04:00
"description" : "Artist or group name (missing in some files — flagged as warning)"
2026-04-16 05:06:13 +00:00
} ,
2026-04-21 10:36:57 -04:00
"genre" : {
2026-04-16 05:06:13 +00:00
"type" : "string" ,
2026-04-21 10:36:57 -04:00
"minLength" : 1 ,
"description" : "Musical genre"
} ,
"bpm" : {
"type" : "number" ,
"minimum" : 1 ,
"description" : "Beats per minute"
2026-04-16 05:06:13 +00:00
} ,
"beat" : {
"type" : "integer" ,
"minimum" : 1 ,
2026-04-21 10:36:57 -04:00
"description" : "Beat number within the song"
2026-04-16 05:06:13 +00:00
} ,
"timestamp" : {
"type" : "string" ,
"pattern" : "^[0-9]+:[0-5][0-9]$" ,
"description" : "Timestamp in M:SS or MM:SS format"
} ,
2026-04-21 10:36:57 -04:00
"duration_seconds" : {
"type" : "number" ,
"minimum" : 0 ,
"description" : "Duration in seconds"
} ,
2026-04-16 05:06:13 +00:00
"duration" : {
"type" : "string" ,
2026-04-21 10:36:57 -04:00
"minLength" : 1 ,
"description" : "Duration as string (e.g. '30s')"
2026-04-16 05:06:13 +00:00
} ,
2026-04-21 10:36:57 -04:00
"mood_arc" : {
"oneOf" : [
{ "type" : "string" , "minLength" : 1 } ,
{ "type" : "array" , "items" : { "type" : "string" } }
] ,
"description" : "Optional mood progression arc"
2026-04-16 05:06:13 +00:00
} ,
"lyric_line" : {
"type" : "string" ,
"minLength" : 1 ,
2026-04-21 10:36:57 -04:00
"description" : "Lyric line(s) for this beat"
2026-04-16 05:06:13 +00:00
} ,
"scene" : {
"type" : "object" ,
"required" : [ "mood" , "colors" , "composition" , "description" ] ,
"properties" : {
"mood" : {
"type" : "string" ,
"minLength" : 1 ,
"description" : "Emotional mood of the scene"
} ,
"colors" : {
"type" : "array" ,
"items" : { "type" : "string" , "minLength" : 1 } ,
"minItems" : 1 ,
2026-04-21 10:36:57 -04:00
"description" : "Visual color palette"
2026-04-16 05:06:13 +00:00
} ,
"composition" : {
"type" : "string" ,
"minLength" : 1 ,
2026-04-21 10:36:57 -04:00
"description" : "Shot composition description"
2026-04-16 05:06:13 +00:00
} ,
"camera" : {
"type" : "string" ,
2026-04-21 10:36:57 -04:00
"minLength" : 1 ,
"description" : "Camera movement or position"
2026-04-16 05:06:13 +00:00
} ,
"camera_movement" : {
"type" : "string" ,
2026-04-21 10:36:57 -04:00
"minLength" : 1 ,
"description" : "Camera movement (alternate field name)"
2026-04-16 05:06:13 +00:00
} ,
"description" : {
"type" : "string" ,
"minLength" : 10 ,
2026-04-21 10:36:57 -04:00
"description" : "Full visual scene description"
2026-04-16 05:06:13 +00:00
}
} ,
2026-04-21 10:36:57 -04:00
"additionalProperties" : false
2026-04-16 05:06:13 +00:00
}
} ,
2026-04-21 10:36:57 -04:00
"additionalProperties" : false
2026-04-16 05:06:13 +00:00
}