The sentence helper is an optional download (Settings → Sentence helper): Gemma 4 E2B in Google's web build, run by Google's LiteRT-LM web runtime on the graphics chip, in a worker. ✨ beside the message turns the words chosen into three sentences, fitting what the partner said if it was typed in, or suggests four replies when no words are chosen yet. The suggestions take the word predictions' place, at their height, so no cell moves (SPEC §3); the person chooses one and speaks it. Nothing is spoken by itself, and nothing typed leaves the device. - ai_helper.rs: the catalogue (aac-ai-index/1), prompts, whether a device can run it (a WebGPU hardware adapter, never the processor), download, continue, remove and re-check, and suggestions that a later request supersedes. The model's parts (64 MiB, SHA-256 checked) and the one runtime build this browser runs live in the model store; the worker streams the parts from there into GPU memory. - third_party/litert-lm: @litert-lm/core 0.17.1 vendored and pinned (npm integrity, each file's size and SHA-256), with our worker bundled by esbuild 0.28.2; the runtime's CDN default is emptied. - tools/ai: build_ai.py (the pinned model → parts and catalogue), check_packs.py, languages.json (English, Spanish, German and Hindi ready; Swahili not yet), and eval/: the 20 exchanges, a harness that runs the app's own prompts (a test keeps them word for word), and the judged answers. - Measured: Chrome on an M5 Max, 0.4-0.7 s an answer. A real iPad Air (M3) in Safari 27: 101 s to download and check 2 GB, about 80 s for the first start, 5.9 s for later starts, 0.8-1.4 s an answer. Co-Authored-By: Claude Opus 5.5 <[email protected]>
513 lines
11 KiB
JSON
513 lines
11 KiB
JSON
{
|
|
"about": "Twenty everyday exchanges per language: what a partner said, what the person means, and the 1-3 words they might choose. The sentence helper is offered in a language only after these have been run (tools/ai/eval/run.mjs) and each answer read.",
|
|
"en": [
|
|
[
|
|
"Do you want something to drink?",
|
|
"Yes, I want some apple juice.",
|
|
"yes apple juice"
|
|
],
|
|
[
|
|
"How are you feeling today?",
|
|
"I feel tired and my head hurts.",
|
|
"tired head hurt"
|
|
],
|
|
[
|
|
"What should we do this afternoon?",
|
|
"Let's go to the park.",
|
|
"park"
|
|
],
|
|
[
|
|
"Are you hungry?",
|
|
"No, I just ate lunch.",
|
|
"no lunch"
|
|
],
|
|
[
|
|
"Where does it hurt?",
|
|
"My stomach hurts on the left side.",
|
|
"stomach hurt left"
|
|
],
|
|
[
|
|
"What do you want to watch?",
|
|
"Can we watch the football game?",
|
|
"watch football"
|
|
],
|
|
[
|
|
"Is the room okay?",
|
|
"It is too cold in here.",
|
|
"cold"
|
|
],
|
|
[
|
|
"Who do you want to call?",
|
|
"I want to call my sister.",
|
|
"call sister"
|
|
],
|
|
[
|
|
"What did you do at school today?",
|
|
"We painted pictures in art class.",
|
|
"paint art"
|
|
],
|
|
[
|
|
"Do you need anything?",
|
|
"Please help me sit up.",
|
|
"help sit"
|
|
],
|
|
[
|
|
"Did you like the movie?",
|
|
"Yes, it was really funny.",
|
|
"yes funny"
|
|
],
|
|
[
|
|
"Are you ready to go?",
|
|
"Wait, I need my glasses.",
|
|
"wait glasses"
|
|
],
|
|
[
|
|
"What would you like for dinner?",
|
|
"I would like pasta with tomato sauce.",
|
|
"pasta tomato"
|
|
],
|
|
[
|
|
"How was your night?",
|
|
"I did not sleep well.",
|
|
"sleep bad"
|
|
],
|
|
[
|
|
"There you go, all done.",
|
|
"Thank you so much for your help.",
|
|
"thank help"
|
|
],
|
|
[
|
|
"Do you want to go outside?",
|
|
"Not now, maybe later.",
|
|
"not now later"
|
|
],
|
|
[
|
|
"What's wrong?",
|
|
"I am frustrated because nobody understands me.",
|
|
"frustrated understand"
|
|
],
|
|
[
|
|
"Shall I turn the music up?",
|
|
"Yes, louder please.",
|
|
"louder"
|
|
],
|
|
[
|
|
"Where do you want to sit?",
|
|
"Next to the window, please.",
|
|
"window"
|
|
],
|
|
[
|
|
"What do you want to tell grandma?",
|
|
"I love you and I miss you.",
|
|
"love miss"
|
|
]
|
|
],
|
|
"es": [
|
|
[
|
|
"¿Quieres algo de beber?",
|
|
"Sí, quiero un poco de jugo de manzana.",
|
|
"sí jugo manzana"
|
|
],
|
|
[
|
|
"¿Cómo te sientes hoy?",
|
|
"Me siento cansado y me duele la cabeza.",
|
|
"cansado cabeza duele"
|
|
],
|
|
[
|
|
"¿Qué hacemos esta tarde?",
|
|
"Vamos al parque.",
|
|
"parque"
|
|
],
|
|
[
|
|
"¿Tienes hambre?",
|
|
"No, acabo de almorzar.",
|
|
"no almorzar"
|
|
],
|
|
[
|
|
"¿Dónde te duele?",
|
|
"Me duele el estómago del lado izquierdo.",
|
|
"estómago duele izquierdo"
|
|
],
|
|
[
|
|
"¿Qué quieres ver?",
|
|
"¿Podemos ver el partido de fútbol?",
|
|
"ver fútbol"
|
|
],
|
|
[
|
|
"¿Está bien la habitación?",
|
|
"Hace demasiado frío aquí.",
|
|
"frío"
|
|
],
|
|
[
|
|
"¿A quién quieres llamar?",
|
|
"Quiero llamar a mi hermana.",
|
|
"llamar hermana"
|
|
],
|
|
[
|
|
"¿Qué hiciste hoy en la escuela?",
|
|
"Pintamos cuadros en la clase de arte.",
|
|
"pintar arte"
|
|
],
|
|
[
|
|
"¿Necesitas algo?",
|
|
"Por favor, ayúdame a sentarme.",
|
|
"ayuda sentar"
|
|
],
|
|
[
|
|
"¿Te gustó la película?",
|
|
"Sí, fue muy divertida.",
|
|
"sí divertida"
|
|
],
|
|
[
|
|
"¿Estás listo para salir?",
|
|
"Espera, necesito mis gafas.",
|
|
"espera gafas"
|
|
],
|
|
[
|
|
"¿Qué te gustaría cenar?",
|
|
"Me gustaría pasta con salsa de tomate.",
|
|
"pasta tomate"
|
|
],
|
|
[
|
|
"¿Qué tal la noche?",
|
|
"No dormí bien.",
|
|
"dormir mal"
|
|
],
|
|
[
|
|
"Ya está, listo.",
|
|
"Muchas gracias por tu ayuda.",
|
|
"gracias ayuda"
|
|
],
|
|
[
|
|
"¿Quieres salir afuera?",
|
|
"Ahora no, quizás más tarde.",
|
|
"ahora no después"
|
|
],
|
|
[
|
|
"¿Qué te pasa?",
|
|
"Estoy frustrado porque nadie me entiende.",
|
|
"frustrado entender"
|
|
],
|
|
[
|
|
"¿Subo la música?",
|
|
"Sí, más alto por favor.",
|
|
"más alto"
|
|
],
|
|
[
|
|
"¿Dónde quieres sentarte?",
|
|
"Junto a la ventana, por favor.",
|
|
"ventana"
|
|
],
|
|
[
|
|
"¿Qué quieres decirle a la abuela?",
|
|
"Te quiero y te extraño.",
|
|
"quiero extraño"
|
|
]
|
|
],
|
|
"de": [
|
|
[
|
|
"Möchtest du etwas trinken?",
|
|
"Ja, ich möchte etwas Apfelsaft.",
|
|
"ja Apfelsaft"
|
|
],
|
|
[
|
|
"Wie fühlst du dich heute?",
|
|
"Ich bin müde und mein Kopf tut weh.",
|
|
"müde Kopf weh"
|
|
],
|
|
[
|
|
"Was machen wir heute Nachmittag?",
|
|
"Lass uns in den Park gehen.",
|
|
"Park"
|
|
],
|
|
[
|
|
"Hast du Hunger?",
|
|
"Nein, ich habe gerade zu Mittag gegessen.",
|
|
"nein Mittagessen"
|
|
],
|
|
[
|
|
"Wo tut es weh?",
|
|
"Mein Bauch tut auf der linken Seite weh.",
|
|
"Bauch weh links"
|
|
],
|
|
[
|
|
"Was möchtest du sehen?",
|
|
"Können wir das Fußballspiel sehen?",
|
|
"Fußball sehen"
|
|
],
|
|
[
|
|
"Ist das Zimmer in Ordnung?",
|
|
"Es ist zu kalt hier drin.",
|
|
"kalt"
|
|
],
|
|
[
|
|
"Wen möchtest du anrufen?",
|
|
"Ich möchte meine Schwester anrufen.",
|
|
"Schwester anrufen"
|
|
],
|
|
[
|
|
"Was hast du heute in der Schule gemacht?",
|
|
"Wir haben im Kunstunterricht Bilder gemalt.",
|
|
"malen Kunst"
|
|
],
|
|
[
|
|
"Brauchst du etwas?",
|
|
"Bitte hilf mir, mich aufzusetzen.",
|
|
"helfen aufsetzen"
|
|
],
|
|
[
|
|
"Hat dir der Film gefallen?",
|
|
"Ja, er war wirklich lustig.",
|
|
"ja lustig"
|
|
],
|
|
[
|
|
"Bist du fertig?",
|
|
"Warte, ich brauche meine Brille.",
|
|
"warten Brille"
|
|
],
|
|
[
|
|
"Was möchtest du zum Abendessen?",
|
|
"Ich hätte gern Nudeln mit Tomatensoße.",
|
|
"Nudeln Tomate"
|
|
],
|
|
[
|
|
"Wie war deine Nacht?",
|
|
"Ich habe nicht gut geschlafen.",
|
|
"schlafen schlecht"
|
|
],
|
|
[
|
|
"So, alles erledigt.",
|
|
"Vielen Dank für deine Hilfe.",
|
|
"danke Hilfe"
|
|
],
|
|
[
|
|
"Willst du nach draußen gehen?",
|
|
"Jetzt nicht, vielleicht später.",
|
|
"jetzt nicht später"
|
|
],
|
|
[
|
|
"Was ist los?",
|
|
"Ich bin frustriert, weil mich niemand versteht.",
|
|
"frustriert verstehen"
|
|
],
|
|
[
|
|
"Soll ich die Musik lauter machen?",
|
|
"Ja, lauter bitte.",
|
|
"lauter"
|
|
],
|
|
[
|
|
"Wo möchtest du sitzen?",
|
|
"Am Fenster, bitte.",
|
|
"Fenster"
|
|
],
|
|
[
|
|
"Was möchtest du Oma sagen?",
|
|
"Ich hab dich lieb und vermisse dich.",
|
|
"lieb vermissen"
|
|
]
|
|
],
|
|
"hi": [
|
|
[
|
|
"क्या तुम कुछ पीना चाहते हो?",
|
|
"हाँ, मुझे सेब का जूस चाहिए।",
|
|
"हाँ सेब जूस"
|
|
],
|
|
[
|
|
"आज तुम कैसा महसूस कर रहे हो?",
|
|
"मैं थका हुआ हूँ और मेरे सिर में दर्द है।",
|
|
"थका सिर दर्द"
|
|
],
|
|
[
|
|
"आज दोपहर हम क्या करें?",
|
|
"चलो पार्क चलते हैं।",
|
|
"पार्क"
|
|
],
|
|
[
|
|
"क्या तुम्हें भूख लगी है?",
|
|
"नहीं, मैंने अभी खाना खाया है।",
|
|
"नहीं खाना"
|
|
],
|
|
[
|
|
"कहाँ दर्द हो रहा है?",
|
|
"मेरे पेट में बाईं तरफ दर्द है।",
|
|
"पेट दर्द बाईं"
|
|
],
|
|
[
|
|
"तुम क्या देखना चाहते हो?",
|
|
"क्या हम फुटबॉल मैच देख सकते हैं?",
|
|
"फुटबॉल देखना"
|
|
],
|
|
[
|
|
"क्या कमरा ठीक है?",
|
|
"यहाँ बहुत ठंड है।",
|
|
"ठंड"
|
|
],
|
|
[
|
|
"तुम किसे फ़ोन करना चाहते हो?",
|
|
"मैं अपनी बहन को फ़ोन करना चाहता हूँ।",
|
|
"बहन फ़ोन"
|
|
],
|
|
[
|
|
"आज स्कूल में तुमने क्या किया?",
|
|
"हमने कला की कक्षा में चित्र बनाए।",
|
|
"चित्र कला"
|
|
],
|
|
[
|
|
"क्या तुम्हें कुछ चाहिए?",
|
|
"कृपया मुझे बैठने में मदद करो।",
|
|
"मदद बैठना"
|
|
],
|
|
[
|
|
"क्या तुम्हें फ़िल्म पसंद आई?",
|
|
"हाँ, बहुत मज़ेदार थी।",
|
|
"हाँ मज़ेदार"
|
|
],
|
|
[
|
|
"क्या तुम चलने के लिए तैयार हो?",
|
|
"रुको, मुझे अपना चश्मा चाहिए।",
|
|
"रुको चश्मा"
|
|
],
|
|
[
|
|
"रात के खाने में क्या खाओगे?",
|
|
"मुझे टमाटर की चटनी के साथ पास्ता चाहिए।",
|
|
"पास्ता टमाटर"
|
|
],
|
|
[
|
|
"तुम्हारी रात कैसी रही?",
|
|
"मुझे ठीक से नींद नहीं आई।",
|
|
"नींद नहीं"
|
|
],
|
|
[
|
|
"लो, हो गया।",
|
|
"तुम्हारी मदद के लिए बहुत धन्यवाद।",
|
|
"धन्यवाद मदद"
|
|
],
|
|
[
|
|
"क्या तुम बाहर जाना चाहते हो?",
|
|
"अभी नहीं, शायद बाद में।",
|
|
"अभी नहीं बाद में"
|
|
],
|
|
[
|
|
"क्या हुआ?",
|
|
"मैं परेशान हूँ क्योंकि कोई मुझे नहीं समझता।",
|
|
"परेशान समझना"
|
|
],
|
|
[
|
|
"क्या मैं गाना तेज़ कर दूँ?",
|
|
"हाँ, और तेज़ करो।",
|
|
"तेज़"
|
|
],
|
|
[
|
|
"तुम कहाँ बैठना चाहते हो?",
|
|
"खिड़की के पास, कृपया।",
|
|
"खिड़की"
|
|
],
|
|
[
|
|
"दादी से क्या कहना चाहते हो?",
|
|
"मैं आपसे प्यार करता हूँ और आपको याद करता हूँ।",
|
|
"प्यार याद"
|
|
]
|
|
],
|
|
"sw": [
|
|
[
|
|
"Unataka kunywa kitu?",
|
|
"Ndiyo, nataka juisi ya tufaha.",
|
|
"ndiyo juisi tufaha"
|
|
],
|
|
[
|
|
"Unajisikiaje leo?",
|
|
"Nimechoka na kichwa kinauma.",
|
|
"nimechoka kichwa kuuma"
|
|
],
|
|
[
|
|
"Tufanye nini mchana huu?",
|
|
"Twende bustanini.",
|
|
"bustani"
|
|
],
|
|
[
|
|
"Una njaa?",
|
|
"Hapana, nimekula chakula cha mchana sasa hivi.",
|
|
"hapana nimekula"
|
|
],
|
|
[
|
|
"Unaumia wapi?",
|
|
"Tumbo linauma upande wa kushoto.",
|
|
"tumbo kuuma kushoto"
|
|
],
|
|
[
|
|
"Unataka kutazama nini?",
|
|
"Tunaweza kutazama mechi ya mpira?",
|
|
"tazama mpira"
|
|
],
|
|
[
|
|
"Chumba kiko sawa?",
|
|
"Kuna baridi sana humu.",
|
|
"baridi"
|
|
],
|
|
[
|
|
"Unataka kumpigia nani simu?",
|
|
"Nataka kumpigia dada yangu simu.",
|
|
"piga simu dada"
|
|
],
|
|
[
|
|
"Ulifanya nini shuleni leo?",
|
|
"Tulichora picha katika somo la sanaa.",
|
|
"chora sanaa"
|
|
],
|
|
[
|
|
"Unahitaji kitu?",
|
|
"Tafadhali nisaidie kukaa.",
|
|
"saidia kukaa"
|
|
],
|
|
[
|
|
"Ulipenda filamu?",
|
|
"Ndiyo, ilikuwa ya kuchekesha sana.",
|
|
"ndiyo kuchekesha"
|
|
],
|
|
[
|
|
"Uko tayari kwenda?",
|
|
"Subiri, nahitaji miwani yangu.",
|
|
"subiri miwani"
|
|
],
|
|
[
|
|
"Ungependa kula nini jioni?",
|
|
"Ningependa tambi na mchuzi wa nyanya.",
|
|
"tambi nyanya"
|
|
],
|
|
[
|
|
"Usiku ulikuwaje?",
|
|
"Sikulala vizuri.",
|
|
"lala vibaya"
|
|
],
|
|
[
|
|
"Haya, tumemaliza.",
|
|
"Asante sana kwa msaada wako.",
|
|
"asante msaada"
|
|
],
|
|
[
|
|
"Unataka kwenda nje?",
|
|
"Si sasa, labda baadaye.",
|
|
"si sasa baadaye"
|
|
],
|
|
[
|
|
"Kuna nini?",
|
|
"Nimechanganyikiwa kwa sababu hakuna anayenielewa.",
|
|
"nimechanganyikiwa kuelewa"
|
|
],
|
|
[
|
|
"Niongeze sauti ya muziki?",
|
|
"Ndiyo, ongeza tafadhali.",
|
|
"ongeza"
|
|
],
|
|
[
|
|
"Unataka kukaa wapi?",
|
|
"Karibu na dirisha, tafadhali.",
|
|
"dirisha"
|
|
],
|
|
[
|
|
"Unataka kumwambia bibi nini?",
|
|
"Nakupenda na nimekukumbuka.",
|
|
"penda kumbuka"
|
|
]
|
|
]
|
|
}
|