Skip to content

feat: Voice Setting PresetsΒ #478

Description

@hrshjswniii

πŸš€ Program

GSSoC

✨ Feature Description

Implement a preset selection system for Voice Synthesis Settings (Stability, Temperature, and Style Exaggeration). Users should be able to pick from a list of pre-configured emotional/tonal presets (such as "Narrator", "Excited", "Robotic", "Soft") to instantly adjust the synthesis settings instead of tuning each slider manually.


πŸ€” Problem It Solves

Adjusting three separate, fine-grained float sliders (ranging from 0 to 1 or 5) is tedious, unintuitive, and relies on trial-and-error:

  • Cognitive Load: Non-technical users do not naturally know how "Stability" vs. "Temperature" interacts to create a natural-sounding voice.
  • Convenience: Conversational context changes rapidly during a call. If a user needs to switch from a calm narrator tone to an excited shout, adjusting multiple sliders takes too long. Presets enable instantaneous switching.

πŸ’‘ Proposed Solution

  1. In [voiceSettings.js], export a map of predefined presets:
    • Narrator / Neutral: Stability: 0.70, Temperature: 0.60, Style Exaggeration: 0.30
    • Excited / Energetic: Stability: 0.40, Temperature: 0.95, Style Exaggeration: 0.75
    • Robotic / Flat: Stability: 0.95, Temperature: 0.10, Style Exaggeration: 0.05
    • Soft / Whispering: Stability: 0.55, Temperature: 0.50, Style Exaggeration: 0.20
  2. Add a Presets dropdown or badge buttons component in the Voice Synthesis Settings card in [Settings.jsx].
  3. Clicking a preset should update the state, slide the controls to their respective positions, and persist the new configuration to localStorage (voiceforge:voiceSettings).
  4. If a user manually slides any individual setting, the preset selector should automatically select a "Custom" label.

πŸ”„ Alternatives Considered

  • Preset Profiles: Storing preset values per voice profile. While highly customizable, this is more complex to implement and could be added as a separate enhancement later. Global presets solve the immediate usability issue.

βœ… Acceptance Criteria

  • A preset selection dropdown or button group is added to the Voice Synthesis Settings panel in the Settings page.
  • Selecting a preset instantly sets Stability, Temperature, and Style Exaggeration sliders to their pre-configured values.
  • Manually modifying any slider automatically shifts the preset designation to "Custom".
  • Presets are persisted to and successfully reloaded from localStorage on page refresh.

πŸ“‹ Additional Context

Voice settings helper definitions:

  • [voiceSettings.js]
    Synthesis configuration UI layout:
  • [Settings.jsx:L254-306]

🌱 Contributor Checklist

  • I am participating via GSSoC
  • I have read the contribution guidelines
  • I checked for existing issues before creating this

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions