diff options
| author | historia <historiavg@proton.me> | 2026-09-09 17:02:41 -0400 |
|---|---|---|
| committer | historia <historiavg@proton.me> | 2026-09-09 17:02:41 -0400 |
| commit | 130dcd988e0554a6343c92fd45d808fd508789b3 (patch) | |
| tree | 0162c1593eff0f9214f111f600f23efd624eb3c3 /app/converter/clients/qwen.py | |
| parent | 71f2c85aa5ea2aa5fe5f31537f5979459e82fcdd (diff) | |
| download | tts-audiobook-generator-130dcd988e0554a6343c92fd45d808fd508789b3.tar.gz | |
Diffstat (limited to 'app/converter/clients/qwen.py')
| -rw-r--r-- | app/converter/clients/qwen.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/app/converter/clients/qwen.py b/app/converter/clients/qwen.py index dd1c8ba..3f4025c 100644 --- a/app/converter/clients/qwen.py +++ b/app/converter/clients/qwen.py @@ -268,7 +268,16 @@ class QwenTTSClient(BaseTTSClient): # ------------------------------------------------------------------ def _generate_custom_voice(self, text: str) -> Tuple: - """Generate audio using CustomVoice mode with the run's speaker.""" + """Generate audio using CustomVoice mode with the run's speaker. + + When the endpoint exposes an instruction parameter and the run + carries one, it is sent as a delivery/style control (the demo's + run_instruct accepts an ``instruct`` argument alongside the + speaker; the model voices the text with that delivery instead of + the speaker's default). With no instruction the request is + unchanged. + """ + instructions = getattr(self, "instructions", "") or "" custom_api = self._resolve_api_name("/run_instruct", "/run_custom_voice", "/generate_custom_voice") if custom_api == "/run_instruct": payload = dict( @@ -276,6 +285,9 @@ class QwenTTSClient(BaseTTSClient): lang_disp=self.language, spk_disp=speaker_display_name_for(self.speaker), ) + if instructions \ + and self._endpoint_accepts_param(custom_api, "instruct"): + payload["instruct"] = instructions else: payload = dict( text=text, @@ -290,6 +302,10 @@ class QwenTTSClient(BaseTTSClient): if self._endpoint_accepts_param(custom_api, "seed"): payload["seed"] = self._seed + if instructions \ + and self._endpoint_accepts_param(custom_api, "instruct"): + payload["instruct"] = instructions + return self.client.predict(**payload, api_name=custom_api) def _generate_voice_design(self, text: str) -> Tuple: |
