New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@pipecat-ai/realtime-websocket-transport

Package Overview
Dependencies
Maintainers
0
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pipecat-ai/realtime-websocket-transport

Pipecat Base Transport for RealTime WebSocket APIs Package

  • 0.3.4
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
39
decreased by-45.83%
Maintainers
0
Weekly downloads
 
Created
Source

Real-Time Websocket Transport

Docs Demo NPM Version

A flexible abstract transport class for implementing connections to directly communicate with LLMs that support voice-to-voice modalities.

Installation

npm install \
@pipecat-ai/client-js \
@pipecat-ai/real-time-websocket-transport

Overview

The RealTimeWebsocketTransport class provides a foundation for building transports for direct voice-to-voice communication:

  • Audio/video device management
  • Bi-directional audio streaming
  • Device selection and control
  • State management
  • Event handling

Disclaimer

This Transport type is primarily intended for dev-only and testing purposes. Since this transport talks directly with the LLM, there is no way to obscure API Keys necessary for doing so. Developers will need to eventually build a server component with a server-friendly transport (See the daily-transport as an example.)

Usage

To use this package, create a new Transport by extending the RealTimeWebsocketTransport class and implement the following abstract functions:

import { RealTimeWebsocketTransport } from '@pipecat-ai/real-time-websocket-transport';

export interface MyLLMOptions extends LLMServiceOptions {
    api_key: string,
    // define types for all the various options your
    // LLM service may want to support during setup/connection
}

class MyLLMServiceTransport extends RealTimeWebsocketTransport {
  constructor(service_options: GeminiLLMServiceOptions, manager?: MediaManager) {
    super(service_options, manager);
    // Initialize class variables
  }

async initializeLLM(): void {
    // Initialize your LLM service client
  }

  async attachLLMListeners(): void {
    // Set up event listeners to handle message from your LLM service
  }

  async connectLLM(): Promise<void> {
    // Implement connection logic for the LLM
  }

  async disconnectLLM(): Promise<void> {
    // Disconnect from the LLM
  }

  handleUserAudioStream(data: ArrayBuffer): void {
    // Pass the data provided to the LLM
  }

  async sendReadyMessage(): Promise<void> {
    // call this._onMessage() with a BOT_READY message once the
    // LLM is connected and ready to receive data
  }

  sendMessage(message: RTVIMessage): void {
    // Implement sending other LLM-specific messages to the LLM
    // This is how the user can call things like rtviClient.sendMessage(...)
    // and communicate in other ways with the LLM
  }
}

API Reference

Constructor

constructor(service_options: LLMServiceOptions, manager: MediaManager)

Abstract Methods

  • initializeLLM(): void
  • attachLLMListeners(): void
  • connectLLM(): Promise<void>
  • disconnectLLM(): Promise<void>
  • handleUserAudioStream(data: ArrayBuffer): void
  • sendReadyMessage()
  • sendMessage(message: RTVIMessage)

Device Management Methods

  • getAllMics(): Promise<MediaDeviceInfo[]>
  • getAllCams(): Promise<MediaDeviceInfo[]>
  • getAllSpeakers(): Promise<MediaDeviceInfo[]>
  • updateMic(micId: string): Promise<void>
  • updateCam(camId: string): void
  • updateSpeaker(speakerId: string): void

State Properties

  • get state(): TransportState
  • get isCamEnabled(): boolean
  • get isMicEnabled(): boolean

Events

The transport supports emitting the events defined by the RTVI Specification

License

BSD-2 Clause

FAQs

Package last updated on 20 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc