silence trimmer
This commit is contained in:
@ -11,7 +11,7 @@ from fastapi import APIRouter, HTTPException, Query
|
||||
from fastapi.responses import FileResponse
|
||||
from pydantic import BaseModel
|
||||
|
||||
from services.audio_cleaner import clean_audio, is_deepfilter_available
|
||||
from services.audio_cleaner import clean_audio, detect_silence_ranges, is_deepfilter_available
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
router = APIRouter()
|
||||
@ -25,6 +25,12 @@ class AudioCleanRequest(BaseModel):
|
||||
output_path: Optional[str] = None
|
||||
|
||||
|
||||
class SilenceDetectRequest(BaseModel):
|
||||
input_path: str
|
||||
min_silence_ms: int = 500
|
||||
silence_db: float = -35.0
|
||||
|
||||
|
||||
@router.post("/audio/clean")
|
||||
async def clean_audio_endpoint(req: AudioCleanRequest):
|
||||
try:
|
||||
@ -46,6 +52,24 @@ async def audio_capabilities():
|
||||
}
|
||||
|
||||
|
||||
@router.post("/audio/detect-silence")
|
||||
async def detect_silence_endpoint(req: SilenceDetectRequest):
|
||||
try:
|
||||
ranges = detect_silence_ranges(
|
||||
req.input_path,
|
||||
req.min_silence_ms,
|
||||
req.silence_db,
|
||||
)
|
||||
return {
|
||||
"status": "ok",
|
||||
"ranges": ranges,
|
||||
"count": len(ranges),
|
||||
}
|
||||
except Exception as e:
|
||||
logger.error(f"Silence detection failed: {e}", exc_info=True)
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/audio/waveform")
|
||||
async def get_waveform_audio(path: str = Query(...)):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user