Skip to main content

Overview

AudioManager handles all audio-related functionality within a user session. It processes incoming audio data from smart glasses, manages buffering, handles LC3 codec decoding (when enabled), and distributes audio to transcription services and subscribed apps. File: packages/cloud/src/services/session/AudioManager.ts

Key Responsibilities

  1. Audio Processing: Receives and processes raw audio data
  2. Codec Handling: LC3 audio decoding (optional)
  3. Buffer Management: Maintains recent audio buffer and ordered processing
  4. Service Integration: Feeds audio to transcription and translation services
  5. App Distribution: Relays audio to subscribed apps
  6. Debug Support: Optional audio file writing for debugging

Architecture

Audio Processing Pipeline

Main Processing Method

LC3 Codec Support

When LC3 is enabled:

Buffer Management

Recent Audio Buffer

Maintains last 10 seconds of audio:

Ordered Audio Buffer

For handling out-of-order audio chunks:

Adding to Ordered Buffer

Processing Ordered Buffer

App Distribution

Relay to Subscribed Apps

Debug Features

Audio Writer

For debugging audio issues:

Service Recovery

LC3 Service Reinitialization

Handles LC3 decoder failures:

Configuration

Debug Flags

Buffer Configuration

  • Recent Buffer: Last 10 seconds of audio
  • Ordered Buffer Size: Maximum 100 chunks
  • Buffer Time Window: 500ms for ordering
  • Processing Interval: 100ms default

Public Methods

Get Recent Audio Buffer

Lifecycle Management

Initialization

Disposal

Integration Points

  • MicrophoneManager: Notified when audio is received
  • TranscriptionManager: Receives processed audio for speech-to-text
  • TranslationManager: Receives audio for translation services
  • SubscriptionService: Determines which apps receive audio
  • LC3Service: Handles audio codec operations

Performance Considerations

  1. Buffer Pruning: Automatically removes old audio data
  2. Ordered Processing: Handles out-of-order packets gracefully
  3. Error Recovery: Reinitializes services on failure
  4. Selective Distribution: Only sends to subscribed apps

Best Practices

  1. Monitor Buffer Sizes to prevent memory issues
  2. Handle LC3 Failures with automatic recovery
  3. Use Debug Flags sparingly in production
  4. Process Audio Efficiently to maintain real-time performance
  5. Clean Up Resources properly on disposal