Spaces:
Running
Running
Commit History
-
feat: add client-side Voice Clipper tab
Adds a new Voice Clipper tab that embeds a fully self-contained, browser-only waveform trim-and-splice editor (equivalent to the MemoCut Voice Memo Clipper Space), sandboxed in an iframe srcdoc. Users can drag-select ranges on a waveform, drag them into a clip tray, reorder/preview/remove clips, and export a combined WAV -- all via the Web Audio API. Audio never leaves the browser, so this workflow needs no GPU/model loading and has no upload size limit tied to processing time.3778061
-
fix: make download components visible after speaker separation completes
The output_files and report_file components were not becoming visible after successful speaker separation because they were only receiving values, not visibility updates. Changes: -------- - Wrap output_file_paths in gr.File(value=..., visible=True) - Wrap report_path in gr.File(value=..., visible=True) - Wrap summary in gr.JSON(value=..., visible=True) - Use gr.update(visible=True) for details_accordion This ensures all result components appear when processing completes successfully.1a6b8d0 -
fix: resolve ZeroGPU pickling errors across all audio processing services
This commit fixes pickling errors that occurred when running on HuggingFace Spaces with ZeroGPU. The errors affected all three main audio processing workflows: speaker separation, speaker extraction, and voice denoising. Root Cause: ----------- ZeroGPU's @spaces.GPU decorator serializes function arguments to transfer them to GPU workers. Two types of unpicklable objects were being passed: 1. PyTorch models and pipelines containing lambda functions and closures 2. Gradio progress callbacks (closures capturing parent scope) Solution Architecture: ---------------------- Refactored to use module-level GPU functions that only accept primitive, serializable arguments: 1. Models load fresh inside GPU context (not passed as arguments) 2. Progress callbacks stopped at web handler layer (never enter services) 3. Only primitives cross GPU boundary (arrays, strings, numbers, dicts) Changes by Layer: ----------------- ### Service Layer (src/services/): **speaker_separation.py:** - Created _r…3fb465f
-
fix: correct Speaker Extraction tab to prevent UI duplication
- Change return type from gr.Blocks to gr.Tab - Use gr.Tab() wrapper instead of gr.Blocks() - Remove duplicate heading (now part of tab title) - Fixes issue where Voice Denoising tab showed Speaker Extraction content - Fixes duplicate tab creation when switching tabs This applies the fix from aae3816f16c69e2ce1f783f2d72d3cff01aa53cb9fe2593 -
feat: implement cross-mode robustness fixes (phases 1-8)
Complete implementation of all core robustness improvements: Phase 1-2: Infrastructure - Add ErrorReport TypedDict for structured error handling - Add ProgressCallback type alias and stage constants - Configure SSL globally using certifi - Update HuggingFace API to use 'token' parameter Phase 3: Reliable Progress Reporting (US1) - Standardize float-based (0.0-1.0) progress callbacks - Update all services to emit consistent progress - Fix dictionary key access issues across web/CLI - Support both modern and legacy progress formats Phase 4: Consistent Error Handling (US2) - Implement ErrorReport with error_type categorization - Add structured error handling to all services - Generate JSON error reports in web interface - Add rich color-coded error messages in CLI Phase 5: Environment Compatibility (US3) - Verify SSL context for torch.hub and HuggingFace models - Audit all model loading for correct API parameters - Remove invalid ProcessingJob parameters Phase 6: UI State Management …95e1515 -
fix: convert relative imports to absolute imports for HuggingFace Spaces compatibility
ba92724 -
feat: complete audio speaker separation feature with 3 workflows
Implement comprehensive audio processing system with speaker separation, extraction, and denoising capabilities. All 85 tasks completed across 6 phases with full test coverage and documentation. Features: - Speaker Separation: Auto-detect and separate multi-speaker audio - Speaker Extraction: Extract specific speaker using reference clip - Voice Denoising: Remove silence and background noise with VAD Implementation: - 3 core services with pyannote.audio and Silero VAD integration - AudioConcatenationUtility with equal power crossfade - CLI commands: separate, extract-speaker, denoise - Gradio web UI tabs for all workflows - Comprehensive error handling and validation - Memory optimization for 2+ hour files - Processing metadata logging with resource tracking Technical: - Models: pyannote/speaker-diarization-3.1, wespeaker embeddings, Silero VAD - Audio I/O: FFmpeg integration for M4A/WAV conversion - Quality: Equal power crossfade, zero-crossing detection - Performance: Processing ≤…cb39c05