How ckckh2023/tsinghuaelt-vmic works
VMIC is a Chrome extension that substitutes locally selected audio for microphone input on matching assessment pages. Users import files or capture page audio, choose a library item, and the extension supplies it as a media stream; settings control playback, monitoring, delay, looping, and noise. Source excerpts establish the background message handling, storage, bridge, capture, and audio-injection links. Other manifest-level wiring and unsampled implementation details are not inferred.
Main entry points: background.js Extension service worker · content-main.js Audio injector · content-capture.js Capture overlay · content-bridge.js Extension-page bridge
Components 15
Extension controls
- Popup controls
popup/popup.js - File picker
picker/picker.js - Audio settings
settings/settings.js
Audio library
- Extension service worker
background/background.js - IndexedDB helpers
lib/idb.js - Audio library store
- Built-in noise tracks
assets/whitevoice - Shared utilities
lib/common.js
Page audio capture
- Capture overlay
content/content-capture.js - Capture page proxy
content/content-capture-main.js
Microphone injection
- Extension-page bridge
content/content-bridge.js - Audio injector
content/content-main.js
Other components
- User
- Assessment webpage
- Browser media APIs
Connections 23
- User → Popup controls: controls playback
- User → File picker: imports audio
- User → Audio settings: changes settings
- User → Capture overlay: captures audio
- Popup controls → Extension service worker: sends commands
- File picker → Extension service worker: manages library
- File picker → IndexedDB helpers: writes audio
- Audio settings → Extension service worker: updates state
- Extension service worker → IndexedDB helpers: reads and writes
- IndexedDB helpers → Audio library store: persists records
- Extension service worker → Built-in noise tracks: loads noise
- Extension service worker → Shared utilities: uses utilities
- Extension service worker → Extension-page bridge: broadcasts page sync
- Extension-page bridge → Extension service worker: requests state and audio
- Extension-page bridge → Audio injector: forwards page data
- Audio injector → Extension-page bridge: requests sync and noise
- Audio injector → Browser media APIs: builds audio stream
- Assessment webpage → Audio injector: requests microphone
- Audio injector → Assessment webpage: provides substituted stream
- Assessment webpage → Capture overlay: plays page audio
- Capture overlay → Capture page proxy: requests fetch or preview
- Capture page proxy → Capture overlay: returns fetch result
- Capture overlay → Extension service worker: adds captured audio