vllm-project/vllm-omni

[CI/Test] Add Fish Speech TTS e2e test (no e2e coverage in any pipeline tier)

Open

#4,226 创建于 2026年6月7日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)Python (1,067 fork)github user discovery
good first issuetts

仓库指标

Star
 (4,990 star)
PR 合并指标
 (PR 指标待抓取)

描述

Summary

Fish Speech has no end-to-end test in tests/e2e/. Every other TTS model has at least a core_model online smoke test that runs in CI, but Fish Speech only has CPU unit/regression tests, so no GPU serving path is exercised in any pipeline tier.

Why this matters

The CI tiers gate TTS e2e coverage by pytest marker:

Because no Fish Speech test lives under tests/e2e/ and none carries the tts marker, both tts-test and nightly-test are no-ops for Fish Speech. Recent Fish Speech bug fixes (prefix-cache collision #4008, Gradio default-voice 400 #3941) had no e2e path to catch them.

What to do

Add an online serving e2e smoke that mirrors the VoxCPM2 pattern:

  1. Create tests/e2e/online_serving/test_fish_speech_tts.py
  2. Mark it @pytest.mark.core_model + @pytest.mark.tts (add L4 + full_model variants if feasible)
  3. Cover a basic /v1/audio/speech text-to-speech request and a voice-clone request (ref_audio + ref_text), asserting non-empty, non-silent audio
  4. Reference implementations:
    • VoxCPM2 e2e: tests/e2e/online_serving/test_voxcpm2_tts.py
    • Fish Speech serving path: vllm_omni/entrypoints/openai/serving_speech.py
    • Example client: examples/online_serving/text_to_speech/fish_speech/

Acceptance criteria

  • Test collected by pytest -m "core_model and tts" and by the nightly tts-test selector
  • Passes on an L4 GPU with the published Fish Speech checkpoint

Good first issue for someone wanting to learn the vLLM-Omni TTS serving + CI test layout.

贡献者指南