Skip to content

Add metadata/descriptions for voice file variations #3

@EmZod

Description

@EmZod

Problem

When multiple variations of the same voice exist (e.g., morgan_freeman.wav, morgan_freeman2.wav, morgan_freeman3.wav), there's no way to know what differentiates them without trying each one.

Perspective: As an AI agent, when a user requests "Morgan Freeman voice," I see 3 files with no metadata. I can't make an informed choice - is variation 3 longer sample? Different tone? Better quality? Third take?

Current Behavior

$ ls ~/.chatter/voices/
morgan_freeman.wav    # ??? 
morgan_freeman2.wav   # ???
morgan_freeman3.wav   # ???
alan_watts.wav        # ???

No way to distinguish without trial-and-error.

Proposed Solutions

Option 1: Companion JSON metadata

~/.chatter/voices/
├── morgan_freeman.wav
├── morgan_freeman.json       # {"duration": "30s", "tone": "authoritative", "notes": "Best for narration"}
├── morgan_freeman2.wav
├── morgan_freeman2.json      # {"duration": "15s", "tone": "conversational", "notes": "Shorter sample"}

Option 2: Voice listing command

$ speak voices --list
morgan_freeman.wav       30s | Authoritative tone, best for narration
morgan_freeman2.wav      15s | Conversational, shorter sample  
morgan_freeman3.wav      52s | Longest sample, most expressive
alan_watts.wav           32s | Philosophical tone, slow cadence

Option 3: Descriptive filenames (breaking change)

morgan_freeman_narration_30s.wav
morgan_freeman_conversational_15s.wav
morgan_freeman_expressive_52s.wav

Recommended Solution

Option 2 (voice listing command) - No breaking changes, easily extensible, works with existing files.

Bonus: Combine with --preview flag for quick sampling:

speak voices --list --sample    # Plays 3-second sample of each voice

Impact

  • Medium - Improves voice selection UX
  • Reduces trial-and-error
  • Enables agents to make informed choices

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions