[Core][Frontend] Unified Full-duplex Framework (#7413)
Signed-off-by: chickeyton <ngton2014@gmail.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
9005d78903
commit
99ff4f3070
182 files changed
+26951
-34743
No files matched your search
@@ -0,0 +1,41 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class CommitAction(str, Enum):
|
||||
"""How one native audio commit participates in response scheduling."""
|
||||
|
||||
START_AUTO_RESPONSE = "start_auto_response"
|
||||
DEFER_ACTIVE_RESPONSE = "defer_active_response"
|
||||
COMMIT_ONLY = "commit_only"
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class CommitSnapshot:
|
||||
auto_responds: bool
|
||||
speech_since_commit: bool
|
||||
active_response_id: str | None
|
||||
overlap_speech_ms: int
|
||||
response_in_progress: bool
|
||||
playback_active: bool
|
||||
|
||||
|
||||
def decide_commit_action(snapshot: CommitSnapshot) -> CommitAction:
|
||||
"""Choose response scheduling from an immutable session snapshot."""
|
||||
if snapshot.auto_responds:
|
||||
if snapshot.speech_since_commit:
|
||||
return CommitAction.START_AUTO_RESPONSE
|
||||
return CommitAction.COMMIT_ONLY
|
||||
if snapshot.response_in_progress and snapshot.overlap_speech_ms > 0:
|
||||
return CommitAction.DEFER_ACTIVE_RESPONSE
|
||||
if snapshot.playback_active and snapshot.overlap_speech_ms > 0:
|
||||
return CommitAction.DEFER_ACTIVE_RESPONSE
|
||||
return CommitAction.COMMIT_ONLY
|
||||
|
||||
|
||||
__all__ = ["CommitAction", "CommitSnapshot", "decide_commit_action"]
|
||||
Reference in new issue
Block a user