## MODIFIED Requirements ### Requirement: Azure Speech can provide streaming transcription Meeting Assistant SHALL provide an Azure Speech speech recognition pipeline that streams captured PCM audio to Azure AI Speech through the Azure Speech SDK conversation transcription API. The Azure Speech adapter SHALL use configurable endpoint, region, language, key, and key environment variable settings. The Azure Speech adapter SHALL support configurable diarization of intermediate conversation transcription results. The Azure Speech adapter SHALL bound recognizer shutdown after the input audio stream is closed. When Azure Speech is the configured speech recognition pipeline, Meeting Assistant SHALL emit live transcript segments from Azure conversation transcription events with Azure speaker IDs when available. When Azure Speech is the configured speech recognition pipeline, Meeting Assistant SHALL use the live Azure conversation transcription segments as the finished transcript without running pyannote finalization. When Azure Speech reports a transient connectivity interruption, Meeting Assistant SHALL keep accepting captured audio into the active in-process pipeline buffer. When Azure Speech is reconnecting, Meeting Assistant SHALL write a transcript marker in the form ``. When Azure Speech emits the next real transcript segment after reconnecting, Meeting Assistant SHALL replace the latest reconnect marker with that transcript segment. When Azure Speech cannot reconnect after the configured immediate retry attempts, Meeting Assistant SHALL write a transcript marker explaining that Azure Speech is disconnected, recording can continue, and transcription/summarization will continue after Azure reconnects. After Azure Speech reconnects through a new SDK session, Meeting Assistant SHALL clear live speaker-label assumptions for future Azure speaker labels. When Azure Speech is still unavailable after recording stops and transcription cannot drain before the configured stop-processing timeout, Meeting Assistant SHALL persist the stopped meeting as a durable transcription backlog item that references the completed mixed WAV and meeting artifacts. When a stopped meeting is persisted to the durable transcription backlog, Meeting Assistant SHALL release the active recording slot so another meeting can be recorded while the stopped meeting waits for Azure Speech to become available. When Azure Speech becomes available again, Meeting Assistant SHALL retry durable backlog items, rewrite the transcript from the recorded WAV, run the normal post-transcription meeting completion and summary flow, and remove the backlog item after successful completion. When Meeting Assistant starts, it SHALL preserve WAV files that are referenced by durable transcription backlog items instead of deleting them as stale temporary recordings. #### Scenario: Azure Speech pipeline is configured - **WHEN** the configured provider is `azure-speech` - **THEN** Meeting Assistant streams captured PCM chunks to Azure AI Speech conversation transcription through the configured speech recognition pipeline without changing recording control or transcript persistence code #### Scenario: Azure Speech returns speaker IDs - **WHEN** Azure Speech conversation transcription returns transcript text with speaker identity - **THEN** Meeting Assistant emits ordered transcript segments with those Azure speaker identities #### Scenario: Azure Speech key is resolved from environment - **WHEN** Azure Speech is configured with `KeyEnv` - **THEN** Meeting Assistant reads the Azure Speech key from that environment variable #### Scenario: Azure Speech stream shutdown is bounded - **WHEN** the captured audio stream has ended - **THEN** Meeting Assistant stops Azure Speech continuous recognition within the configured stop timeout instead of waiting indefinitely #### Scenario: Azure Speech transcript is finalized from live conversation segments - **WHEN** the configured provider is `azure-speech` and live Azure transcript segments exist - **THEN** Meeting Assistant uses the live Azure conversation transcript segments as the finished transcript #### Scenario: Azure reconnect marker is replaced by next transcript line - **GIVEN** Azure Speech reports a transient connectivity interruption - **WHEN** Meeting Assistant writes `` and Azure later emits a transcript segment - **THEN** Meeting Assistant replaces the reconnect marker with the transcript segment - **AND** keeps later transcript lines intact #### Scenario: Azure disconnected marker keeps meeting recording alive - **GIVEN** Azure Speech cannot reconnect after the configured immediate retry attempts - **WHEN** meeting audio continues to be captured - **THEN** Meeting Assistant writes a transcript marker explaining that Azure Speech is disconnected - **AND** keeps buffering captured audio in the active process for later transcription #### Scenario: Stopped Azure meeting is queued durably while offline - **GIVEN** Azure Speech cannot finish transcription before the recording stop-processing timeout - **WHEN** the user stops the meeting - **THEN** Meeting Assistant persists a durable backlog item for the stopped meeting - **AND** keeps the completed mixed WAV referenced by that backlog item - **AND** returns to an idle recording state so another meeting can start #### Scenario: Durable Azure backlog resumes after connectivity returns - **GIVEN** a stopped Azure meeting exists in the durable transcription backlog - **WHEN** Azure Speech can transcribe the recorded WAV - **THEN** Meeting Assistant rewrites the transcript from the recorded WAV - **AND** runs meeting completion and summarization - **AND** removes the durable backlog item and its temporary WAV after successful completion