Skip to content

feat(mobile): experimental voice-processing toggle for noisy capture#7

Merged
m5d215 merged 2 commits into
mainfrom
feat/mobile-voice-processing
Jul 9, 2026
Merged

feat(mobile): experimental voice-processing toggle for noisy capture#7
m5d215 merged 2 commits into
mainfrom
feat/mobile-voice-processing

Conversation

@m5d215

@m5d215 m5d215 commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Field feedback: transcription was poor while walking outdoors with the phone on a neck strap. That's a worst case — wind at chest level, distance to both speakers, street noise. Most of the loss is acoustic, but Apple's voice processing (noise suppression + AGC) is the cheapest software lever to try against the noise floor.

What

  • Opt-in toggle enabling setVoiceProcessingEnabled(true) on the mic input node (Apple AEC/NS/AGC).
  • Uses .playAndRecord when on (required by the voice-processing IO unit), persists across engine restarts, and degrades to plain capture if unavailable.
  • Settings toggle "ノイズ抑制(実験)", default off.

Why a toggle

Voice processing is tuned for near-field single-speaker, so it can suppress a distant second speaker. On/off needs to be A/B'd in the same real-world setting (e.g. the same walk), so it's an explicit toggle rather than always-on.

Not a wind silver bullet — iOS has no public wind-noise API. If both states are still poor, the realistic paths are a worn mic (AirPods) or record-now/transcribe-later with Whisper.

Verification

Mobile simulator build succeeds. Effect is only observable on device in a noisy setting.

🤖 Generated with Claude Code

m5d215 and others added 2 commits July 6, 2026 10:03
Add an opt-in toggle that enables Apple's voice processing (noise suppression
+ AGC) on the mic input node via setVoiceProcessingEnabled. Aimed at lowering
the noise floor outdoors / in wind / in traffic. It's tuned for near-field
single-speaker, so it can suppress a distant second speaker — hence a toggle
to A/B on the same walk. Uses .playAndRecord when enabled, persists across
engine restarts, and degrades to plain capture if unavailable. Default off.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@m5d215
m5d215 merged commit 3fdaec4 into main Jul 9, 2026
3 checks passed
@m5d215
m5d215 deleted the feat/mobile-voice-processing branch July 9, 2026 01:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant