From c1e5e195a0429624b2059883180fbeda8bd7d801 Mon Sep 17 00:00:00 2001 From: Julien Veyssier Date: Wed, 24 Jun 2026 12:14:50 +0200 Subject: [PATCH] feat(TaskProcessing): add AudioToAudioTranslate TaskType Signed-off-by: Julien Veyssier --- lib/composer/composer/autoload_classmap.php | 1 + lib/composer/composer/autoload_static.php | 1 + lib/private/TaskProcessing/Manager.php | 2 + .../TaskTypes/AudioToAudioTranslate.php | 106 ++++++++++++++++++ 4 files changed, 110 insertions(+) create mode 100644 lib/public/TaskProcessing/TaskTypes/AudioToAudioTranslate.php diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index fef9423450dce..84c0d0e76dc0e 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -942,6 +942,7 @@ 'OCP\\TaskProcessing\\Task' => $baseDir . '/lib/public/TaskProcessing/Task.php', 'OCP\\TaskProcessing\\TaskTypes\\AnalyzeImages' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/AnalyzeImages.php', 'OCP\\TaskProcessing\\TaskTypes\\AudioToAudioChat' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/AudioToAudioChat.php', + 'OCP\\TaskProcessing\\TaskTypes\\AudioToAudioTranslate' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/AudioToAudioTranslate.php', 'OCP\\TaskProcessing\\TaskTypes\\AudioToText' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/AudioToText.php', 'OCP\\TaskProcessing\\TaskTypes\\AudioToTextSubtitles' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/AudioToTextSubtitles.php', 'OCP\\TaskProcessing\\TaskTypes\\ContextAgentAudioInteraction' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/ContextAgentAudioInteraction.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 8e74a5d10447c..f89c3b45ec24c 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -983,6 +983,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\TaskProcessing\\Task' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Task.php', 'OCP\\TaskProcessing\\TaskTypes\\AnalyzeImages' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/AnalyzeImages.php', 'OCP\\TaskProcessing\\TaskTypes\\AudioToAudioChat' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/AudioToAudioChat.php', + 'OCP\\TaskProcessing\\TaskTypes\\AudioToAudioTranslate' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/AudioToAudioTranslate.php', 'OCP\\TaskProcessing\\TaskTypes\\AudioToText' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/AudioToText.php', 'OCP\\TaskProcessing\\TaskTypes\\AudioToTextSubtitles' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/AudioToTextSubtitles.php', 'OCP\\TaskProcessing\\TaskTypes\\ContextAgentAudioInteraction' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/ContextAgentAudioInteraction.php', diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index 3c77619d7678c..04d837e1c0e62 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -71,6 +71,7 @@ use OCP\TaskProcessing\Task; use OCP\TaskProcessing\TaskTypes\AnalyzeImages; use OCP\TaskProcessing\TaskTypes\AudioToAudioChat; +use OCP\TaskProcessing\TaskTypes\AudioToAudioTranslate; use OCP\TaskProcessing\TaskTypes\AudioToText; use OCP\TaskProcessing\TaskTypes\AudioToTextSubtitles; use OCP\TaskProcessing\TaskTypes\ContextAgentAudioInteraction; @@ -698,6 +699,7 @@ private function _getTaskTypes(): array { TextToTextReformatParagraphs::ID => Server::get(TextToTextReformatParagraphs::class), TextToSpeech::ID => Server::get(TextToSpeech::class), AudioToAudioChat::ID => Server::get(AudioToAudioChat::class), + AudioToAudioTranslate::ID => Server::get(AudioToAudioTranslate::class), ContextAgentAudioInteraction::ID => Server::get(ContextAgentAudioInteraction::class), AnalyzeImages::ID => Server::get(AnalyzeImages::class), ImageToTextOpticalCharacterRecognition::ID => Server::get(ImageToTextOpticalCharacterRecognition::class), diff --git a/lib/public/TaskProcessing/TaskTypes/AudioToAudioTranslate.php b/lib/public/TaskProcessing/TaskTypes/AudioToAudioTranslate.php new file mode 100644 index 0000000000000..e040e086740c9 --- /dev/null +++ b/lib/public/TaskProcessing/TaskTypes/AudioToAudioTranslate.php @@ -0,0 +1,106 @@ +l = $l10nFactory->get('lib'); + } + + /** + * @inheritDoc + * @since 35.0.0 + */ + #[\Override] + public function getName(): string { + return $this->l->t('Translate audio'); + } + + /** + * @inheritDoc + * @since 35.0.0 + */ + #[\Override] + public function getDescription(): string { + return $this->l->t('Translates the speech of an audio file or recording and outputs an audio file in the desired language.'); + } + + /** + * @return string + * @since 35.0.0 + */ + #[\Override] + public function getId(): string { + return self::ID; + } + + /** + * @return ShapeDescriptor[] + * @since 35.0.0 + */ + #[\Override] + public function getInputShape(): array { + return [ + 'input' => new ShapeDescriptor( + $this->l->t('Input audio'), + $this->l->t('The audio file or recording to translate'), + EShapeType::Audio, + ), + 'origin_language' => new ShapeDescriptor( + $this->l->t('Origin language'), + $this->l->t('The language of the origin audio'), + EShapeType::Enum, + ), + 'target_language' => new ShapeDescriptor( + $this->l->t('Target language'), + $this->l->t('The desired language to translate the origin audio in'), + EShapeType::Enum, + ), + ]; + } + + /** + * @return ShapeDescriptor[] + * @since 35.0.0 + */ + #[\Override] + public function getOutputShape(): array { + return [ + 'audio_output' => new ShapeDescriptor( + $this->l->t('Audio output'), + $this->l->t('The audio translation'), + EShapeType::Audio, + ), + ]; + } +}