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