other
- Location
scripts/speaker.py:69- Finding
Task Guidance Is Transmitted to an External TTS Service Without Explicit Privacy Consent
- Content
View full analysis
None: try: with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as f: tmp = f.name tts = gTTS(text=text, lang=self.lang, slow=(self.speed < 0.8)) tts.save(tmp) self._play_audio_file(tmp, block) Path(tmp).unlink(missing_ok=True) except Exception as e: print(f"[speaker] gTTS error: {e}") ``` The corresponding default configuration selects the online engine: ```yaml tts: engine: "gtts" # "gtts" (online) or "pyttsx3" (offline) lang: "en" speed: 1.0 volume: 1.0 enabled: true ``` ### Technical Analysis When speech output is requested, `gTTS` processes the supplied text through Google's online text-to-speech service. The text passed to this method can include generated step titles, difficulty classifications, and safety warnings derived from the user's task. The configuration comments identify `gtts` as online, but the program does not display a runtime privacy warning or obtain explicit consent immediately before transmitting text. Users may reasonably interpret speech generation as local audio processing, particularly because an offline engine is also supported. No evidence was found that image or video bytes are directly uploaded through this path. The exposed information is limited to text passed into `Speaker.speak`, such as generated task guidance. ### Attack Path 1. A user supplies an image, video, or task context that concerns private equipment or activity. 2. The application derives operating guidance from that context. 3. The user invokes the application with `--speak`. 4. `Speaker._speak_step` constructs text containing the step title, difficulty, and safety wa ...[truncated 949 chars]- Remediation
View remediation
