Getting started¶
Key Concepts¶
The following are the three key concepts on which VSS is based: processing pipelines, streams and processing sessions.
Processing Pipelines¶
Processing pipelines (or pipelines) are the components responsible for performing multimedia data processing. This processing can range from simple format conversions to more complex algorithms such as voice detection, noise detection, and others.
VSS comes with a set of predefined pipelines that allow users to carry out the data processing needed for their specific use case.
We will see that VSS features an extensible pipeline system that enables the continuous addition of new pipelines as new scenarios arise that require them.
Additionally, pipelines are usually configurable, allowing users to fine-tune specific characteristics of the data processing.
A pipelines is uniquely identified by its pipeline_urn (e.g: urn:vss:pipelines:example_pipeline).
Streams¶
A stream is the element that contains the multimedia data to be processed. This data is received in parts, either in real time or progressively, without needing to wait for the entire content to be available before starting its processing.
Streams can be created within VSS coming from sources using different network protocols such as HTTP, WebSocket, or RTP.
A stream is uniquely identified by its stream_id, which is defined when the stream is created.
Currently, VSS allows to create the following types of streams:
- File streams: Streams created from binary files uploaded by the user.
- Audiohook streams: Streams that follow the Genesys Audiohook protocol specification, typically used to receive real-time audio data from Genesys Cloud conversations over WebSocket.
- Amazon Kinesis Video Streams (KVS) streams: Streams that connect to Amazon Kinesis Video Streams to ingest live audio and video data from AWS-integrated sources.
Processing Sessions¶
The processing session (or session) is the key component of VSS that allows identifying a stream on which certain processing is to be applied and associating it with the pipeline that contains the processing logic.
When a user creates a processing session, they specify the stream_id of the stream they want to process, along with the pipeline_urn of the pipeline that will carry out the processing.
In the following section, we will see how all these resources come into play to carry out the processing of a stream, and we will look at an illustrative example.