fix(moss-tts-nano): remove unused voice variable (ruff F841)

The upstream inference_stream() API has no voice/spk parameter;
voice preset selection is not yet wired into the call. Remove the
dead assignment to silence ruff F841.

Signed-off-by: Yueqian Lin <linyueqian@outlook.com>
This commit is contained in:
Yueqian Lin authored and Yueqian Lin committed 2026-04-14 13:11:43 -04:00
1 parent 38aaaebeda
commit 033e4041be
3 files changed
+27 -24

No files matched your search

@@ -40,9 +40,7 @@ from vllm_omni import Omni # noqa: E402
MODEL = "OpenMOSS-Team/MOSS-TTS-Nano"
_REPO_ROOT = Path(__file__).resolve().parents[4]
DEFAULT_STAGE_CONFIG = str(
_REPO_ROOT / "vllm_omni" / "model_executor" / "stage_configs" / "moss_tts_nano.yaml"
)
DEFAULT_STAGE_CONFIG = str(_REPO_ROOT / "vllm_omni" / "model_executor" / "stage_configs" / "moss_tts_nano.yaml")
BATCH_SAMPLES = [
{"text": "Hello, this is a test of MOSS-TTS-Nano.", "voice": "Ava", "label": "en_hello"},
@@ -118,10 +116,7 @@ def main(args) -> None:
if args.batch:
print(f"Running batch synthesis ({len(BATCH_SAMPLES)} samples)...")
inputs = [
build_request(s["text"], voice=s["voice"], seed=args.seed)
for s in BATCH_SAMPLES
]
inputs = [build_request(s["text"], voice=s["voice"], seed=args.seed) for s in BATCH_SAMPLES]
params_list = [sampling_params] * len(inputs)
else:
print(f"Synthesizing: {args.text!r}")
@@ -27,9 +27,7 @@ import logging
try:
import gradio as gr
except ImportError:
raise ImportError(
"gradio is required to run this demo. Install it with: pip install 'vllm-omni[demo]'"
) from None
raise ImportError("gradio is required to run this demo. Install it with: pip install 'vllm-omni[demo]'") from None
import httpx
import numpy as np
@@ -602,8 +600,8 @@ def create_app(api_base: str):
if stream:
return (
gr.update(value="pcm", interactive=False),
gr.update(visible=True), # player
gr.update(visible=False), # audio
gr.update(visible=True), # player
gr.update(visible=False), # audio
)
return (
gr.update(value="wav", interactive=True),
@@ -619,9 +617,9 @@ def create_app(api_base: str):
def on_reset():
return (
"", # text
None, # audio_output
"", # hidden_payload
"", # text
None, # audio_output
"", # hidden_payload
PLAYER_HTML, # reset player
)
@@ -672,9 +670,7 @@ def main():
parser = argparse.ArgumentParser(
description="Gradio demo for MOSS-TTS-Nano with gapless AudioWorklet streaming.",
)
parser.add_argument(
"--api-base", default=DEFAULT_API_BASE, help=f"API base URL (default: {DEFAULT_API_BASE})"
)
parser.add_argument("--api-base", default=DEFAULT_API_BASE, help=f"API base URL (default: {DEFAULT_API_BASE})")
parser.add_argument("--host", default="0.0.0.0", help="Gradio host (default: 0.0.0.0)")
parser.add_argument("--port", type=int, default=7860, help="Gradio port (default: 7860)")
parser.add_argument("--share", action="store_true", help="Share publicly via Gradio tunnel")
@@ -686,6 +682,7 @@ def main():
app = create_app(args.api_base)
import uvicorn
uvicorn.run(app, host=args.host, port=args.port)
@@ -19,7 +19,6 @@ so that vLLM initialises distributed state before any CUDA allocations occur.
from __future__ import annotations
import logging
import tempfile
import threading
from collections.abc import Iterable
@@ -40,8 +39,10 @@ def _patch_torchaudio_load() -> None:
"""Patch torchaudio.load to use soundfile if torchcodec is unavailable."""
try:
import torchaudio
torchaudio # noqa
import torchcodec # noqa: F401
return
except Exception:
pass
@@ -67,6 +68,7 @@ def _patch_torchaudio_load() -> None:
try:
import torchaudio
torchaudio.load = _soundfile_load
torchaudio.save = _soundfile_save
logger.info("Patched torchaudio.load/save to use soundfile (torchcodec unavailable)")
@@ -151,12 +153,16 @@ class MossTTSNanoForGeneration(nn.Module):
logger.info("Loading MOSS-TTS-Nano LM from %s (dtype=%s)", self.model_path, tts_dtype)
from transformers import AutoModelForCausalLM
lm = AutoModelForCausalLM.from_pretrained(
self.model_path, trust_remote_code=True, torch_dtype=tts_dtype,
self.model_path,
trust_remote_code=True,
torch_dtype=tts_dtype,
)
if device.type == "cuda":
try:
import flash_attn # noqa: F401
lm._set_attention_implementation("flash_attention_2")
logger.info("MOSS-TTS-Nano using flash_attention_2")
except ImportError:
@@ -168,13 +174,17 @@ class MossTTSNanoForGeneration(nn.Module):
logger.info("MOSS-TTS-Nano LM loaded on %s", device)
codec_path: str = getattr(
self.config, "audio_tokenizer_pretrained_name_or_path",
self.config,
"audio_tokenizer_pretrained_name_or_path",
"OpenMOSS-Team/MOSS-Audio-Tokenizer-Nano",
)
logger.info("Loading MOSS-Audio-Tokenizer-Nano from %s", codec_path)
from transformers import AutoModel
audio_tokenizer = AutoModel.from_pretrained(
codec_path, trust_remote_code=True, torch_dtype=torch.float32,
codec_path,
trust_remote_code=True,
torch_dtype=torch.float32,
)
audio_tokenizer.to(device=device)
audio_tokenizer.eval()
@@ -208,7 +218,6 @@ class MossTTSNanoForGeneration(nn.Module):
yield torch.zeros((sr,), dtype=torch.float32), True
return
voice: str = str(_pick(info, "voice", _DEFAULT_VOICE))
mode: str = str(_pick(info, "mode", _DEFAULT_MODE))
prompt_audio_path: str | None = _pick(info, "prompt_audio_path", None)
if prompt_audio_path is not None:
@@ -402,7 +411,9 @@ class MossTTSNanoForGeneration(nn.Module):
vocab_size = int(getattr(self.config, "vocab_size", 32000))
num_rows = int(hidden_states.shape[0])
logits = torch.zeros(
(num_rows, vocab_size), dtype=torch.float32, device=hidden_states.device,
(num_rows, vocab_size),
dtype=torch.float32,
device=hidden_states.device,
)
eos_id = 2 if vocab_size > 2 else 0
safe_id = 1 if vocab_size > 1 and 1 != eos_id else 0