diff --git a/training-data/schema.json b/training-data/schema.json new file mode 100644 index 00000000..73c9ad31 --- /dev/null +++ b/training-data/schema.json @@ -0,0 +1,84 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Scene Description Training Entry", + "description": "Schema for lyrics-to-visual-scene description training data entries.", + "type": "object", + "required": ["song", "artist", "beat", "timestamp", "lyric_line", "scene"], + "properties": { + "song": { + "type": "string", + "minLength": 1, + "description": "Song title" + }, + "artist": { + "type": "string", + "minLength": 1, + "description": "Artist name" + }, + "mood_arc": { + "type": "string", + "description": "Overall mood progression of the song (optional)" + }, + "beat": { + "type": "integer", + "minimum": 1, + "description": "Beat number within the song (1-indexed)" + }, + "timestamp": { + "type": "string", + "pattern": "^[0-9]+:[0-5][0-9]$", + "description": "Timestamp in M:SS or MM:SS format" + }, + "duration": { + "type": "string", + "description": "Duration of the beat (e.g. '30s', '15s')" + }, + "duration_seconds": { + "type": "integer", + "minimum": 1, + "description": "Duration in seconds (integer alternative)" + }, + "lyric_line": { + "type": "string", + "minLength": 1, + "description": "The lyric line for this beat" + }, + "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, + "description": "Color palette for the scene" + }, + "composition": { + "type": "string", + "minLength": 1, + "description": "Shot composition (e.g. 'wide shot', 'close-up', 'low angle')" + }, + "camera": { + "type": "string", + "description": "Camera movement (e.g. 'static', 'slow zoom', 'tracking')" + }, + "camera_movement": { + "type": "string", + "description": "Alternative field name for camera movement" + }, + "description": { + "type": "string", + "minLength": 10, + "description": "Full scene description text" + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true +}