Skip to content

feat: Voice Persona Chat — live Venice character conversations - #382

Open
hassan1731996 wants to merge 1 commit into
openhome-dev:devfrom
hassan1731996:feature/voice-persona-chat
Open

hassan1731996 wants to merge 1 commit into
openhome-dev:devfrom
hassan1731996:feature/voice-persona-chat

Conversation

@hassan1731996

Copy link
Copy Markdown
Contributor

What This Does

Adds voice-persona-chat — the first OpenHome ability to use Venice.ai's native character_slug API parameter. Users talk to historical and public figures by voice: Einstein explains relativity in his own style, Socrates asks probing questions, Alan Watts riffs on consciousness. The character engine is Venice's built-in persona system, not a generic LLM with a text system prompt.

Why It's Unique

Nothing in the catalog generates character-authentic responses at this level. dungeon-master-voice gets closest but injects personality via a text system prompt into the generic OpenHome LLM — the same model that self-censors and lacks real character knowledge depth. Venice's character_slug applies a trained persona that knows the character's actual biography, writings, speech patterns, and worldview.

How It Works

Three entry paths ordered fastest to slowest:

  1. Name in trigger — "talk to Einstein" → matches inline → one confirm → chat starts
  2. Returning user — remembers last character → "Want to talk to Einstein again?" → one confirm → chat starts
  3. Full selection — live roster fetched from Venice API → user speaks name → LLM fuzzy match → confirm → chat starts

Character greets the user with a self-introduction on connect. Exit with "stop", "goodbye", or "that's all" — the character delivers an in-character farewell.

Technical Notes

  • Venice API calls: GET /characters for live roster, POST /chat/completions with venice_parameters.character_slug
  • Roster is live — no hardcoded character list, grows automatically as Venice adds new characters
  • Storage: one key (voice_persona_chat_prefs) with create-first upsert pattern
  • No background daemon required
  • SDK compliance: no asyncio, no print(), no open(), resume_normal_flow() in finally

Patterns Applied

  • get_single_key unwrap: .get("value", raw) ✅
  • Storage upsert: create_key + success check → update_key ✅
  • LLM guards: all text_to_text_response() calls wrapped in (... or "") ✅
  • resume_normal_flow() in finally block ✅
  • Two-tier exit detection: token match for short words, phrase match for multi-word ✅
  • No asyncio, no print(), no hardcoded keys ✅

Setup Required

Users need a Venice API key added to OpenHome settings under venice_api_key.

Trigger Phrases

  • "talk to Einstein" / "chat with Socrates"
  • "let me talk to Alan Watts"
  • "persona chat" / "character chat" / "voice persona"
  • "connect me to Shakespeare"

Test Plan

  • Trigger with name ("talk to Einstein") → skips roster, confirms, connects
  • Trigger without name → roster spoken → name selected → confirmed → chat starts
  • Return session → "Want to talk to X again?" → yes → instant connect
  • Chat loop: multi-turn responses in character style
  • Exit words ("stop", "goodbye") → in-character farewell → clean exit
  • Empty Venice key → error spoken, clean exit, no crash
  • validate_ability.py ✅ flake8 ✅

@hassan1731996
hassan1731996 requested a review from a team as a code owner September 20, 2026 09:35
@github-actions

Copy link
Copy Markdown
Contributor

🔀 Branch Merge Check

PR direction: feature/voice-persona-chat → dev

✅ Passed — feature/voice-persona-chat → dev is a valid merge direction

@github-actions

github-actions Bot commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Community PR Path Check — Passed

All changed files are inside the community/ folder. Looks good!

@github-actions github-actions Bot added the community-ability Community-contributed ability label Sep 20, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Lint Results

✅ __init__.py — Empty as expected

Files linted: community/voice-persona-chat/main.py

✅ Flake8 — Passed

✅ All checks passed!

@github-actions

Copy link
Copy Markdown
Contributor

✅ Ability Validation Passed

📋 Validating: community/voice-persona-chat
  ✅ All checks passed!

@hassan1731996
hassan1731996 force-pushed the feature/voice-persona-chat branch from 8223d01 to 33307d5 Compare September 24, 2026 13:52
@hassan1731996
hassan1731996 requested a review from a team as a code owner September 24, 2026 13:52
…aracter_slug

First ability in the catalog to use Venice.ai's native character_slug API parameter,
which applies authentic character personas (style, knowledge, mannerisms) that the
built-in OpenHome LLM cannot replicate. Users talk to Einstein, Socrates, Alan Watts,
and any other featured Venice character by voice, with three zero-friction entry paths:
name in trigger utterance, returning-user memory, or live roster selection.
@hassan1731996
hassan1731996 force-pushed the feature/voice-persona-chat branch from 33307d5 to 102e30b Compare September 25, 2026 21:18

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-ability Community-contributed ability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant