[异步播报打断]:完成播放中麦克风监听和音色隔离,包含后台监听、助手回放抑制和用户音色打断测试

This commit is contained in:
mkbk
2026-06-18 16:19:30 +08:00
parent d83f5a19cb
commit 6153cd2826
16 changed files with 584 additions and 71 deletions
@@ -170,6 +170,21 @@ The live runtime SHALL support a first-version barge-in path that can stop assis
- **WHEN** TTS playback starts and microphone input appears before `OWNER_BARGE_IN_ECHO_GUARD_MS`
- **THEN** the runtime SHALL NOT treat that input as a user barge-in
#### Scenario: Playback is monitored asynchronously
- **WHEN** an interruptible assistant reply is playing
- **THEN** the runtime SHALL listen to microphone frames from a background monitor rather than waiting for playback chunks to invoke microphone processing
- **AND** the playback transport SHALL stop remaining chunks when the monitor raises the shared stop signal
#### Scenario: Assistant playback voice is rejected
- **WHEN** microphone input during playback matches the current assistant playback timbre profile
- **THEN** the runtime SHALL NOT emit `barge_in_detected`
- **AND** it SHALL NOT display realtime transcript text for that assistant playback echo
#### Scenario: User voice interrupts playback
- **WHEN** microphone input after the echo guard matches the temporary process-local user timbre profile, does not match the assistant playback profile, passes VAD, and produces a valid realtime partial
- **THEN** the runtime SHALL emit `barge_in_detected`
- **AND** it SHALL stop playback promptly and process the buffered user frames as the next no-wake input
#### Scenario: Valid user speech interrupts playback
- **WHEN** TTS playback has passed the echo guard, VAD observes at least `OWNER_BARGE_IN_MIN_SPEECH_MS` of user speech, and realtime STT produces a valid partial transcript
- **THEN** the runtime SHALL emit `barge_in_detected`
@@ -181,6 +196,11 @@ The live runtime SHALL support a first-version barge-in path that can stop assis
- **THEN** the process-local conversation context SHALL append only the assistant text that had been fully spoken before interruption
- **AND** unspoken assistant text SHALL NOT be appended to the session history
#### Scenario: Barge-in speaker profiles are temporary
- **WHEN** the runtime builds user or assistant timbre profiles for interruption gating
- **THEN** those profiles SHALL remain in process memory only
- **AND** they SHALL NOT be written to disk, sent to the cloud LLM, or reused after process exit
### Requirement: Real provider live fixture acceptance
The system SHALL support scripted full-chain acceptance that drives the live pipeline with generated microphone PCM while using real local speech providers, the configured cloud LLM, and local TTS/playback capability.