Add Inworld STT provider to livekit-plugins-inworld#5451
Open
cshape wants to merge 1 commit intolivekit:mainfrom
Open
Add Inworld STT provider to livekit-plugins-inworld#5451cshape wants to merge 1 commit intolivekit:mainfrom
cshape wants to merge 1 commit intolivekit:mainfrom
Conversation
0daf792 to
35acfa0
Compare
ianbbqzy
reviewed
Apr 14, 2026
livekit-plugins/livekit-plugins-inworld/livekit/plugins/inworld/stt.py
Outdated
Show resolved
Hide resolved
livekit-plugins/livekit-plugins-inworld/livekit/plugins/inworld/stt.py
Outdated
Show resolved
Hide resolved
a850403 to
82b9dd7
Compare
livekit-plugins/livekit-plugins-inworld/livekit/plugins/inworld/stt.py
Outdated
Show resolved
Hide resolved
Add streaming speech-to-text support via Inworld's WebSocket STT API alongside the existing TTS plugin. The implementation follows established LiveKit plugin patterns (Deepgram, Soniox, Google) including reconnection logic, stream tracking, START/END_OF_SPEECH events, and request_id. - STT class with streaming and sync recognition - SpeechStream with reconnection loop and _reconnect_event - WeakSet stream tracking for coordinated shutdown - Pass-through model selection (no hardcoded model list) - update_options() for runtime config changes - Voice profile and VAD configuration support - Example agent and standalone test script
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.
Summary
livekit-plugins-inworldpackage via Inworld's WebSocket STT API (wss://api.inworld.ai/stt/v1/transcribe:streamBidirectional)tasks_groupcleanup, stream tracking, START/END_OF_SPEECH events, and request_idinworld/inworld-stt-1)endOfTurnConfidenceThreshold=0.3,minEndOfTurnSilenceWhenConfident=200ms) for low-latency voice agent useSpeechData.metadata["voice_profile"]update_options()for runtime config changesmetadata: dict[str, Any] | Nonefield toSpeechDatainlivekit-agentsfor plugin-specific data (backwards-compatible, defaults toNone)Changes
livekit-agents/livekit/agents/stt/stt.py— Add optionalmetadatafield toSpeechDatafor plugin-specific datalivekit-plugins/livekit-plugins-inworld/livekit/plugins/inworld/stt.py— New STT + SpeechStream implementationlivekit-plugins/livekit-plugins-inworld/livekit/plugins/inworld/__init__.py— Add STT/SpeechStream exportslivekit-plugins/livekit-plugins-inworld/pyproject.toml— Update description/keywords for STT+TTSlivekit-plugins/livekit-plugins-inworld/README.md— Add STT usage docsexamples/voice_agents/inworld_agent.py— Voice agent using Inworld STT+TTS.gitignore— Add.envUsage
Test plan
update_options()works for runtime model changesruff checkandruff formatpassmypytype checks pass (resolved all 11 prior errors)SpeechDatamay need separate PR if CI runs cross-package)