import requests import io import librosa.core as core import torch class AudioLoadPath: @classmethod def INPUT_TYPES(s): return {"required": { "path": ("STRING", {"default": "X://insert/path/here.mp4"}), "sample_rate": ("INT", {"default": 22050, "min": 6000, "max": 192000, "step": 1}), "offset": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1e6, "step": 0.001}), "duration": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1e6, "step": 0.001})}} RETURN_TYPES = ("AUDIO", ) CATEGORY = "EasyAI" FUNCTION = "load" def load(self, path: str, sample_rate: int, offset: float, duration: float|None): if duration == 0.0: duration = None if path.startswith(('http://', 'https://')): try: response = requests.get(path) response.raise_for_status() audio_data = io.BytesIO(response.content) import warnings with warnings.catch_warnings(): warnings.simplefilter("ignore") audio, _ = core.load(audio_data, sr=sample_rate, offset=offset, duration=duration) except Exception as e: raise Exception(f"加载网络音频失败: {str(e)}") else: audio, _ = core.load(path, sr=sample_rate, offset=offset, duration=duration) # 修改维度处理方式 audio = torch.from_numpy(audio).float() # 确保音频是二维张量 [channels, samples] if audio.dim() == 1: audio = audio.unsqueeze(0) # 添加channel维度 return (audio,) NODE_CLASS_MAPPINGS = { "AudioLoadPath": AudioLoadPath, }