import subprocess from utils.logger_config import setup_logger logger = setup_logger(__name__) def extract_audio(video_path): """ Extract audio from video file using ffmpeg Args: video_path: Path to input video file Returns: str: Path to extracted audio file (.wav) """ try: # Generate output audio path by replacing video extension with .wav audio_path = video_path.rsplit('.', 1)[0] + '.wav' # ffmpeg command to extract audio command = [ 'ffmpeg', '-y', '-i', video_path, '-vn', # Disable video '-acodec', 'pcm_s16le', # Set audio codec '-ar', '16000', # Set sample rate '-ac', '1', # Set to mono channel audio_path ] # Execute ffmpeg command result = subprocess.run(command, capture_output=True, text=True) if result.returncode != 0: logger.error(f"Audio extraction failed: {result.stderr}") raise RuntimeError("Failed to extract audio") # logger.info("音频文件提取成功!") return audio_path except Exception as e: logger.error(f"Error during audio extraction: {str(e)}") raise