feat: add microphone input selector with device enumeration#9
Merged
Conversation
…Raw export UI - whisper.cpp: built binary, medium model downloaded - server/lib/whisper-transcriber.js: local transcription service - server/lib/audio-cleaner.js: 6-step ffmpeg pipeline - server/lib/filler-detector.js: word-boundary filler detection - server/lib/audio-converter.js: ffmpeg audio conversion - server/server.js: POST /api/export/transcribe + /api/export/clean endpoints - web/index.html: Clean/Raw export panel in recording deck - web/css/studio.css: Export panel styles - web/js/main.js: Export UI wiring - web/js/recording-manager.js: exportTrack() method API: - POST /api/export/transcribe - local Whisper.cpp transcription - POST /api/export/clean - audio cleaning pipeline
The import('fs') returned a Promise that was never awaited, causing
the concat manifest file to be written asynchronously after ffmpeg
tried to read it. This would result in an empty concat file and
ffmpeg failure.
Signed-off-by: Pip <pip@zerologic.com>
The parseMultipart function was trying to .split() a Buffer as if it were a string, causing 'body.split is not a function' errors on the transcribe endpoint. Also fix the boundary detection to properly handle binary audio data using Buffer.indexOf() instead of string split. Signed-off-by: Pip <pip@zerologic.com>
- server/lib/show-notes-generator.js: LLM-powered title/summary via LM Studio
- POST /api/export/show-notes: accepts transcript segments, returns {title, summary, segments}
- Post-Production UI panel: transcribe → auto-generate show notes with segment markers + copy/download
- Server extracts outputFormat from multipart form field for MP3/transcode (libmp3lame -qscale:a 2)
- archiver installed for zip bundle download (Task 3 in progress)
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.
Changes
removeTrack/addTrackpattern to keep stream ID stabledeviceIdparameter to target a specific inputWhy
Gives multi-host podcasters the ability to pick their mic without reloading or restarting. The in-place track swap avoids renegotiation and permission prompts on device change.