vllm-project--vllm-omni
58 行
2.0 KiB
Python
58 行
2.0 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
"""Unit tests for the SLERP interpolation math in speaker_embedding_interpolation.py."""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import numpy as np
|
|
import pytest
|
|
|
|
# Import the slerp function from the example script.
|
|
_examples_dir = str(
|
|
Path(__file__).parent.parent.parent / "examples" / "online_serving" / "text_to_speech" / "qwen3_tts"
|
|
)
|
|
sys.path.insert(0, _examples_dir)
|
|
from speaker_embedding_interpolation import slerp # noqa: E402
|
|
|
|
pytestmark = [pytest.mark.core_model, pytest.mark.cpu]
|
|
|
|
|
|
class TestSlerp:
|
|
def test_endpoints(self):
|
|
"""t=0 returns v0, t=1 returns v1."""
|
|
v0 = np.random.randn(1024).astype(np.float64)
|
|
v1 = np.random.randn(1024).astype(np.float64)
|
|
np.testing.assert_allclose(slerp(v0, v1, 0.0), v0, atol=1e-6)
|
|
np.testing.assert_allclose(slerp(v0, v1, 1.0), v1, atol=1e-6)
|
|
|
|
def test_midpoint_unit_norm(self):
|
|
"""Midpoint of two unit vectors should also be approximately unit norm."""
|
|
v0 = np.random.randn(1024)
|
|
v0 /= np.linalg.norm(v0)
|
|
v1 = np.random.randn(1024)
|
|
v1 /= np.linalg.norm(v1)
|
|
mid = slerp(v0, v1, 0.5)
|
|
assert abs(np.linalg.norm(mid) - 1.0) < 0.05
|
|
|
|
def test_parallel_vectors_fallback(self):
|
|
"""Parallel vectors (omega~0) fall back to lerp without error."""
|
|
v0 = np.ones(1024)
|
|
v1 = np.ones(1024) * 1.001 # nearly parallel
|
|
result = slerp(v0, v1, 0.5)
|
|
expected = 0.5 * v0 + 0.5 * v1
|
|
np.testing.assert_allclose(result, expected, atol=1e-4)
|
|
|
|
def test_antiparallel_vectors(self):
|
|
"""Antiparallel vectors (omega~pi) should not produce NaN."""
|
|
v0 = np.ones(1024)
|
|
v1 = -np.ones(1024)
|
|
result = slerp(v0, v1, 0.5)
|
|
assert not np.any(np.isnan(result))
|
|
|
|
def test_output_shape_matches_input(self):
|
|
"""Output shape must match input shape."""
|
|
v0 = np.random.randn(2048)
|
|
v1 = np.random.randn(2048)
|
|
assert slerp(v0, v1, 0.3).shape == (2048,)
|