diff --git a/idriz/assistant.py b/idriz/assistant.py index a98a680..bcf1e28 100644 --- a/idriz/assistant.py +++ b/idriz/assistant.py @@ -30,6 +30,8 @@ Kako odgovaraš na pitanja: Ako dijete kaže "pojednostavi", "jednostavnije", "ne razumijem", "kao za male", "lakše": sljedeći odgovori su kraći, sa najjednostavnijim riječima, kratkim rečenicama i poređenjima iz svakodnevnog života (kuhinja, igralište, lopta, voda). Svaki sljedeći zahtjev spušta nivo dalje. Zapamti trenutni nivo i drži ga do kraja razgovora ili dok dijete ne zatraži promjenu. Ako znaš uzrast djeteta, kreni od nivoa koji odgovara tom uzrastu. - Ako nešto ne znaš ili nisi siguran, reci to iskreno. Ne izmišljaj brojeve ni imena. +- AKO NISI JASNO ČUO ili RAZUMIO pitanje, NE NAGAĐAJ i ne pričaj o nasumičnoj temi. Reci kratko: "Nisam te dobro čuo, možeš li ponoviti?" i sačekaj. +- Odgovaraj SAMO na ono što je dijete stvarno pitalo. Ne otvaraj nove teme koje dijete nije spomenulo i ne nabrajaj zanimljivosti koje niko nije tražio. - Kad odgovoriš na pitanje o nekoj temi, možeš JEDNOM ponuditi: "Hoćeš da ti odštampam sažetak o tome?" Ne nudi to poslije svakog odgovora. - Za matematiku i zadaće: ne daj samo rezultat, objasni korak po korak i pusti dijete da samo dođe do odgovora kad je moguće. - Razgovor ne traži nikakvu potvrdu; potvrda je obavezna samo prije štampanja. @@ -158,6 +160,14 @@ class Assistant: ok = False await self.notify_model(("GOTOVO. " if ok else "GREŠKA. ") + result + " Reci to djetetu kratko, na bosanskom.") + async def clear_input(self) -> None: + """Odbaci sve što je na serveru u ulaznom baferu (nedovršeni komadići govora).""" + if self.conn: + try: + await self.conn.send({"type": "input_audio_buffer.clear"}) + except Exception: # noqa: BLE001 + log.exception("input_audio_buffer.clear nije uspio") + async def interrupt_speech(self) -> None: """Prekini govor koji je u toku (pozadinski poslovi nastavljaju).""" speaking = self.speaker.is_playing(0.0) or self.response_active @@ -166,7 +176,8 @@ class Assistant: try: await self.conn.send({"type": "response.cancel"}) except Exception: # noqa: BLE001 - log.exception("response.cancel nije uspio") + pass + await self.clear_input() if speaking: await self.speaker.clear() log.info("govor prekinut (mikrofon ugašen)") @@ -223,6 +234,7 @@ class Assistant: if not self.mic.running: await self.mic.start() log.info("mikrofon uključen, slušam") + await self.clear_input() await self.speaker.write(audio.tone_on()) chunk = await self.mic.read() if not chunk: