Skip to Content
SignStream APILive Translation

Live Translation

What is Live Translation?

Live Translation enables real-time sign language translation of live video streams. Instead of submitting pre-recorded content, you connect a live video source and SignStream continuously transcribes the audio and generates sign language output as the stream progresses.


How It Works

  1. Connect a live video source — Push an RTMP or SRT stream to SignStream, or provide an HLS manifest URL for SignStream to pull
  2. Automatic transcription — SignStream transcribes the audio track in real time
  3. Sign language generation — Transcribed text is translated into sign language and rendered as video
  4. Output delivery — The signer is delivered as a signer-only HLS/DASH stream, as a picture-in-picture composite of your source with the signer overlaid, or pushed to an RTMP/SRT destination

Glass-to-glass latency is approximately 10 seconds for both signer-only and picture-in-picture output.


Source Types

RTMP Push (RTMP_PUSH)

Push an RTMP stream from your encoder (e.g. OBS, Wirecast, or a hardware encoder) to SignStream-provided endpoints.

  1. Create a live session with sourceType: "RTMP_PUSH"
  2. The response includes rtmpEndpoints — one or more RTMP URLs to configure in your encoder
  3. Start streaming from your encoder to the provided endpoints
  4. SignStream begins processing automatically when the stream is detected
RTMP Push source configuration
{
"sourceType": "RTMP_PUSH"
}

SRT Push (SRT_PUSH)

Push an SRT stream to a SignStream-provided ingest URL. The response includes ingestUrl and, when a passphrase is configured, srtPassphrase.

SRT Push source configuration
{
"sourceType": "SRT_PUSH",
"srtConfig": {
  "passphrase": "your-passphrase",
  "keyLength": 16,
  "latency": 200
}
}

HLS Pull (HLS_PULL)

Provide an HLS manifest URL and SignStream pulls the stream automatically.

  1. Create a live session with sourceType: "HLS_PULL" and an hlsSourceUrl
  2. SignStream connects to your HLS manifest and begins pulling segments
  3. Processing starts automatically
HLS Pull source configuration
{
"sourceType": "HLS_PULL",
"hlsSourceUrl": "https://example.com/live/stream.m3u8"
}

When you combine HLS_PULL with picture-in-picture output, your source manifest is validated against a codec and packaging contract at session creation. See HLS source requirements.


Output Types

HLS + DASH (default)

The sign language translation is made available as both an HLS manifest and a DASH manifest, written side-by-side and served from the same session prefix. The session response includes a manifests object with manifests.hls (.m3u8) and manifests.dash (.mpd) — pick the one that fits your player.

HLS + DASH output configuration
{
"sourceType": "RTMP_PUSH",
"outputType": "HLS"
}

Live DASH manifests are served with Content-Type: application/dash+xml in the live profile. The outputManifestUrl field remains for backwards compatibility and is byte-for-byte equal to manifests.hls.

This output is signer-only — it carries the digital signer on a plain background and nothing else. Compose it against your own video player-side, or use picture-in-picture below to have SignStream do the compositing for you.

RTMP

The sign language translation is pushed to your RTMP destination. Provide an rtmpOutputUrl (and optionally an rtmpOutputStreamKey) when creating the session.

RTMP output configuration
{
"sourceType": "RTMP_PUSH",
"outputType": "RTMP",
"rtmpOutputUrl": "rtmp://your-server.com/live",
"rtmpOutputStreamKey": "your-stream-key"
}

SRT

The sign language translation is pushed to your SRT destination. Provide an outputDestinationUrl and, optionally, an outputSrtConfig.

SRT output configuration
{
"sourceType": "SRT_PUSH",
"outputType": "SRT",
"outputDestinationUrl": "srt://your-server.com:9000",
"outputSrtConfig": {
  "latency": 200
}
}

Picture-in-Picture (composite HLS)

Set pictureInPicture: true on session creation and SignStream composites the digital signer directly onto your source video, server-side, and publishes the result as a third HLS stream. Your player pulls one URL and gets a finished, accessible broadcast — no client-side overlay work.

Picture-in-picture session configuration
{
"sourceType": "RTMP_PUSH",
"outputType": "HLS",
"pictureInPicture": true
}

The session response gains manifests.pip alongside the signer-only manifests:

Picture-in-picture session response
{
"sessionId": "ls_abc123def456",
"status": "active",
"outputType": "HLS",
"pictureInPicture": true,
"manifests": {
  "hls":  "https://output.signapsesolutions.com/live/ls_abc123def456/index.m3u8",
  "dash": "https://output.signapsesolutions.com/live/ls_abc123def456/manifest.mpd",
  "pip":  "https://output.signapsesolutions.com/live/ls_abc123def456/pip/index.m3u8"
}
}

What you get

PropertyValue
ContainerfMP4 / CMAF low-latency HLS (.m4s segments, one init.mp4)
Signer placementBottom-right, grounded flush to the bottom edge with a proportional side inset
Signer sizeApproximately 20% of the output frame by area
BackgroundThe signer’s backplate is keyed out, so your source video shows through around her
Live window45 seconds of playable history
Latency~10 seconds glass-to-glass, matching signer-only

Behaviour and limits

  • Source typesRTMP_PUSH, SRT_PUSH, and HLS_PULL all support picture-in-picture.
  • Output typemanifests.pip is only produced when outputType is HLS. Setting pictureInPicture: true alongside RTMP or SRT output does not produce a composite.
  • Signer-only output is unaffectedmanifests.hls and manifests.dash keep serving the signer-only stream for the same session, so you can consume both.
  • Layout is fixed — placement and size are not configurable through the API today. Contact support@signapse.ai if your broadcast needs a different position or scale.
  • Between sentences the signer holds her final frame rather than looping her last clip, so the overlay stays still instead of replaying signs.
  • HLS_PULL sources are validated up front against the HLS source requirements — sources outside the canonical shape are normalized automatically where possible, and rejected with a 400 where they cannot be.

Every URL inside the composite and signer-only manifests is CloudFront-signed, including segment, partial, init, and preload-hint URLs. See Playing back protected media.


Session Lifecycle

Each live session follows a defined status flow:

StatusDescription
INITIALIZINGSession is being set up and resources are being provisioned
PENDINGSession is ready and waiting for the input stream
RUNNINGActively processing the live stream and generating output
STOPPINGSession is shutting down
STOPPEDSession has ended normally
FAILEDSession encountered an error — check the error field for details

The REST API surfaces a condensed external status on the session object: active, finalizing, or ended. A failed session reports ended with the failure in error.


Getting Started

  1. Authenticate — Include your API key in the X-API-KEY header (Authentication)
  2. Create a sessionPOST /v2/live/sessions with your source and output configuration (Create Live Session)
  3. Start streaming — For RTMP or SRT Push, configure your encoder with the provided endpoints. For HLS Pull, streaming begins automatically.
  4. Consume output — Play manifests.hls / manifests.dash for the signer-only stream, or manifests.pip for the composite. For RTMP and SRT output, check your destination.
  5. Stop the sessionDELETE /v2/live/sessions/:id when finished (Stop Live Session)

Monitor your sessions at any time using the List and Get endpoints below.

Last updated on
Question? Give us feedback
support@signapse.ai