livekit-plugins-reson8
Reson8 STT plugin for LiveKit Agents.
A single reson8.STT class that adapts to how LiveKit uses it:
- Streaming (
stream(), used by voice agents) connects to the turn-aware endpoint. Reson8 detects conversational turn boundaries server-side: it emits a preflight transcript (an eager guess that the turn is over) that your agent can start responding to, then confirms it as a final transcript — or cancels it if the speaker keeps talking. Great for low-latency voice agents. - Batch (
recognize()) transcribes pre-recorded audio and returns the full transcript.
Languages
Leave language unset to auto-detect the spoken language, or pin recognition
to one or more supported codes. You can pass a single code, a comma-string, or a
list — a list is normalized to Reson8's comma-joined form and any unsupported code
raises ValueError locally.
reson8.STT() # auto-detects the spoken language
reson8.STT(language="en") # English only
reson8.STT(language="nl,de") # Dutch or German
reson8.STT(language=["nl", "de"]) # same, as a list
Supported languages (reson8.SupportedLanguages):
| Code | Language |
|---|---|
de |
German |
en |
English |
es |
Spanish |
fr |
French |
fy |
Frisian |
it |
Italian |
nl |
Dutch |
pl |
Polish |
pt |
Portuguese |
sv |
Swedish |
Installation
pip install livekit-plugins-reson8
Usage
from livekit.plugins import reson8
stt = reson8.STT(
api_key="your-api-key", # or set RESON8_API_KEY
# language is auto-detected when omitted; pass one or more supported codes to pin it
)
With a Voice Agent
from livekit.agents import AgentSession
from livekit.plugins import openai, reson8
session = AgentSession(
stt=reson8.STT(), # streaming + turn detection, language auto-detected
llm=openai.LLM(),
tts=openai.TTS(),
# "stt" hands turn detection to Reson8 and lets the agent start
# generating on our preflight transcript instead of the confirmation.
turn_handling={
"turn_detection": "stt",
"preemptive_generation": {"enabled": True},
},
)
By default LiveKit runs its own turn detector. Set turn_handling as above to
hand turn-taking to Reson8 instead.
Transcribing a file
event = await reson8.STT().recognize(audio_buffer)
print(event.alternatives[0].text)
Configuration
| Parameter | Env var | Default |
|---|---|---|
api_key |
RESON8_API_KEY |
required |
api_url |
RESON8_API_URL |
https://api.reson8.dev |
language |
— | None (auto-detect; one or more of SupportedLanguages, e.g. "nl,de" or ["nl", "de"]) |
sample_rate |
— | 16000 |
encoding |
— | "pcm_s16le" |
channels |
— | 1 |
custom_model_id |
— | None (custom model for recognition biasing) |
include_timestamps |
— | False |
include_words |
— | False |
include_confidence |
— | False (batch recognition) |
include_language |
— | False (report detected language while streaming) |
eager_turn_probability |
— | None (server default 0.5) |
final_turn_probability |
— | None (server default 0.92) |
STT.update_options(...) changes settings at runtime; active streaming sessions
reconnect automatically to apply them.
Turn detection
Reson8 decides turn boundaries by confidence: it emits the preflight transcript
at eager_turn_probability and commits the turn at final_turn_probability.
Lower final_turn_probability to commit sooner, at the risk of cutting off
longer utterances.
flush() commits the current turn immediately, keeping final_turn_probability
intact. LiveKit never calls it for you.
See Turns for how turn events work server-side.
Running the example
cp .env.example .env
# Fill in your keys
python examples/voice_agent.py dev
Development
We use uv to manage the environment and dev dependencies, so you'll need to have it installed.
uv sync sets everything up — it reads the pinned Python version from
.python-version, creates a .venv/, and installs the dev tools (Ruff and mypy).
Run the tooling through uv run, which uses the project environment without you
having to activate anything:
uv run ruff check . # lint
uv run ruff format . # format
uv run mypy # type-check
Release files for livekit-plugins-reson8 0.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| livekit_plugins_reson8-0.2.4.tar.gz | 204.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| livekit_plugins_reson8-0.2.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 220.6 kB
Release files / livekit_plugins_reson8-0.2.4.tar.gz
| Download URL | livekit_plugins_reson8-0.2.4.tar.gz |
|---|---|
| Size | 204.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d93ab3e0b03183b211db3120142f0e3c5105e867c3c2e6bc3abc6f8e6d3998c
|
|
BLAKE2b-256 checksum How to use checksums |
2bb8ff5e10fecea262b79b40fe4698dbe0532454b9eaba28ec4762dbe1f2975c
|
| 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 Aug 24, 2026.
Transparency logRelease files / livekit_plugins_reson8-0.2.4-py3-none-any.whl
| Download URL | livekit_plugins_reson8-0.2.4-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
46ee34714461e78fa22160a02f4aa79b3a6a03ca7e0d8b4679a5895178206327
|
|
BLAKE2b-256 checksum How to use checksums |
7b68678b2ba03e85a098a7f79b98a2698ae21d4761ead3d233c2fea28d8c1cda
|
| 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 Aug 24, 2026.
Transparency log