Downloads · 30 days
0
lemonade-sdk/RPG-HaloTales-V2
RPG-HaloTales-V2 is a text-to-speech model from lemonade-sdk. Use it when you need text read aloud. It is set up for lemonade. The card lists the license as apache-2.0.
A self-contained, turn-based illustrated and voiced RPG storyteller, packaged as a Lemonade Omni Model. On each turn it returns three things: a freshly generated 1024×512 widescreen scene image, narration audio, and t…
Downloads · 30 days
0
Access
Public
Updated Aug 20, 2026
Repo size
—
Likes
1
Public
Click a slice to open those files.
.json8.8 KB · 57%
From the Hugging Face model README
A self-contained, turn-based illustrated and voiced RPG storyteller, packaged as a Lemonade Omni Model. On each turn it returns three things: a freshly generated 1024×512 widescreen scene image, narration audio, and the same narration as second-person prose. Any OpenAI-compatible omni client can run it — pull the model, select it, and send messages to play.
| Modality | Model |
|---|---|
| Planner LLM | Qwen3.8-27B (dense) |
| Image generation + editing | Flux-2-Klein-9B |
| Speech-to-text | Whisper-Large-v3-Turbo |
| Text-to-speech | kokoro-v1 |
The storyteller behavior lives entirely in the collection's system_prompt and the planner's pinned server arguments; Lemonade's OmniRouter executes the generate_image / edit_image / text_to_speech tools server-side and embeds the results in each reply. World and character state are carried in the conversation history.
lemonade pull lemonade-sdk/RPG-HaloTales-V2
Select RPG-HaloTales-V2 in an omni client and send a first message that establishes the setting, the player's role, and any key characters. Each subsequent message is the player's action; the model advances the scene. Each reply also appends a compact ---CONTINUITY--- record (the model's fixed character/scene canon plus a turn-protocol footer) below the narration — it is metadata used to keep appearances and behavior consistent, not part of the story text.
Sampling: temperature 0.3 is baked into the planner and is load-bearing — in testing, raising it to 0.45 reintroduced turns that skip image/audio generation. Let the baked-in defaults stand; avoid overriding sampling from the client.
These are the changes that turned an inconsistent storyteller into a coherent, fast one. They were established with an automated harness that plays multi-turn adventures across genres and measures per-turn format adherence, latency, image canvas, and prose-vs-audio match (by transcribing the narration back through Whisper):
text_to_speech call together, nothing else; Response 2: the narration verbatim plus the continuity record) and includes a full worked example, including literal tool-call JSON. Emitting both tool calls in a single response saves an entire planner round-trip per turn.--reasoning-budget is not enforced when tools are present in the request (the chat template pre-fills the think tag, so the budget sampler never arms), which made "briefly thinking" planners stall for minutes. --reasoning off eliminates the tail entirely, and Qwen tool calling is more reliable without thinking.[generated image]), and after a couple of turns the planner starts imitating those records instead of calling the tools — no prompt wording reliably prevented it. The planner args therefore hard-ban the [-family tokens (making the placeholder text unemittable) and add a small positive bias on the <tool_call> opener token, which anchors every turn's first response. The continuity record also opens with a TOOLS: line and ends with a NEXT: protocol footer, so the history itself keeps testifying that every turn runs the tools.edit_image is reserved for single-detail changes within an unchanged shot.text_to_speech, and then repeated word-for-word as the printed text, so the audio and the on-screen words are identical.