Narration
Compiled RobotRoss knowledge page generated from RobotRoss source code, architecture notes, and operational documentation.
Narration Subsystem
1. Role
The Narration subsystem generates Bob Ross-style poetic commentary for each drawing job, providing a unique "personality" to the robot.
2. Key Components
- Local LLM: Apertus 8B (Swiss open-weights, based on Llama 3) running via Ollama.
- Model Model:
MichelRosselli/apertus:8b-instruct-2509-q4_k_m - Voice Output: Kokoro (local TTS) with a macOS
sayfallback.
3. Workflow
- Prompt Generation:
bob_ross.pyconstructs a prompt based on the drawing job (e.g., "a happy little lighthouse"). - Narration JSON: Apertus generates a JSON structure containing:
intro: Spoken before drawing starts.commentary[]: A list of short phrases spoken during drawing at regular intervals.outro: Spoken after the job completes.
- Playback: Commentary is spoken in parallel with the arm movements.
4. Notes and Open Points
- Commentary Timing:
bob_ross.pyuses a hard-codedCOMMENTARY_INTERVAL(default 6 seconds). If the drawing is very simple, some commentary might be cut off. If it is very complex, there might be long periods of silence if the list of phrases is short. - TTS Personality: While the text is generated in the style of Bob Ross, the voice (Kokoro or macOS
say) may lack the specific intonation of the artist, creating a mismatch between text and voice.
Sources:
~/.openclaw/workspace/skills/robot-ross/bob_ross.pyAGENTS/CONTEXT/agentegra.mdAGENTS/CONTEXT/robot_ross_artist.md