Generate a pixel-art 'call style' avatar video reacting to audio.
Project description
sosi-call
Generate a pixel-art “call style” avatar video reacting to audio: a circular avatar + a pulsing ring synced to voice amplitude.
- ✅ Works with audio like
.wav,.mp3,.ogg, etc. (whatever your environment can decode) - ✅ Output: square MP4 (default 1080×1080), black background, pixel-art look
- ✅ Includes both Python API and a CLI
Note: This package uses MoviePy, which relies on FFmpeg being available in your system
PATH.
Demo video
Open: docs/demo3.mp4
Install
pip install sosi-call
FFmpeg (required)
If you don’t have ffmpeg installed:
Ubuntu/Debian
sudo apt update && sudo apt install -y ffmpeg
macOS (Homebrew)
brew install ffmpeg
Quickstart (Python)
from sosi_call import render_call_video, RenderConfig
cfg = RenderConfig(
size=1080, # output resolution (square)
low=240, # internal pixel-art resolution (lower=faster+more chunky)
fps=30,
gain=3.2, # sensitivity
gamma=0.45, # boosts quieter voice
)
render_call_video(
avatar_path="perfil.jpeg",
audio_path="demo.ogg",
out_path="sosi_call.mp4",
cfg=cfg,
)
CLI usage
sosi-call --avatar perfil.jpeg --audio demo.ogg --out sosi_call.mp4
Common tweaks:
# More pixelated + faster
sosi-call --avatar perfil.jpeg --audio demo.ogg --out out.mp4 --low 180
# Less pixelated (smoother circle) but slower
sosi-call --avatar perfil.jpeg --audio demo.ogg --out out.mp4 --low 320
# More reactive ring
sosi-call --avatar perfil.jpeg --audio demo.ogg --out out.mp4 --gain 4.0 --gamma 0.45
Output and how to use it in editing
The generated video is a square MP4 with a pure black background, ideal for compositing:
- Put it as a layer above your screen recording
- Remove the black background using:
- Screen/Add blend mode, or
- Luma Key (key out dark pixels)
Configuration notes
size: final output (default 1080). Always square.low: internal render resolution. Controls pixelation + speed.180= very chunky + fast240= balanced (default)320= less jagged, slower
gain/gamma: controls sensitivity to voice amplitude.- Increase
gainif it moves too little - Lower
gamma(< 1) to amplify quieter audio
- Increase
Development (uv)
uv sync
uv run python -c "from sosi_call import render_call_video; print('ok')"
Editable install:
uv pip install -e .
License
MIT
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 sosi_call-0.1.5.tar.gz.
File metadata
- Download URL: sosi_call-0.1.5.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93074f639bca88a4a3714fe4ec0569b409398626b509f2dcb70f2b178daa710f
|
|
| MD5 |
c1b90add812864be3871ee1532586160
|
|
| BLAKE2b-256 |
cc2b6b2377288c9ced6cd78489b7d6256208368dcc127a7d8af140df33c12809
|
File details
Details for the file sosi_call-0.1.5-py3-none-any.whl.
File metadata
- Download URL: sosi_call-0.1.5-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0960d078a7e7ca4b63153ff67ab4cdc52dbb32dae203efdf02c0d65b45323dd3
|
|
| MD5 |
7d8b3c56ac224cb162125a3d22c15bf8
|
|
| BLAKE2b-256 |
30ac4eaedb54ffe5b11d9901a6662b273e71490cd1a17d89d82be31151bf14ef
|