Zoom AI plugin for LiveKit Agents
Support for Zoom Scribe speech-to-text, in two modes:
- Live (docs): streaming over WebSocket. Scribe's own VAD ends each speech turn and returns its final transcript.
- Fast (docs): one HTTP request per utterance. Not streaming, so
AgentSessionpairs it with a VAD.
See zoom.ai for all Zoom AI Services APIs and features.
Installation
pip install livekit-plugins-zoom-ai
Or install with the LiveKit Agents extra:
uv add "livekit-agents[zoom-ai]"
Pre-requisites
The plugin needs a Zoom AI Services API key. Create one in Zoom Platform Studio under Credentials → API Keys, with the Scribe permissions.
Set it in your .env file:
ZOOM_AI_API_KEY=<your_zoom_api_key>
Usage
Scribe Live (streaming)
Scribe detects the end of each turn, so let the STT drive turn detection:
from livekit.agents import AgentSession
from livekit.plugins import zoom_ai
session = AgentSession(
stt=zoom_ai.STT(language="en-US"),
turn_handling={"turn_detection": "stt"},
# ... llm, tts, etc.
)
Scribe Fast (per utterance)
from livekit.agents import AgentSession
from livekit.plugins import silero, zoom_ai
session = AgentSession(
stt=zoom_ai.STT(mode="fast"),
vad=silero.VAD.load(), # cuts the audio into utterances
# ... llm, tts, etc.
)
Without an agent
Both modes also work on their own, for example for transcription. Outside an agent job, pass an aiohttp session:
stt = zoom_ai.STT(http_session=session, silence_duration_ms=600) # Live
stream = stt.stream() # push_frame() audio, then iterate the stream for SpeechEvents
event = await zoom_ai.STT(mode="fast", http_session=session).recognize(frames) # Fast
For transcription, a longer silence_duration_ms (such as 600) keeps sentences with pauses together and can improve accuracy; the 350 ms default is tuned for voice agents.
Options
Options map to the Scribe API fields of the same name; see the Scribe docs for what each one does and its availability. For a Scribe feature without an option here, pass its fields in extra_kwargs.
| Option | Default | Description |
|---|---|---|
mode |
"live" |
"live" (streaming) or "fast" (one request per utterance) |
api_key |
$ZOOM_AI_API_KEY |
Zoom AI Services API key |
language |
"en-US" |
Recognition language (supported languages); a regional variant Scribe doesn't list uses its base language's locale (en-GB → en-US) |
model |
None |
Recognition model; None uses Scribe's default |
language_detection |
None |
Language detection mode (Live supports "continuous"); the language Scribe detects is in SpeechData.language. With zoom-scribe-multilingual in Live, set it to get each final's language |
silence_duration_ms |
350 |
Live: silence (ms) that ends a turn; None uses Scribe's default |
diarization |
False |
Speaker labels: SpeechData.speaker_id, or metadata["speaker_segments"] when several people speak in one final |
word_time_offsets |
False |
Fast: word timings in SpeechData.words |
channel_separation |
False |
Fast: recognize each stereo channel separately; channels in metadata["channel_segments"] |
vocabulary |
None |
Words and phrases to recognize, such as names and product terms |
text_polishing |
False |
Polished text as the transcript, with the original in metadata["transcript"]; if polishing fails, the original text. en-US only |
extra_kwargs |
None |
Other Scribe request fields, e.g. {"config": {"language_detection": {"candidate_languages": ["en-US", "fr-FR"]}}} to restrict language detection |
base_url |
https://api.zoom.us/v2/aiservices/scribe |
Scribe API base URL |
Metadata
Release files for livekit-plugins-zoom-ai 1.8.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| livekit_plugins_zoom_ai-1.8.11.tar.gz | 18.2 kB | With provenance | Details for livekit_plugins_zoom_ai-1.8.11.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| livekit_plugins_zoom_ai-1.8.11-py3-none-any.whl | Python 3 | none | any | Details for livekit_plugins_zoom_ai-1.8.11-py3-none-any.whl |
Total release size: 37.0 kB
Release files / livekit_plugins_zoom_ai-1.8.11.tar.gz
| Download URL | livekit_plugins_zoom_ai-1.8.11.tar.gz |
|---|---|
| Size | 18.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ac05b854c8b335ea2540e12839b9c9846015abad09fed1abd2e65a3a2949fdf1
|
|
BLAKE2b-256 checksum How to use checksums |
3cf82d8e87c8a2562921438ada2ec5b0a18222a11b102dedbf6d59f7f95517c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.
Transparency logRelease files / livekit_plugins_zoom_ai-1.8.11-py3-none-any.whl
| Download URL | livekit_plugins_zoom_ai-1.8.11-py3-none-any.whl |
|---|---|
| Size | 18.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dda533abbafd61f33222d4454bffb2d6af173201b7d70f4ddea47b53d8fc4bb3
|
|
BLAKE2b-256 checksum How to use checksums |
f73f3c2acbcc2a3a6440c0c3e4bbfbd421c047c6068c3ebb944a6580ee511fa2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.
Transparency logSecurity for livekit-plugins-zoom-ai 1.8.11
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for livekit_plugins_zoom_ai-1.8.11.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.