diff options
author | Marcel Klehr <mklehr@gmx.net> | 2023-04-11 14:59:57 +0200 |
---|---|---|
committer | Marcel Klehr <mklehr@gmx.net> | 2023-04-11 14:59:57 +0200 |
commit | 317521b607e3a14364f5d486630cf1e5181053e4 (patch) | |
tree | 17fa3479a7169e92739232fb7c594c7f9e3cce56 /lib/public/SpeechToText | |
parent | c6645cbc46291d2621992b7f0bb087f115e849eb (diff) | |
download | nextcloud-server-317521b607e3a14364f5d486630cf1e5181053e4.tar.gz nextcloud-server-317521b607e3a14364f5d486630cf1e5181053e4.zip |
feat(SpeechToText): Add SpeechToText provider API
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Diffstat (limited to 'lib/public/SpeechToText')
-rw-r--r-- | lib/public/SpeechToText/Events/TranscriptionFinishedEvent.php | 74 | ||||
-rw-r--r-- | lib/public/SpeechToText/ISpeechToTextManager.php | 62 | ||||
-rw-r--r-- | lib/public/SpeechToText/ISpeechToTextProvider.php | 45 |
3 files changed, 181 insertions, 0 deletions
diff --git a/lib/public/SpeechToText/Events/TranscriptionFinishedEvent.php b/lib/public/SpeechToText/Events/TranscriptionFinishedEvent.php new file mode 100644 index 00000000000..376859afd1c --- /dev/null +++ b/lib/public/SpeechToText/Events/TranscriptionFinishedEvent.php @@ -0,0 +1,74 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2023 Marcel Klehr <mklehr@gmx.net> + * + * @author Marcel Klehr <mklehr@gmx.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCP\SpeechToText\Events; + +use OCP\EventDispatcher\Event; + +/** + * @since 27.0.0 + */ +class TranscriptionFinishedEvent extends Event { + + /** + * @since 27.0.0 + */ + public function __construct( + private bool $successful, + private string $transcription, + private string $errorMessage, + private array $context + ) { + parent::__construct(); + } + + /** + * @since 27.0.0 + */ + public function getContext(): array { + return $this->context; + } + + /** + * @since 27.0.0 + */ + public function isSuccessful(): bool { + return $this->successful; + } + + /** + * @since 27.0.0 + */ + public function getErrorMessage(): string { + return $this->errorMessage; + } + + /** + * @since 27.0.0 + */ + public function getTranscription(): string { + return $this->transcription; + } +} diff --git a/lib/public/SpeechToText/ISpeechToTextManager.php b/lib/public/SpeechToText/ISpeechToTextManager.php new file mode 100644 index 00000000000..297be43e6db --- /dev/null +++ b/lib/public/SpeechToText/ISpeechToTextManager.php @@ -0,0 +1,62 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2023 Marcel Klehr <mklehr@gmx.net> + * + * @author Marcel Klehr <mklehr@gmx.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + +namespace OCP\SpeechToText; + +use InvalidArgumentException; +use OCP\PreConditionNotMetException; +use RuntimeException; + +/** + * @since 27.0.0 + */ +interface ISpeechToTextManager { + /** + * @since 27.0.0 + */ + public function hasProviders(): bool; + + /** + * Will schedule a transcription process in the background. The result will become available + * with the \OCP\SpeechToText\Events\TranscriptionFinishedEvent + * You should add context information to the context array to re-identify the transcription result as + * as belonging to your transcription request. + * + * @since 27.0.0 + * @throws PreConditionNotMetException If no provider was registered but this method was still called + * @throws InvalidArgumentException If the file could not be found or is not of a supported type + * @throws RuntimeException If the transcription failed for other reasons + */ + public function scheduleFileTranscription(string $path, array $context): void; + + /** + * @since 27.0.0 + * @throws PreConditionNotMetException If no provider was registered but this method was still called + * @throws InvalidArgumentException If the file could not be found or is not of a supported type + * @throws RuntimeException If the transcription failed for other reasons + */ + public function transcribeFile(string $path) : string; +} diff --git a/lib/public/SpeechToText/ISpeechToTextProvider.php b/lib/public/SpeechToText/ISpeechToTextProvider.php new file mode 100644 index 00000000000..3d739408bf5 --- /dev/null +++ b/lib/public/SpeechToText/ISpeechToTextProvider.php @@ -0,0 +1,45 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2022 Marcel Klehr <mklehr@gmx.net> + * + * @author Marcel Klehr <mklehr@gmx.net> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + +namespace OCP\SpeechToText; + +use RuntimeException; + +/** + * @since 27.0.0 + */ +interface ISpeechToTextProvider { + /** + * @since 27.0.0 + */ + public function getName(): string; + + /** + * @since 27.0.0 + * @throws RuntimeException If the text could not be transcribed + */ + public function transcribeFile(string $path): string; +} |