MCPcopy
hub / github.com/mudler/LocalAI / TTS

Method TTS

backend/python/qwen-tts/backend.py:683–939  ·  view source on GitHub ↗
(self, request, context)

Source from the content-addressed store, hash-verified

681 )
682
683 def TTS(self, request, context):
684 try:
685 # Check if dst is provided
686 if not request.dst:
687 return backend_pb2.Result(
688 success=False, message="dst (output path) is required"
689 )
690
691 # Prepare text
692 text = request.text.strip()
693 if not text:
694 return backend_pb2.Result(success=False, message="Text is empty")
695
696 # Get language (auto-detect if not provided)
697 language = (
698 request.language
699 if hasattr(request, "language") and request.language
700 else None
701 )
702 if not language or language == "":
703 language = "Auto" # Auto-detect language
704
705 # Detect mode
706 mode = self._detect_mode(request)
707 print(f"Detected mode: {mode}", file=sys.stderr)
708
709 # Get generation parameters from options
710 max_new_tokens = self.options.get("max_new_tokens", None)
711 top_p = self.options.get("top_p", None)
712 temperature = self.options.get("temperature", None)
713 do_sample = self.options.get("do_sample", None)
714
715 # Prepare generation kwargs
716 generation_kwargs = {}
717 if max_new_tokens is not None:
718 generation_kwargs["max_new_tokens"] = max_new_tokens
719 if top_p is not None:
720 generation_kwargs["top_p"] = top_p
721 if temperature is not None:
722 generation_kwargs["temperature"] = temperature
723 if do_sample is not None:
724 generation_kwargs["do_sample"] = do_sample
725
726 # Prefer the per-request instruction (TTSRequest.instructions) over the
727 # static YAML `instruct` option. This lets clients set a different style
728 # (CustomVoice emotion) or designed voice (VoiceDesign) per request.
729 instruct = self._effective_instruct(request)
730 if instruct is not None and instruct != "":
731 generation_kwargs["instruct"] = instruct
732
733 # Merge any per-request backend-specific params (TTSRequest.params).
734 # Values arrive as strings on the wire; coerce to int/float/bool so the
735 # model receives the types it expects. These override YAML-derived kwargs.
736 if hasattr(request, "params") and request.params:
737 for key, value in request.params.items():
738 generation_kwargs[key] = coerce_param_value(value)
739
740 # Generate audio based on mode

Callers

nothing calls this directly

Calls 12

_detect_modeMethod · 0.95
_effective_instructMethod · 0.95
_get_ref_audio_pathMethod · 0.95
_is_text_file_pathMethod · 0.95
_read_text_fileMethod · 0.95
keysMethod · 0.80
coerce_param_valueFunction · 0.70
getMethod · 0.45
itemsMethod · 0.45
timeMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected