Repository navigation
Conversation
…formance # Conflicts: # openless-all/ios/scripts/test-audio.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and behavior
Microphone enhancement was repeatedly allocating temporary buffers and calculating sinc kernels per output sample. This increases processing cost, especially alongside local ASR on mobile devices.
Reuse shared processing buffers and cache bounded rational resampling phases. Preserve the original filter, including at native 48 kHz, to keep the denoiser input unchanged. Add baseline x86-64 SSE and ARM64 NEON projection kernels with separate multiply/add and unchanged accumulation order. Software DSP stays at 48 kHz; ASR still receives 16 kHz mono PCM16. Android requests 48 kHz capture and retains a native-format CPAL fallback. Both egui and Tauri expose all six EQ presets and the expanded parameter ranges.
Complete MicYou audio-settings parity with six EQ presets, expanded parameter ranges, optional Android session-bound system AEC/NS/AGC, and opt-in raw/processed FFT monitoring. Monitoring is throttled and expires when the UI stops renewing it. Capture queues are not enlarged. AEC7 remains unexposed without a synchronized speaker reference; playback-buffer tuning is not applied to ASR. Preserve the pinned upstream importer and refresh its reviewed adapter patch.
Validation
audio_performanceexample is included.Additional platform UI and numerical comparison
Add native iOS audio settings for the enhancement toggle, all software denoisers, gain/AGC, gate, comb filter, ten-band EQ/preamp, six EQ presets and processing order. Connect these persisted settings to the native Rust recorder with session-frozen processing and a stop/drain flush; default enhancement remains off. Writes are blocked while recording. Tauri (Windows/macOS/Android), Harmony's shared settings, and Linux egui retain their applicable settings and presets. Android system effects remain platform-specific.
Reuse input conversion scratch in the external PCM recorder and bounded, exact-capacity output PCM scratch in the native iOS Swift actor. Add a frozen Swift converter oracle and byte-for-byte tests over up to 32 format/ownership/packetization combinations and flush. CI exposed pre-existing frame loss in the original variable-packet converter (15040 instead of 16000 samples for 44.1 kHz); honor requested input frame counts with a cursor and drain available output to avoid dropping packet suffixes. Both fixed and variable new packetizations must match the complete, original fixed-100ms waveform, with the duration assertion retained. These Apple SDK tests require CI execution, not claimed as locally passed.
Independently built the same
audio_equivalenceprobe against baselinef0744e10and the optimized Rust sources. On Linux x86-64 all 48 synthetic cases produced byte-identical PCM: 0 differing cases, 0 LSB maximum error, identical lengths. Cases cover 16/44.1/48 kHz, mono/stereo, all four denoiser modes, combined effects, silence/noise/tones/impulses, irregular chunks and a partial final frame. Per-case hashes and diagnostic timings are inscripts/fixtures/audio-equivalence-2026-10-24.json. The comparator's negative controls reject a one-LSB mutation and truncation. External recorder regressions and strict Core Clippy passed locally.No real-device test, listening study, speech-recognition quality evaluation, or battery measurement was performed. Android system-effect quality remains OEM-dependent. Native Apple changes require Apple CI validation. Existing CI workflows are unchanged.