diff --git a/lib/Service/OpenAiAPIService.php b/lib/Service/OpenAiAPIService.php index bc798a68..5e48a1c5 100644 --- a/lib/Service/OpenAiAPIService.php +++ b/lib/Service/OpenAiAPIService.php @@ -936,6 +936,17 @@ public function transcribe( if (isset($response['segments'])) { $audioDuration = intval(round(floatval(array_pop($response['segments'])['end']))); + if ($audioDuration < 0) { + $this->logger->warning('Audio duration is less than 0: ' . $audioDuration); + $audioDuration = 0; + } + + // Audio durations higher than this can cause errors in the database: https://github.com/nextcloud/integration_openai/issues/394 + if ($audioDuration > 2147483647) { + $this->logger->warning('Audio duration is greater than 2147483647 seconds: ' . $audioDuration); + $audioDuration = 2147483647; + } + try { $this->createQuotaUsage($userId ?? '', Application::QUOTA_TYPE_TRANSCRIPTION, $audioDuration); } catch (DBException $e) {