From f823e31e493d0de3d82a724f4604ff4016de9469 Mon Sep 17 00:00:00 2001
From: James Betker <jbetker@gmail.com>
Date: Sun, 1 May 2022 17:39:36 -0600
Subject: [PATCH] Better error messages when inputs are out of bounds.

---
 tortoise/api.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tortoise/api.py b/tortoise/api.py
index 49ce0c8..a50057c 100644
--- a/tortoise/api.py
+++ b/tortoise/api.py
@@ -107,7 +107,9 @@ def fix_autoregressive_output(codes, stop_token, complain=True):
     stop_token_indices = (codes == stop_token).nonzero()
     if len(stop_token_indices) == 0:
         if complain:
-            print("No stop tokens found, enjoy that output of yours!")
+            print("No stop tokens found. This typically means the spoken audio is too long. In some cases, the output "
+                  "will still be good, though. Listen to it and if it is missing words, try breaking up your input "
+                  "text.")
         return codes
     else:
         codes[stop_token_indices] = 83
@@ -310,6 +312,7 @@ class TextToSpeech:
         """
         text = torch.IntTensor(self.tokenizer.encode(text)).unsqueeze(0).cuda()
         text = F.pad(text, (0, 1))  # This may not be necessary.
+        assert text.shape[-1] < 400, 'Too much text provided. Break the text up into separate segments and re-try inference.'
 
         if voice_samples is not None:
             auto_conditioning, diffusion_conditioning = self.get_conditioning_latents(voice_samples)