Ojin avatar (Speech-To-Video) service for Pipecat
Project description
pipecat-ojin
Ojin's Pipecat integration: drop a
lip-synced talking-avatar face (OjinVideoService) into your existing pipeline in minutes.
OjinVideoService is the one stage that turns a voice agent into a video-call
avatar — it lip-syncs to whatever your TTS produces and streams the avatar video
back. It sits in the same slot as other video services in pipecat:
transport.input() -> STT -> LLM -> TTS -> [OjinVideoService] -> transport.output()
This package is a thin adapter over the framework-agnostic
ojin-client SDK — all avatar behaviour
(A/V sync, audio-as-clock playback, barge-in re-sync) lives in the SDK. It is
not a fork of Pipecat — it depends on pipecat-ai as a library.
Install
pip install pipecat-ojin
This pulls in pipecat-ai and ojin-client[stv]. You provide the STT / LLM /
TTS services for your pipeline (e.g. pip install "pipecat-ai[deepgram,groq,elevenlabs]").
Quickstart — the avatar face
from pipecat.pipeline.pipeline import Pipeline
from pipecat_ojin import OjinVideoService, OjinVideoSettings
avatar = OjinVideoService(
OjinVideoSettings(
api_key="OJIN_API_KEY",
config_id="OJIN_CONFIG_ID", # the Face model to drive
)
)
pipeline = Pipeline(
[transport.input(), stt, llm, tts, avatar, transport.output()]
)
The avatar's frame size comes from your Face model (config_id) — set your
transport's video_out_width / video_out_height to match it (the example uses
512×512).
Get your OJIN_API_KEY and a Face model OJIN_CONFIG_ID from
ojin.ai (docs: docs.ojin.ai).
Session tracing (optional)
Pass an ojin.stv.OjinSessionTrace to record a per-call Perfetto trace; the
service dumps it on close:
from ojin.stv import OjinSessionTrace
trace = OjinSessionTrace(session_id="my-call", config_id="OJIN_CONFIG_ID")
avatar = OjinVideoService(OjinVideoSettings(...), session_trace=trace)
Example
A complete, runnable voice + avatar agent (browser WebRTC or Daily) lives in
examples/ojin-bot/.
Compatibility
| Requirement | Version |
|---|---|
| Python | ≥ 3.11 |
pipecat-ai |
≥ 1.3.0 |
ojin-client[stv] |
≥ 0.7.1 |
License
Apache-2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
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 pipecat_ojin-0.1.1.tar.gz.
File metadata
- Download URL: pipecat_ojin-0.1.1.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
609499c4009ba0a0f139d2a9ac5ae75cf6332b022630c8ba0ce5a3c572397f33
|
|
| MD5 |
94631edece6399eb70824b0000d8aa02
|
|
| BLAKE2b-256 |
87918dd60a6566a973053b6ceccf3ae6e172cad96da7ab01107123660d0744dd
|
Provenance
The following attestation bundles were made for pipecat_ojin-0.1.1.tar.gz:
Publisher:
release.yml on ojinai/pipecat-ojin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pipecat_ojin-0.1.1.tar.gz -
Subject digest:
609499c4009ba0a0f139d2a9ac5ae75cf6332b022630c8ba0ce5a3c572397f33 - Sigstore transparency entry: 1863622746
- Sigstore integration time:
-
Permalink:
ojinai/pipecat-ojin@cd18e77ef6a2a743fb237d4abedc379ed98cbc88 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ojinai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd18e77ef6a2a743fb237d4abedc379ed98cbc88 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pipecat_ojin-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pipecat_ojin-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.6 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 |
986bb1a80e4a3e4fbac4f4e97113ba5b4c2d5916a544cabac901891b44ee0a86
|
|
| MD5 |
88eae45bde43718bd3d567de7ce3a10c
|
|
| BLAKE2b-256 |
bda88f58d3fcc2762fff4acef823bdd99d61e8eacc262b0979fc7322a808f4f9
|
Provenance
The following attestation bundles were made for pipecat_ojin-0.1.1-py3-none-any.whl:
Publisher:
release.yml on ojinai/pipecat-ojin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pipecat_ojin-0.1.1-py3-none-any.whl -
Subject digest:
986bb1a80e4a3e4fbac4f4e97113ba5b4c2d5916a544cabac901891b44ee0a86 - Sigstore transparency entry: 1863623209
- Sigstore integration time:
-
Permalink:
ojinai/pipecat-ojin@cd18e77ef6a2a743fb237d4abedc379ed98cbc88 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ojinai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cd18e77ef6a2a743fb237d4abedc379ed98cbc88 -
Trigger Event:
push
-
Statement type: