Voice AI safety monitoring through multimodal biomarker analysis
Project description
Thymia Sentinel
Voice AI safety monitoring through multimodal biomarker analysis.
Sentinel streams voice conversations to Thymia's Lyra server for real-time extraction of clinical speech biomarkers, combined with policy-based safety reasoning to detect mental health concerns that text-only systems miss.
Why Multimodal?
Text-only safety moderation has two fundamental failure modes:
-
False negatives (minimization): Users experiencing mental health crises frequently downplay their distress verbally. "I'm fine, just tired" may be spoken with voice biomarkers indicating severe depression.
-
False positives (alarm fatigue): Phrases like "I'm dying of embarrassment" trigger crisis pathways despite no clinical concern, leading to desensitization and wasted resources.
Both failures stem from the same limitation: reliance on semantic content without physiological ground truth. Sentinel addresses this by combining speech biomarkers with conversation analysis through explicit concordance checking.
Installation
pip install thymia-sentinel
Quick Start
from thymia_sentinel import SentinelClient
async def handle_result(result):
policy = result["policy"]
policy_name = result.get("policy_name", policy)
if policy_name == "demo_wellbeing_awareness":
classification = result["result"]["classification"]
level = classification["level"] # 0-3
alert = classification["alert"] # none, aware, supportive, mindful
if level >= 2:
print(f"Risk level {level}: {alert}")
print(f"Recommended: {result['result']['recommended_actions']['for_agent']}")
sentinel = SentinelClient(
user_label="user-123",
policies=["demo_wellbeing_awareness"],
biomarkers=["helios", "apollo"],
on_policy_result=handle_result,
)
await sentinel.connect()
# In your voice AI audio loop:
await sentinel.send_user_audio(user_audio_bytes) # PCM16 @ 16kHz
await sentinel.send_agent_audio(agent_audio_bytes)
await sentinel.send_user_transcript("I've been feeling okay lately")
await sentinel.send_agent_transcript("That's good to hear. How has your sleep been?")
# When done:
await sentinel.close()
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
user_label |
str | None | Unique user identifier |
date_of_birth |
str | None | YYYY-MM-DD format (improves accuracy, imputed from voice if omitted) |
birth_sex |
str | None | "MALE" or "FEMALE" (improves accuracy, imputed from voice if omitted) |
language |
str | "en-GB" | Language code |
policies |
list[str] | required | Policies to execute |
biomarkers |
list[str] | ["helios"] | Biomarkers to extract |
sample_rate |
int | 16000 | Audio sample rate in Hz |
on_policy_result |
callable | None | Callback for policy results |
on_progress_result |
callable | None | Callback for progress updates |
api_key |
str | env THYMIA_API_KEY | Your Thymia API key |
Demo Policies
demo_wellbeing_awareness: Wellbeing awareness analysis with risk classification and recommended actionsdemo_field_extraction: Extracts basic user fields (name, age) from conversation
Biomarkers
helios: Wellness indicators (distress, stress, burnout, fatigue, low self-esteem)apollo: Clinical disorder probabilities (depression, anxiety) and symptom-level severitiespsyche: Real-time affect detection (happy, sad, angry, fearful, etc.)
Awareness Levels
The wellbeing awareness policy returns a 4-level classification:
| Level | Alert | Description |
|---|---|---|
| 0 | none | All clear, no concerns |
| 1 | aware | Be attentive, mild indicators |
| 2 | supportive | Be supportive and mindful, moderate indicators |
| 3 | mindful | Be very mindful, notably elevated signals |
Framework Integrations
For framework-specific examples, see the examples directory:
- LiveKit Agents - Automatic audio capture from LiveKit rooms
- Pipecat - Integration with Pipecat pipelines
- VAPI - WebSocket integration for VAPI
- Gemini Live - Google Gemini Live API integration
License
MIT License - see LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file thymia_sentinel-1.2.1.tar.gz.
File metadata
- Download URL: thymia_sentinel-1.2.1.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8a1222694fda09759c184b05b6dab41a1f27941dfc3a4c5e6263f4b1121c7e5
|
|
| MD5 |
e5ec5da2c377dda0d47b98d35635bfca
|
|
| BLAKE2b-256 |
b72e4ea7c9c7446950487e7c7bbea8ebdc8eb12e627b5d8214066ab76c1ccfb0
|
Provenance
The following attestation bundles were made for thymia_sentinel-1.2.1.tar.gz:
Publisher:
publish.yml on thymia-ai/thymia-sentinel-integrations
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thymia_sentinel-1.2.1.tar.gz -
Subject digest:
f8a1222694fda09759c184b05b6dab41a1f27941dfc3a4c5e6263f4b1121c7e5 - Sigstore transparency entry: 1508565881
- Sigstore integration time:
-
Permalink:
thymia-ai/thymia-sentinel-integrations@1911e9866cae461a0b62da644348fc25086ff704 -
Branch / Tag:
refs/tags/v1.2.1 - Owner: https://github.com/thymia-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1911e9866cae461a0b62da644348fc25086ff704 -
Trigger Event:
release
-
Statement type:
File details
Details for the file thymia_sentinel-1.2.1-py3-none-any.whl.
File metadata
- Download URL: thymia_sentinel-1.2.1-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b33a0a2b72fe97dc79de3944b1deb180b80deb32eeacfe15ad576e454e672d9
|
|
| MD5 |
c839c8efbb30cb052d0ebc6281d7c3d4
|
|
| BLAKE2b-256 |
9e396c87fc248d3be456e4d53a6b7011361b6ab7e41838fc61ee10ef15eeebf2
|
Provenance
The following attestation bundles were made for thymia_sentinel-1.2.1-py3-none-any.whl:
Publisher:
publish.yml on thymia-ai/thymia-sentinel-integrations
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thymia_sentinel-1.2.1-py3-none-any.whl -
Subject digest:
9b33a0a2b72fe97dc79de3944b1deb180b80deb32eeacfe15ad576e454e672d9 - Sigstore transparency entry: 1508566039
- Sigstore integration time:
-
Permalink:
thymia-ai/thymia-sentinel-integrations@1911e9866cae461a0b62da644348fc25086ff704 -
Branch / Tag:
refs/tags/v1.2.1 - Owner: https://github.com/thymia-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1911e9866cae461a0b62da644348fc25086ff704 -
Trigger Event:
release
-
Statement type: