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
- Audio Processing: Receives and processes raw audio data
- Codec Handling: LC3 audio decoding (optional)
- Buffer Management: Maintains recent audio buffer and ordered processing
- Service Integration: Feeds audio to transcription and translation services
- App Distribution: Relays audio to subscribed apps
- 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
- Buffer Pruning: Automatically removes old audio data
- Ordered Processing: Handles out-of-order packets gracefully
- Error Recovery: Reinitializes services on failure
- Selective Distribution: Only sends to subscribed apps
Best Practices
- Monitor Buffer Sizes to prevent memory issues
- Handle LC3 Failures with automatic recovery
- Use Debug Flags sparingly in production
- Process Audio Efficiently to maintain real-time performance
- Clean Up Resources properly on disposal
Related Documentation
- MicrophoneManager: Controls audio input
- TranscriptionManager: Speech-to-text processing
- TranslationManager: Language translation
- SubscriptionService: App audio subscriptions