Skip to content

Conversation

@Guikingone
Copy link
Contributor

@Guikingone Guikingone commented Nov 22, 2025

Q A
Bug fix? no
New feature? yes
Docs? yes
Issues --
License MIT

Summary:

  • Support for stt / tts and sts
  • Interfaces for SpeechProviders and SpeechListeners
  • Introduction of a SpeechConfiguration
  • New configuration block for configuring providers (requires a platform each time)
  • Introduce SpeechBag and SpeechAwareTrait

@OskarStark
Copy link
Contributor

To me we maybe should introduce capabilities also to platforms rather than having a voice component. As far as I understand I cannot use the Voice component standalone, right?

I don't think a dedicated component is the way to go here

@Guikingone
Copy link
Contributor Author

We can introduce it via the Platform, could be easier, the voice can be used without agents but it will requires the Platform at least.

Will update the PR to match this approach 👍🏻

@OskarStark
Copy link
Contributor

I agree, Agent scope is not needed 👍🏻

@Guikingone Guikingone changed the title [Voice] Introduce the component [Platform] Introduce VoiceProviders and VoiceListeners Nov 23, 2025
@chr-hertel
Copy link
Member

Hi @Guikingone, i agree that week lack some kind of guidance on how voices work - but same goes for other binary stuff like creating images or videos.

so two things i would like to understand

  • what's the high-level goal here - like what do you want to build?
  • why is it an extra component and not part of Platform?

btw, "speech" is more common than "vioce" isn't it?
btw2, have you seen the demo around audio and video?

@Guikingone
Copy link
Contributor Author

Guikingone commented Nov 23, 2025

what's the high-level goal here - like what do you want to build?

The main goal is to add the capacity to have an agent/platform that can "listen" and answer to inputs thanks to voice / speech (voice is used as a sugar here, could be renamed to speech), creating a workflow where you can submit voice, call the platform that transforms it to speech / text (depending on the situation you're in) and returning it to the user without frictions.

why is it an extra component and not part of Platform?

It is now part of Platform, I just pushed an update on it following the comment from @OskarStark.

btw, "speech" is more common than "voice" isn't it?

Agreed, could be renamed to Speech.

btw2, have you seen the demo around audio and video?

Yes, the goal is to ease it with a "built-in" approach / API that stays transparent for the user.

@Guikingone Guikingone changed the title [Platform] Introduce VoiceProviders and VoiceListeners [Platform] Introduce Speech support via Platform Nov 23, 2025
@chr-hertel
Copy link
Member

just realized we should the "audio" demo to "speech" as well - and i'm def not really happy with that solution there.

can we make it as easy as the structured output - like with an listener?

i like that starting point:

$result = $platform->invoke('eleven_multilingual_v2', new Text('Hello world'), [
    'voice' => 'Dslrhjl3ZpzrctukrQSN', // Brad (https://elevenlabs.io/app/voice-library?voiceId=Dslrhjl3ZpzrctukrQSN)
]);

echo $result->asVoice();

what would be the return type here? would it be same as asBinary() or asDataUri()

@Guikingone
Copy link
Contributor Author

can we make it as easy as the structured output - like with an listener?

Could be something to explore, the API is not locked for now.

what would be the return type here? would it be same as asBinary() or asDataUri()

My first approach was to do the same thing as asBinary to ease the usage.

OskarStark added a commit that referenced this pull request Nov 24, 2025
This PR was merged into the main branch.

Discussion
----------

[Demo][Website] Rename audio demo to speech

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| Docs?         |
| Issues        |
| License       | MIT

Following a discussion of #943

Commits
-------

ffc2b64 Rename audio demo to speech
@OskarStark OskarStark changed the title [Platform] Introduce Speech support via Platform [Platform] Introduce Speech support Nov 24, 2025
@Guikingone
Copy link
Contributor Author

Well, might seems weird but here we go, stt, tts and sts are working like a charm ... 👀

@Guikingone Guikingone force-pushed the agent/voice_provider branch 3 times, most recently from 120f391 to 1963409 Compare November 26, 2025 12:42
@Guikingone Guikingone marked this pull request as ready for review November 26, 2025 12:44
@carsonbot carsonbot added Feature New feature Platform Issues & PRs about the AI Platform component Status: Needs Review labels Nov 26, 2025
@Guikingone Guikingone marked this pull request as draft November 26, 2025 12:46
@Guikingone Guikingone marked this pull request as ready for review November 26, 2025 13:00
@Guikingone Guikingone force-pushed the agent/voice_provider branch 5 times, most recently from 3a966f9 to 982bf06 Compare December 5, 2025 10:15
@Guikingone Guikingone requested a review from OskarStark December 5, 2025 10:16
@Guikingone Guikingone force-pushed the agent/voice_provider branch 4 times, most recently from 948eaa5 to 84b6f93 Compare December 7, 2025 19:45
@chr-hertel
Copy link
Member

Haven't made my mind up here yet - it's not clicking with me - currently that change spreads across the entire platform.

is it an option to have it as subscriber for the platform, like STT on invoke and TTS on result? instead of extending the platform interface?

@Guikingone
Copy link
Contributor Author

Haven't made my mind up here yet - it's not clicking with me - currently that change spreads across the entire platform.

I have a solution for this point, thought about this and I have a solution, it would remove adding SpeechConfiguration in every platform.

is it an option to have it as subscriber for the platform, like STT on invoke and TTS on result? instead of extending the platform interface?

If it's related to previous point, let me push a refactoring and we can push further on this one 🙂

@Guikingone Guikingone force-pushed the agent/voice_provider branch 2 times, most recently from 1b4e225 to a0f88b0 Compare December 8, 2025 18:31
@Guikingone
Copy link
Contributor Author

Guikingone commented Dec 8, 2025

Ok, here's the refactoring:

  • A new SpeechAwarePlatform is introduced, the goal is to decorate the "platforms" that supports STT / TTS. In the current state, ElevenLabs is the only one implemented and tested, we expose a getSpeechConfiguration method that returns the current configuration for STT / TTS, no more methods in existing platforms, extra arguments, nothing, just a decorator.

  • A new SpeechAwarePlatformInterface is introduced to enforce the usage of the method and provide a cleaner API for "speech-supporting" platforms and non-supporting ones, if your platform is not decorated, well, you're not supporting it.

  • This refactoring allows to keep the current API "as it" and introduce the speech support without breaking the public API, plus, it's only enabled if one platform that supports STT / TTS is configured, no extra services if not needed.

  • This also improve the current API for providers / listeners plus, it reduce the current usage of providers/listeners to Invocation / Result as you mentioned @chr-hertel.

PS: Not to mention that it reduce the usages of null in methods 😅

@Guikingone Guikingone force-pushed the agent/voice_provider branch 4 times, most recently from 774f1be to e2ef357 Compare December 10, 2025 16:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature New feature Platform Issues & PRs about the AI Platform component Status: Needs Review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants