forked from Manuel/meeting-assistant
feat: add macOS meeting audio capture
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Recording mode captures microphone and computer output
|
||||
Meeting Assistant SHALL capture microphone input and computer output and combine them into one audio stream for transcription on supported Windows and macOS hosts.
|
||||
|
||||
Meeting Assistant SHALL capture audio as 16 kHz mono PCM chunks for the existing recording and transcription pipeline.
|
||||
|
||||
Meeting Assistant SHALL capture microphone and system loopback as separate input streams before producing the final mono chunks.
|
||||
|
||||
On Windows, Meeting Assistant SHALL retain the existing NAudio microphone and WASAPI loopback implementation.
|
||||
|
||||
On macOS, Meeting Assistant SHALL capture the default microphone through AVFoundation and computer output through ScreenCaptureKit without requiring a virtual audio device.
|
||||
|
||||
The macOS capture adapter SHALL convert both native sources to signed 16-bit PCM using the active run's configured sample rate and channel count before passing chunks to the existing managed mixing pipeline.
|
||||
|
||||
The macOS capture adapter SHALL stop its native capture process when the recording capture token is cancelled.
|
||||
|
||||
When macOS privacy permission is missing or denied, Meeting Assistant SHALL fail capture with an actionable message identifying the required Microphone or Screen Recording/System Audio permission.
|
||||
|
||||
Meeting Assistant SHALL clean the microphone stream with a local acoustic echo cancellation stage that uses system loopback as the far-end reference.
|
||||
|
||||
Meeting Assistant SHALL produce final mono chunks by adding the cleaned microphone samples and system samples.
|
||||
|
||||
Meeting Assistant SHALL align microphone and system samples through per-source buffers before producing final chunks and SHALL apply the existing configured gains and clamping behavior.
|
||||
|
||||
Meeting Assistant SHALL write only the mixed stream to the temporary WAV used by transcription and finalization.
|
||||
|
||||
#### Scenario: macOS records both meeting-audio sources
|
||||
- **GIVEN** the portable build is running on macOS
|
||||
- **AND** Microphone and Screen Recording/System Audio permissions are granted
|
||||
- **WHEN** a meeting recording starts
|
||||
- **THEN** Meeting Assistant captures microphone audio through AVFoundation
|
||||
- **AND** captures computer output through ScreenCaptureKit
|
||||
- **AND** passes both signed 16-bit PCM streams through the existing mixer
|
||||
|
||||
#### Scenario: macOS capture uses run audio format
|
||||
- **GIVEN** an active macOS recording configures a sample rate and channel count
|
||||
- **WHEN** the native capture helpers start
|
||||
- **THEN** both helpers emit signed 16-bit PCM with that sample rate and channel count
|
||||
|
||||
#### Scenario: macOS recording stops native capture
|
||||
- **GIVEN** macOS microphone and system capture are active
|
||||
- **WHEN** Meeting Assistant stops capture
|
||||
- **THEN** it terminates both native capture processes
|
||||
- **AND** PCM already delivered to the managed pipeline before stop remains available to the existing recording pipeline
|
||||
|
||||
#### Scenario: macOS privacy permission is unavailable
|
||||
- **WHEN** macOS denies microphone or Screen Recording/System Audio capture permission
|
||||
- **THEN** Meeting Assistant reports which macOS privacy permission is required
|
||||
|
||||
#### Scenario: Windows audio capture remains isolated
|
||||
- **GIVEN** Meeting Assistant is compiled for the Windows target
|
||||
- **WHEN** the application registers and starts meeting audio capture
|
||||
- **THEN** it uses the existing NAudio microphone and WASAPI loopback sources
|
||||
- **AND** does not invoke or require the macOS native helper
|
||||
Reference in New Issue
Block a user