(self)
| 458 | |
| 459 | @background_task |
| 460 | async def load_tts(self): |
| 461 | self.src_speech_btn.loading() |
| 462 | self.dest_speech_btn.loading() |
| 463 | |
| 464 | # TTS name |
| 465 | provider = Settings.get().active_tts |
| 466 | |
| 467 | # Check if TTS is disabled |
| 468 | if provider != "": |
| 469 | self.src_speech_btn.props.visible = True |
| 470 | self.dest_speech_btn.props.visible = True |
| 471 | |
| 472 | # TTS Object |
| 473 | self.provider["tts"] = TTS[provider]() |
| 474 | # Connect to provider settings changes |
| 475 | self.provider["tts"].settings.connect( |
| 476 | "changed::instance-url", self._on_provider_changed, self.provider["tts"].name |
| 477 | ) |
| 478 | self.provider["tts"].settings.connect( |
| 479 | "changed::api-key", self._on_provider_changed, self.provider["tts"].name |
| 480 | ) |
| 481 | |
| 482 | try: |
| 483 | # Do TTS init |
| 484 | await self.provider["tts"].init_tts() |
| 485 | |
| 486 | self.speech_provider_failed = False |
| 487 | self.src_speech_btn.ready() |
| 488 | self.dest_speech_btn.ready() |
| 489 | self._check_speech_enabled() |
| 490 | |
| 491 | # Loading failed |
| 492 | except (RequestError, ProviderError) as exc: |
| 493 | logging.error(exc) |
| 494 | |
| 495 | button_text = _("Failed loading the text-to-speech service. Retry?") |
| 496 | toast_text = _("Failed loading the text-to-speech service") |
| 497 | if isinstance(exc, RequestError): |
| 498 | toast_text = _("Failed loading the text-to-speech service, check for network issues") |
| 499 | |
| 500 | self.speech_provider_failed = True |
| 501 | self.src_speech_btn.error(button_text) |
| 502 | self.dest_speech_btn.error(button_text) |
| 503 | self.send_notification(toast_text) |
| 504 | self._check_speech_enabled() |
| 505 | |
| 506 | else: |
| 507 | self.provider["tts"] = None |
| 508 | self.src_speech_btn.props.visible = False |
| 509 | self.dest_speech_btn.props.visible = False |
| 510 | |
| 511 | def translate(self, text: str, src_lang: str | None, dest_lang: str | None): |
| 512 | """ |
no test coverage detected