36 lines
1.5 KiB
Python
36 lines
1.5 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
"""Higgs-Audio v2 serving adapter."""
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from vllm_omni.entrypoints.openai.tts_adapters import register_tts_adapter
|
|
from vllm_omni.entrypoints.openai.tts_adapters.base import ARTTSAdapter, PreparedRequest
|
|
|
|
if TYPE_CHECKING:
|
|
from vllm_omni.entrypoints.openai.protocol.audio import OpenAICreateSpeechRequest
|
|
|
|
|
|
@register_tts_adapter
|
|
class HiggsAudioV2Adapter(ARTTSAdapter):
|
|
stage_keys = frozenset({"higgs_audio_v2"})
|
|
name = "higgs_audio_v2"
|
|
|
|
def validate(self, request: "OpenAICreateSpeechRequest") -> str | None:
|
|
err = self.ctx.server._apply_uploaded_speaker(request)
|
|
if err:
|
|
return err
|
|
return self.ctx.server._validate_higgs_audio_v2_request(request)
|
|
|
|
async def build(
|
|
self, request: "OpenAICreateSpeechRequest", sampling_params_list: list, has_inline_ref_audio: bool
|
|
) -> PreparedRequest:
|
|
server = self.ctx.server
|
|
prompt = await server._build_higgs_audio_v2_params(request)
|
|
if request.voice:
|
|
voice_lower = request.voice.lower()
|
|
if voice_lower in server.uploaded_speakers and not has_inline_ref_audio:
|
|
additional = prompt.setdefault("additional_information", {})
|
|
additional["voice_name"] = voice_lower
|
|
additional["voice_created_at"] = server._voice_created_at(voice_lower)
|
|
return PreparedRequest(prompt=prompt, tts_params={}, model_type="higgs_audio_v2")
|