Live sermon translation into 100+ languages, running entirely on one Mac per campus: audio in, voice detection, Whisper on the GPU, NLLB-200 in its own process, and a built-in web server the congregation reads from on their phones. No audio leaves the building. This is the source only. What used to sit beside it — 14 GB of speech and translation models, 8 GB of voice bundles, 6 GB of natural voices, the Electron caches, and the app data holding the operator PIN and every service transcript — is machine state and downloaded assets, and stays in the NAS backup where it belongs. The vendored node, cloudflared and Windows ffmpeg binaries are out too (533 MB, re-fetched for packaging); the browser-side runtime beside them is kept, so a checkout still serves the congregation page. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
59 lines
4.7 KiB
JSON
59 lines
4.7 KiB
JSON
{
|
|
"_note": "Realistic preaching utterances for validating the guard layers. 'expect' records properties that must hold in EVERY target language, since no one here can read most of them. Anything asserting specific target text is marked needsNativeReview.",
|
|
|
|
"_carrier": "Name coverage is measured IN A CARRIER SENTENCE, not in isolation. An isolated proper noun is exactly the short-input regime where NLLB hallucinates, so testing bare terms would measure the wrong failure. Carrier: 'We read about NAME in the Bible.'",
|
|
|
|
"hallucination_cases": [
|
|
{ "en": "Donald Trump.", "expect": { "noNewQuestion": true, "maxSentences": 1 }, "seen": "spa: 'Donald Trump. ¿Qué es eso?'" },
|
|
{ "en": "Amen.", "expect": { "noNewQuestion": true, "maxSentences": 1 }, "seen": "spa: '- Sí, estoy bien.' (= 'Yes, I am fine.')" },
|
|
{ "en": "Hello, hello.", "expect": { "noLeadingDash": true, "maxSentences": 1 }, "seen": "spa: '- Hola, está bien.'" },
|
|
{ "en": "Hallelujah.", "expect": { "noNewQuestion": true, "maxSentences": 1 } },
|
|
{ "en": "Praise the Lord.", "expect": { "noNewQuestion": true, "maxSentences": 1 } },
|
|
{ "en": "Come on.", "expect": { "noNewQuestion": true, "maxSentences": 1 } },
|
|
{ "en": "Yes.", "expect": { "noNewQuestion": true, "maxSentences": 1 } },
|
|
{ "en": "Okay.", "expect": { "noNewQuestion": true, "maxSentences": 1 } }
|
|
],
|
|
|
|
"must_not_be_stripped": [
|
|
{ "en": "How many countries are in the world?", "expect": { "keepsQuestion": true }, "why": "source has ? — the target question is real" },
|
|
{ "en": "What does the Bible say about that?", "expect": { "keepsQuestion": true } },
|
|
{ "en": "Do you believe that?", "expect": { "keepsQuestion": true } },
|
|
{ "en": "Who do you say that I am?", "expect": { "keepsQuestion": true }, "why": "Matthew 16:15" },
|
|
{ "en": "Where, O death, is your victory?", "expect": { "keepsQuestion": true }, "why": "1 Cor 15:55" },
|
|
{ "en": "Are you with me", "expect": { "note": "Whisper drops the ? on questions like this — a correct target may legitimately add one. THE RISK CASE for the invented-question rule." } },
|
|
{ "en": "Can I get an amen", "expect": { "note": "same risk class" } },
|
|
{ "en": "You know what I'm saying", "expect": { "note": "tag question, no ? in source" } }
|
|
],
|
|
|
|
"name_fidelity": [
|
|
{ "en": "His name was John.", "seen": "spa: 'Se llamaba John.' — untranslated" },
|
|
{ "en": "Open up to the book, Matthew.", "seen": "spa: 'Abre al libro, Matthew.' — untranslated" },
|
|
{ "en": "Turn with me to John chapter 3.", "seen": "spa: 'Vuelva conmigo a Juan capítulo 3.' — correct" },
|
|
{ "en": "Today we are going to talk about Peter in the Bible.", "seen": "spa: '...de Pedro en la Biblia.' — correct" },
|
|
{ "en": "Paul wrote to the church at Corinth." },
|
|
{ "en": "Peter denied him three times." },
|
|
{ "en": "James, the brother of Jesus, wrote this letter." },
|
|
{ "en": "Mark tells us the same story." },
|
|
{ "en": "Luke was a physician." },
|
|
{ "en": "We are reading from Habakkuk chapter 2." }
|
|
],
|
|
|
|
"homonym_traps": [
|
|
{ "en": "I finally got the job I wanted.", "expect": { "mustNotBecome": "Job (the book)" } },
|
|
{ "en": "He did a mark on the paper.", "expect": { "mustNotBecome": "Mark (the apostle)" } },
|
|
{ "en": "She will call him tomorrow.", "expect": { "mustNotBecome": "a proper noun" } },
|
|
{ "en": "That was an act of kindness.", "expect": { "mustNotBecome": "Acts" } },
|
|
{ "en": "The romans built roads.", "expect": { "note": "lowercase 'romans' — people, not the epistle" } },
|
|
{ "en": "Give me a hope and a future.", "expect": { "mustNotBecome": "a book title" } },
|
|
{ "en": "My son Mark is here today.", "expect": { "note": "a real person named Mark, not the evangelist — a name lexicon must not 'fix' this" } },
|
|
{ "en": "Amen was not his name.", "expect": { "note": "'Amen' inside a sentence must NOT hit the liturgical phrasebook" } }
|
|
],
|
|
|
|
"long_form": [
|
|
{ "en": "And God said, let there be light, and there was light." },
|
|
{ "en": "For God so loved the world that he gave his only begotten Son, that whoever believes in him should not perish but have everlasting life." },
|
|
{ "en": "The Lord is my shepherd; I shall not want." },
|
|
{ "en": "Blessed are the poor in spirit, for theirs is the kingdom of heaven." }
|
|
]
|
|
}
|