feat: implement OpenAI-compatible Realtime API with authentication and management features

- Added support for public Realtime API, including new routes for managing API keys and handling WebRTC connections.
- Introduced RealtimeApiKey model and associated CRUD operations for admin management of API keys.
- Implemented authentication mechanisms for API keys and client secrets.
- Enhanced environment configuration with new secrets for Realtime API.
- Created OpenAIRealtime session management and event processing for real-time interactions.
- Updated schemas and settings to accommodate new features and ensure compatibility with existing systems.
This commit is contained in:
Xin Wang
2026-08-11 10:05:55 +08:00
parent cf32ea605d
commit 86639692ba
28 changed files with 3286 additions and 128 deletions

View File

@@ -20,7 +20,10 @@ from pipecat.turns.user_stop import (
SpeechTimeoutUserTurnStopStrategy,
TurnAnalyzerUserTurnStopStrategy,
)
from pipecat.turns.user_turn_strategies import UserTurnStrategies
from pipecat.turns.user_turn_strategies import (
ExternalUserTurnStrategies,
UserTurnStrategies,
)
DEFAULT_VAD = {
@@ -126,3 +129,13 @@ class ConfigurableLLMUserAggregator(LLMUserAggregator):
enable_interruptions=enable_interruptions,
)
await self._user_turn_controller.update_strategies(strategies)
async def apply_external_turn_control(self, enabled: bool) -> None:
"""Switch between client-controlled PTT and the configured VAD."""
strategies = (
ExternalUserTurnStrategies()
if enabled
else self._params.user_turn_strategies
)
await self._user_turn_controller.update_strategies(strategies)