openquack

SPEC-001 — Voice capture

Status: ratified — shipped 2026-04-26 (Sources/OpenQuackKit/Audio/AudioRecorder.swift) Owner: OpenQuackKit/Audio/ Last updated: 2026-04-26

Goal

Capture microphone audio during a recording session into a buffer suitable for transcription: 16 kHz mono Float32. Cleanly start, stop, and cancel.

Non-goals

Public surface

public actor AudioRecorder {
    public init(sampleRate: Double = 16_000)
    public func start() throws
    public func stop() async -> [Float]      // 16 kHz mono float32, peak-normalised? TBD
    public func cancel() async
    public var isRecording: Bool { get async }
    /// 0.0 ... 1.0 short-term audio level for the overlay's level meter.
    public var currentLevel: Float { get async }
}

Behaviour

Permissions

Quality gates

Open questions

References