Capture Nextcloud Talk calls: signalling client, per-speaker audio, call monitoring
Project description
nextcloud-talk-capture
Capture Nextcloud Talk calls: join as a signalling client, receive one audio stream per speaker, and hand over the finished call as plain data.
Import name is talk_capture.
from talk_capture import CaptureConfig
from talk_capture.monitor import CallMonitor
from talk_capture.spreed_client import SpreedClient
What it does — and what it deliberately does not
This is the capture half of a transcription pipeline: it gets the audio and tells you who was speaking. What happens afterwards — speech recognition, summaries, publishing, storage — is not its business, and it holds no dependency on any of it.
That separation is the whole point. The same package runs inside a Nextcloud ExApp, inside a standalone capture service, or inside an application that does everything, without dragging a product's worth of code along.
| Module | |
|---|---|
spreed_client |
signalling client: HPB + aiortc, per-speaker audio |
monitor |
active-call detection (polls the Nextcloud DB, optionally over an SSH tunnel) |
presence |
join/leave annotations (pure functions, no I/O) |
chat_commands |
opt-out commands posted in the room chat, honoured mid-call |
resolve |
assembles a FinishedCall when the call ends |
transcriber_backend |
sends audio to an engine, in-process or over gRPC |
contracts |
FinishedCall, SpeakerStatInput — the payload handed downstream |
config |
CaptureConfig — what capture needs, nothing more |
aioice_patch |
works around an aioice race; import it before aiortc |
Requirements
- Nextcloud Talk with a High Performance Backend. Call media lives in the signalling server, not in the PHP layer, so an HPB is required.
- Python 3.11+
Configuration
CaptureConfig carries what capture needs: Nextcloud credentials, the
signalling server and its secret, call-detection database access, the room
filter, and where to send the audio. Build it from the environment with
CaptureConfig.from_env(), or pass any object exposing the same attributes —
config is taken duck-typed, so a larger application config works unchanged.
Contributing
Two rules keep the package shippable on its own, both enforced by tests in the consuming repository:
- nothing here may import the downstream half (publishing, analysis, storage);
- a config field must keep its name, type and default in sync with any larger config that is passed in — a mismatch fails mid-call, not at import.
Licence
MIT.
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 nextcloud_talk_capture-0.1.0.tar.gz.
File metadata
- Download URL: nextcloud_talk_capture-0.1.0.tar.gz
- Upload date:
- Size: 33.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b73b42846510c76752d5f2b83e9389be794fbc99d333875527dfdc3c2fece5dc
|
|
| MD5 |
487d51984ccadb232096b150a44badb7
|
|
| BLAKE2b-256 |
9a9bfb46f5cf5bddaed49c8920f5a6b6dabeefacd109716ff9c6d4d757dd0595
|
Provenance
The following attestation bundles were made for nextcloud_talk_capture-0.1.0.tar.gz:
Publisher:
publish-package.yml on devsoftmus/nextcloude-transcription
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nextcloud_talk_capture-0.1.0.tar.gz -
Subject digest:
b73b42846510c76752d5f2b83e9389be794fbc99d333875527dfdc3c2fece5dc - Sigstore transparency entry: 2194683817
- Sigstore integration time:
-
Permalink:
devsoftmus/nextcloude-transcription@e86e38196d24794e3623fa8c7bd9ec6bfa3fafd4 -
Branch / Tag:
refs/tags/capture-v0.1.0 - Owner: https://github.com/devsoftmus
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@e86e38196d24794e3623fa8c7bd9ec6bfa3fafd4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file nextcloud_talk_capture-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nextcloud_talk_capture-0.1.0-py3-none-any.whl
- Upload date:
- Size: 37.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 |
14dd4bf922ccc5cc213c59a6684deada7aa41921ccb7ed358d85995aa3beaefc
|
|
| MD5 |
05c32b6cd674e14dc4bfe9de93ed577e
|
|
| BLAKE2b-256 |
60bfc996e873fa3d94497d305cf7e65348ebb95942e157c4dda1aeebfa4925c1
|
Provenance
The following attestation bundles were made for nextcloud_talk_capture-0.1.0-py3-none-any.whl:
Publisher:
publish-package.yml on devsoftmus/nextcloude-transcription
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nextcloud_talk_capture-0.1.0-py3-none-any.whl -
Subject digest:
14dd4bf922ccc5cc213c59a6684deada7aa41921ccb7ed358d85995aa3beaefc - Sigstore transparency entry: 2194683825
- Sigstore integration time:
-
Permalink:
devsoftmus/nextcloude-transcription@e86e38196d24794e3623fa8c7bd9ec6bfa3fafd4 -
Branch / Tag:
refs/tags/capture-v0.1.0 - Owner: https://github.com/devsoftmus
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@e86e38196d24794e3623fa8c7bd9ec6bfa3fafd4 -
Trigger Event:
push
-
Statement type: