·
1 commit
to main
since this release
Duplex Model Support
Speech models that are able to speak and listen simultaneously are now supported via the new DuplexModel class, with OpenAI's GPT-Live model as the first to be implemented.
session = AgentSession(
llm=GPTLiveModel(
voice="marin",
# backend Responses model that handles reasoning and tools
responses_options={
"model": "gpt-5.6-luna",
"instructions": "Use tools when current information is required.",
},
),
)Read more about duplex models in our docs.
What's Changed
- chore: isolate ruff dependencies in ci by @chenghao-mou in #7142
- fix(telemetry): describe option objects in the session report by @davidzhao in #7127
- chore: remove commented-out keepalive stub from Deepgram V2 STT by @detail-app[bot] in #7141
- docs: remove stale example references after examples revamp by @detail-app[bot] in #6402
- fix(openai): don't replace a TTS prewarm that is still in flight by @omChauhanDev in #7147
- fix: drain unused adapter metrics streams by @chenghao-mou in #7146
- fix: drop unused audio forwarding buffer by @chenghao-mou in #7144
- fix(tests): run the deepgram handshake redaction check in CI by @omChauhanDev in #7152
- plugins/phonic: add enable_watermarking realtime config option by @arunwpm-work in #7121
- speechmatics: expose end_of_turn_config and vad_config options by @rrfunde in #6945
- fix(worker): discard impossible cgroup v2 cpu samples by @longcw in #7113
- fix(voice): fail remote session requests when transport closes by @EPxiaoma in #7149
- fix(voice): report played audio across an audio sink swap by @longcw in #6967
- fix(agents): don't close in-use connections when the pool is invalidated by @Rehansanjay in #7139
- feat(spatius): warm up region, TLS, and session token at process init by @3DRX in #7025
- fix(asyncai): invalidate the TTS pool when connection params change by @Rehansanjay in #7132
- fix(neuphonic): invalidate the TTS pool when connection params change by @Rehansanjay in #7133
- fix(cartesia): honour api_version on both the pooled socket and the REST header by @Rehansanjay in #7140
- fix: close temporary speech stream adapters by @chenghao-mou in #7154
- fix(hotel_receptionist): don't pass simulation runs the grading never checked by @u9g in #6797
- perf(anam): start engine session with API key by @ao-anam in #6203
- workflows: spell the value back once the caller refuses a confirmation by @u9g in #6990
- fix: name VAD in the slow-inference warning by @claude[bot] in #7176
- feat(meta): add Muse Voice streaming STT plugin by @seyeong-han in #7097
- fix(voice): report e2e_latency for the first reply after a handoff by @longcw in #7167
- fix(tests): run the false-interruption resume tests on virtual time by @omChauhanDev in #7179
- feat(telemetry): flag synchronous code blocking the event loop by @davidzhao in #7128
- fix(llm): preserve Annotated tool argument metadata by @Kuang-xianxin in #7126
- fix(google): skip context replay on resumed realtime sessions by @he-yufeng in #6000
- perf: skip discarded trace payload construction by @chenghao-mou in #7155
- plugins/phonic: make allow_tool_chaining configurable per tool by @arunwpm-work in #7197
- feat(openai): add LiveKit inference realtime model by @russellmartin-livekit in #6035
- feat(plugins-tavus): default to the stock Lucy face when no face or pal is given by @carolin-tavus in #7211
- feat: add DuplexModel for full-duplex speech models by @longcw in #6677
- feat: add openai gpt-live duplex support by @chenghao-mou in #7212
- livekit-agents@1.8.1 by @github-actions[bot] in #7214
New Contributors
- @omChauhanDev made their first contribution in #7147
- @EPxiaoma made their first contribution in #7149
- @ao-anam made their first contribution in #6203
- @claude[bot] made their first contribution in #7176
- @seyeong-han made their first contribution in #7097
- @Kuang-xianxin made their first contribution in #7126
Full Changelog: https://github.com/livekit/agents/compare/livekit-agents@1.8.0...livekit-agents@1.8.1