Batch+realtime transcription API: faster-whisper engine w/ EngineOwner (single GPU owner, OOM downgrade chain, persisted attempted_profiles), hardware-adaptive device manager (T0-T3 VRAM tiers), Redis/in-proc job queue w/ leases + crash recovery, postprocess (glossary/rules/LLM w/ egress guard), privacy-first result store (UUID keys, source deleted after transcribe), retention sweeper, API-key auth (HMAC digests, scopes, job ownership), WebSocket realtime lane (LocalAgreement), CLI (detect/transcribe/bench/serve/key), Docker, benchmark runner. 127 mock-based tests pass; ruff clean. Includes verification checklist and autoplan review notes.
84 lines
2.9 KiB
JSON
84 lines
2.9 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://git.lukehemmin.com/lukehemmin/luke_scribe/docs/schemas/transcript-result-v1.schema.json",
|
|
"title": "TranscriptResult v1",
|
|
"type": "object",
|
|
"required": ["schema_version", "status"],
|
|
"properties": {
|
|
"schema_version": { "const": "1.0" },
|
|
"status": { "enum": ["completed", "failed", "cancelled"] },
|
|
"source": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"codec": { "type": ["string", "null"] },
|
|
"size_bytes": { "type": ["integer", "null"] }
|
|
}
|
|
},
|
|
"normalized_audio": {
|
|
"type": "object",
|
|
"properties": {
|
|
"duration_sec": { "type": "number", "exclusiveMinimum": 0 },
|
|
"audio_format": { "type": "string" },
|
|
"sample_rate": { "type": "integer" },
|
|
"channels": { "type": "integer" }
|
|
}
|
|
},
|
|
"execution": {
|
|
"type": "object",
|
|
"properties": {
|
|
"model": { "type": "string" },
|
|
"device": { "type": "string" },
|
|
"compute_type": { "type": "string" },
|
|
"language_requested": { "type": ["string", "null"] },
|
|
"language_detected": { "type": ["string", "null"] },
|
|
"language_detection_confidence": { "type": ["number", "null"] },
|
|
"model_used": { "type": ["string", "null"] },
|
|
"compute_type_used": { "type": ["string", "null"] },
|
|
"downgrade_attempts": { "type": "integer" },
|
|
"capability_tier": { "type": ["string", "null"] }
|
|
}
|
|
},
|
|
"timings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"model_load_sec": { "type": ["number", "null"] },
|
|
"transcription_sec": { "type": ["number", "null"] },
|
|
"ingest_sec": { "type": ["number", "null"] },
|
|
"postprocess_sec": { "type": ["number", "null"] },
|
|
"rtf": { "type": ["number", "null"] }
|
|
}
|
|
},
|
|
"text": { "type": "string" },
|
|
"segments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["index", "start", "end", "text"],
|
|
"properties": {
|
|
"index": { "type": "integer", "minimum": 0 },
|
|
"start": { "type": "number", "minimum": 0 },
|
|
"end": { "type": "number", "minimum": 0 },
|
|
"text": { "type": "string" },
|
|
"avg_logprob": { "type": ["number", "null"] },
|
|
"no_speech_prob": { "type": ["number", "null"] },
|
|
"confidence": { "type": ["number", "null"] },
|
|
"words": { "type": ["array", "null"] },
|
|
"speaker": { "type": ["string", "null"] }
|
|
}
|
|
}
|
|
},
|
|
"warnings": { "type": "array", "items": { "type": "string" } },
|
|
"error": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": { "type": "string" },
|
|
"message": { "type": "string" },
|
|
"retryable": { "type": "boolean" }
|
|
}
|
|
},
|
|
"postprocessing": { "type": ["object", "null"] },
|
|
"entities": { "type": ["array", "null"] }
|
|
}
|
|
}
|