@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 82531edbfb
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 5, 02:15 UTC

[Refactor] Remove `resampy` dependency (#39524)

Signed-off-by: Isotr0py <mozf@mail2.sysu.edu.cn>

Isotr0py committed Apr 16, 2026 at 23:48 UTC 82531edbfb6b33e1c8667dea15c8622f011dcef0
7 files changed +3 -37
requirements/test/cuda.in
-1
@@ -21,7 +21,6 @@ vocos # required for minicpmo_26 test
21 peft>=0.18.1 # required for phi-4-mm test
22 pqdm
23 ray[cgraph,default]>=2.48.0 # Ray Compiled Graph, required by pipeline parallelism tests
24 -resampy # required for audio tests
24 sentence-transformers>=5.2.0 # required for embedding tests
25 soundfile # required for audio tests
26 jiwer # required for audio tests
requirements/test/cuda.txt
-4
@@ -555,7 +555,6 @@ numba==0.61.2
555 # -c requirements/cuda.txt
556 # -r requirements/test/cuda.in
557 # librosa
558 - # resampy
558 numpy==2.2.6
559 # via
560 # -r requirements/test/cuda.in
@@ -596,7 +595,6 @@ numpy==2.2.6
595 # pyogrio
596 # pywavelets
597 # rasterio
599 - # resampy
598 # rioxarray
599 # rouge-score
600 # runai-model-streamer
@@ -1015,8 +1013,6 @@ requests==2.32.3
1013 # tacoreader
1014 # tiktoken
1015 # wandb
1018 -resampy==0.4.3
1019 - # via -r requirements/test/cuda.in
1016 responses==0.25.3
1017 # via genai-perf
1018 rfc3339-validator==0.1.4
requirements/test/rocm.in
-1
@@ -23,7 +23,6 @@ vocos # required for minicpmo_26 test
23 peft>=0.15.0 # required for phi-4-mm test
24 pqdm
25 ray[cgraph,default]>=2.48.0 # Ray Compiled Graph, required by pipeline parallelism tests
26 -resampy # required for audio tests
26 sentence-transformers>=5.2.0 # required for embedding tests
27 soundfile # required for audio tests
28 jiwer # required for audio tests
requirements/test/rocm.txt
-4
@@ -662,7 +662,6 @@ numba==0.61.2
662 # -c requirements/rocm.txt
663 # -r requirements/test/rocm.in
664 # librosa
665 - # resampy
665 numkong==7.1.1
666 # via albucore
667 numpy==2.2.6
@@ -708,7 +707,6 @@ numpy==2.2.6
707 # pytrec-eval-terrier
708 # pywavelets
709 # rasterio
711 - # resampy
710 # rioxarray
711 # rouge-score
712 # runai-model-streamer
@@ -1193,8 +1191,6 @@ requests==2.32.5
1191 # tacoreader
1192 # tiktoken
1193 # wandb
1196 -resampy==0.4.3
1197 - # via -r requirements/test/rocm.in
1194 responses==0.26.0
1195 # via genai-perf
1196 rfc3339-validator==0.1.4
setup.py
-1
@@ -1093,7 +1093,6 @@ setup(
1093 "runai": ["runai-model-streamer[s3,gcs,azure] >= 0.15.7"],
1094 "audio": [
1095 "av",
1096 - "resampy",
1096 "scipy",
1097 "soundfile",
1098 "mistral_common[audio]",
vllm/multimodal/audio.py
+1 -19
@@ -16,11 +16,6 @@ try:
16 except ImportError:
17 av = PlaceholderModule("av") # type: ignore[assignment]
18
19 -try:
20 - import resampy
21 -except ImportError:
22 - resampy = PlaceholderModule("resampy") # type: ignore[assignment]
23 -
19 try:
20 import scipy.signal as scipy_signal
21 except ImportError:
@@ -229,15 +224,6 @@ def resample_audio_pyav(
224 return result[:expected_len]
225
226
232 -def resample_audio_resampy(
233 - audio: npt.NDArray[np.floating],
234 - *,
235 - orig_sr: float,
236 - target_sr: float,
237 -) -> npt.NDArray[np.floating]:
238 - return resampy.resample(audio, sr_orig=orig_sr, sr_new=target_sr)
239 -
240 -
227 def resample_audio_scipy(
228 audio: npt.NDArray[np.floating],
229 *,
@@ -257,7 +243,7 @@ class AudioResampler:
243 def __init__(
244 self,
245 target_sr: float | None = None,
260 - method: Literal["pyav", "resampy", "scipy"] = "resampy",
246 + method: Literal["pyav", "scipy"] = "pyav",
247 ):
248 self.target_sr = target_sr
249 self.method = method
@@ -281,10 +267,6 @@ class AudioResampler:
267 return audio
268 if self.method == "pyav":
269 return resample_audio_pyav(audio, orig_sr=orig_sr, target_sr=self.target_sr)
284 - if self.method == "resampy":
285 - return resample_audio_resampy(
286 - audio, orig_sr=orig_sr, target_sr=self.target_sr
287 - )
270 elif self.method == "scipy":
271 return resample_audio_scipy(
272 audio, orig_sr=orig_sr, target_sr=self.target_sr
vllm/multimodal/media/audio.py
+2 -7
@@ -10,6 +10,7 @@ import pybase64
10 import torch
11
12 from vllm.logger import init_logger
13 +from vllm.multimodal.audio import resample_audio_pyav
14 from vllm.utils.import_utils import PlaceholderModule
15 from vllm.utils.serial_utils import tensor2base64
16
@@ -28,12 +29,6 @@ except ImportError:
29 soundfile = PlaceholderModule("soundfile") # type: ignore[assignment]
30
31
31 -try:
32 - import resampy
33 -except ImportError:
34 - resampy = PlaceholderModule("resampy") # type: ignore[assignment]
35 -
36 -
32 # Public libsndfile error codes exposed via `soundfile.LibsndfileError.code`, soundfile
33 # being librosa's main backend. Used to validate if an audio loading error is due to a
34 # server error vs a client error (invalid audio file).
@@ -129,7 +124,7 @@ def load_audio_soundfile(
124 y = np.mean(y, axis=tuple(range(y.ndim - 1)))
125
126 if sr is not None and sr != native_sr:
132 - y = resampy.resample(y, sr_orig=native_sr, sr_new=sr)
127 + y = resample_audio_pyav(y, orig_sr=native_sr, target_sr=sr)
128 return y, int(sr)
129 return y, native_sr
130