Skip to content

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

Closed
hassan1731996 wants to merge 0 commit into
openhome-dev:devfrom
hassan1731996:dev
Closed

hassan1731996 wants to merge 0 commit into
openhome-dev:devfrom
hassan1731996:dev

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

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"

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

Copy link
Copy Markdown
Contributor

🔀 Branch Merge Check

PR direction: dev → dev

❌ Failed — Cannot merge 'dev' into 'dev'. Use your feature branch (e.g. slow-music -> dev).

Allowed for community contributors:

your-ability-branch  ->  dev     ✅

Blocked patterns:

anything             ->  main    ❌
dev                 ->  dev     ❌
main                ->  dev     ❌

Close this PR and re-open it with the correct branch direction.

@github-actions

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

✅ Ability Validation Passed

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

@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!

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