Add Quickdial plugin for STT and TTS#6490
Open
roshanpuru wants to merge 7 commits into
Open
Conversation
β¦n header on WS (addresses review)
β¦/Hume) Remove SynthesizeStream (TTS) and SpeechStream (STT). Both classes declare streaming=False, so the AgentSession already uses ChunkedStream via StreamAdapter (TTS) and _recognize_impl via VAD (STT); the WS paths were never exercised by the framework and could hang β _recv only broke on socket close, so on a persistent connection asyncio.gather(_send, _recv) never resolved (addresses Devin review). Base tts.TTS.stream()/stt.STT.stream() raise NotImplementedError pointing to StreamAdapter, so removing the overrides is safe.
_recognize_impl already sends the per-request language override in the request config, but the fallback passed to _to_speech_event was hard-coded to the default (self._opts.language). When the server response omits 'language', the transcript was labelled with the default instead of the requested language. Pass the effective cfg['language'] instead (addresses Devin review).
After removing the WS SpeechStream, sample_rate was no longer read anywhere β _recognize_impl sends a WAV whose header carries the rate and the server handles it (same as the OpenAI Whisper STT). Remove the unused constructor param, the _STTOptions field, and the now-unused SAMPLE_RATE/NUM_CHANNELS constants (addresses Devin review).
Author
|
π Ready for a maintainer review whenever someone has a moment.
Happy to make any changes you'd like. One coordination item for merge: the |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a
livekit-plugins-quickdialplugin providing STT and TTS via Quickdial β a CPU-optimized, real-time voice API (no GPU, priced per character). It follows the existing plugin structure (mirrorslivekit-plugins-gnani) and registers viaPlugin.register_plugin.Files
livekit-plugins/livekit-plugins-quickdial/β package (__init__,stt,tts,models,log,version,py.typed,pyproject.toml,README.md)livekit-agents/pyproject.tomlβ added thequickdialoptional-dependency extra.github/next-release/changeset-quickdial-plugin.mdβ changesetexamples/voice_agents/quickdial_agent.pyβ runnable exampleTwo coordination items π
livekit-plugins-quickdialon PyPI (from our standalone build). Happy to transfer the PyPI project to LiveKitβs org so your release bot can publish it β just let me know the account/org to add as owner (or your preferred process).Notes: I was unable to regenerate
uv.lockin my environment β happy for a maintainer to regenerate or point me at the right command. Likewise glad to add unit tests to match your harness, and to adjust anything (copyright headers, versioning) to your conventions. The standalone source also lives at https://github.com/samay-ai/livekit-plugins-quickdial. Thanks!