Generator Bajek

Powered by the Portable Animator engine

Portable Animator is a lightweight animation and scene-synthesis engine. Generator Bajek is its flagship, finished application that puts these capabilities into practice.

Local-first workflow that supports full offline execution, with optional high-res cloud render. By default, story text is generated through AWS Bedrock and images through Azure, each falling back to the local pipeline automatically when the cloud is unavailable. Speech recognition, speech synthesis and video assembly always run on your own machine.

User Interface

The screenshots below come from the running desktop application.

„Nowa Bajka” (New Story) screen — the form with the child's age and the story language
New Story (Nowa Bajka) The user enters the child’s age and picks a language — the app guides them step by step · click to enlarge
„Moje Bajki” (My Stories) screen — the library of previously generated stories
My Stories (Moje Bajki) A library of finished stories, with a refresh option · click to enlarge
„Muzyka” (Music) screen — the track library filtered by mood
Music Library (Biblioteka Muzyki) The soundtrack is selected automatically, with a mood filter · click to enlarge
„Asystent” (Assistant) screen — ask a question, optionally hear the answer read aloud
Assistant (Asystent) Chat support, with the option to have the answer read aloud · click to enlarge

Interactive Demo — Skeletal Playback

This is an illustrative demo, not the production pipeline. A 2D canvas renders a scene graph: a JSON document describes a 2D character skeleton (root, hips, torso, neck, head, arms, legs) where every bone inherits its parent's transform. Two keyframe clips (Idle and Run cycle) are interpolated with a Catmull–Rom spline inside a requestAnimationFrame loop. It is fully deterministic: the same scrubber position always gives the same pose. Nothing here generates images or speech, and no model is called — the skeleton and keyframes are illustrative sample data, not an export from a real project. TTS and video assembly run locally in the desktop application; image generation runs there too, but through a cloud model by default, with the local pipeline as its fallback. Not in this page.

Pipeline Architecture

  • Text advisor: Default: Claude Haiku 4.5 via AWS Bedrock (cloud). Automatic fallback to the local GGUF model (2.2 GB on disk) on any Bedrock error — no network, no AWS credentials, rate limit.
  • Image generation: Default: Azure GPT-Image (cloud). Automatic fallback to FastSD CPU — a local, CPU-only inference pipeline — on any cloud error (no network, no credentials, rate limit), with a placeholder image as a last resort.
  • Speech recognition (STT): offline model
  • Speech synthesis (TTS): local voices
  • Frame orchestration and video assembly: frames and the audio track are joined locally into a single file with moviepy (H.264/AAC, 24 fps)
Target architecture: scenes as independent DAG nodes Specification (docs/PORTABLE_ANIMATOR_ROADMAP.md) -- not yet implemented, today's pipeline is monolithic Scene 1 depends_on: [] Scene 2 depends_on: [] Scene 3 depends_on: [1, 2] Scene 4 (selected) depends_on: [3] input_fingerprint = hash(prompt+assets+ timing+camera) -- skip if unchanged Scene Inspector Prompt Assets Timing Camera Dependencies Three regeneration levels: 1) single scene atom 2) scene + DAG successors 3) full project recompute (today's behavior, kept as fallback) Today's data model: a flat `scenes` list with no IDs (mock_video.projekt.json). Target: nodes with explicit ID + depends_on -- see PORTABLE_ANIMATOR_ROADMAP.md §2.2.

Roadmap

The Scene DAG above is a specification today, not implemented code -- see the full roadmap and current status on the project roadmap.