aadnk commited on
Commit
533d92e
1 Parent(s): 4514e2e

Also delete uploaded files to save space

Browse files
Files changed (1) hide show
  1. app.py +38 -27
app.py CHANGED
@@ -21,6 +21,9 @@ from utils import slugify, write_srt, write_vtt
21
  # Limitations (set to -1 to disable)
22
  DEFAULT_INPUT_AUDIO_MAX_DURATION = 600 # seconds
23
 
 
 
 
24
  LANGUAGES = [
25
  "English", "Chinese", "German", "Spanish", "Russian", "Korean",
26
  "French", "Japanese", "Portuguese", "Turkish", "Polish", "Catalan",
@@ -49,40 +52,48 @@ class UI:
49
 
50
  def transcribeFile(self, modelName, languageName, urlData, uploadFile, microphoneData, task):
51
  source, sourceName = getSource(urlData, uploadFile, microphoneData)
52
-
53
- selectedLanguage = languageName.lower() if len(languageName) > 0 else None
54
- selectedModel = modelName if modelName is not None else "base"
55
-
56
- if self.inputAudioMaxDuration > 0:
57
- # Calculate audio length
58
- audioDuration = ffmpeg.probe(source)["format"]["duration"]
 
 
 
 
 
 
59
 
60
- if float(audioDuration) > self.inputAudioMaxDuration:
61
- return ("[ERROR]: Maximum audio file length is " + str(self.inputAudioMaxDuration) + "s, file was " + str(audioDuration) + "s"), "[ERROR]"
 
62
 
63
- model = model_cache.get(selectedModel, None)
64
-
65
- if not model:
66
- model = whisper.load_model(selectedModel)
67
- model_cache[selectedModel] = model
 
68
 
69
- # The results
70
- result = model.transcribe(source, language=selectedLanguage, task=task)
 
71
 
72
- text = result["text"]
73
- vtt = getSubs(result["segments"], "vtt")
74
- srt = getSubs(result["segments"], "srt")
 
75
 
76
- # Files that can be downloaded
77
- downloadDirectory = tempfile.mkdtemp()
78
- filePrefix = slugify(sourceName, allow_unicode=True)
79
 
80
- download = []
81
- download.append(createFile(srt, downloadDirectory, filePrefix + "-subs.srt"));
82
- download.append(createFile(vtt, downloadDirectory, filePrefix + "-subs.vtt"));
83
- download.append(createFile(text, downloadDirectory, filePrefix + "-transcript.txt"));
 
84
 
85
- return download, text, vtt
86
 
87
  def getSource(urlData, uploadFile, microphoneData):
88
  if urlData:
 
21
  # Limitations (set to -1 to disable)
22
  DEFAULT_INPUT_AUDIO_MAX_DURATION = 600 # seconds
23
 
24
+ # Whether or not to automatically delete all uploaded files, to save disk space
25
+ DELETE_UPLOADED_FILES = True
26
+
27
  LANGUAGES = [
28
  "English", "Chinese", "German", "Spanish", "Russian", "Korean",
29
  "French", "Japanese", "Portuguese", "Turkish", "Polish", "Catalan",
 
52
 
53
  def transcribeFile(self, modelName, languageName, urlData, uploadFile, microphoneData, task):
54
  source, sourceName = getSource(urlData, uploadFile, microphoneData)
55
+
56
+ try:
57
+ selectedLanguage = languageName.lower() if len(languageName) > 0 else None
58
+ selectedModel = modelName if modelName is not None else "base"
59
+
60
+ if self.inputAudioMaxDuration > 0:
61
+ # Calculate audio length
62
+ audioDuration = ffmpeg.probe(source)["format"]["duration"]
63
+
64
+ if float(audioDuration) > self.inputAudioMaxDuration:
65
+ return ("[ERROR]: Maximum audio file length is " + str(self.inputAudioMaxDuration) + "s, file was " + str(audioDuration) + "s"), "[ERROR]"
66
+
67
+ model = model_cache.get(selectedModel, None)
68
 
69
+ if not model:
70
+ model = whisper.load_model(selectedModel)
71
+ model_cache[selectedModel] = model
72
 
73
+ # The results
74
+ result = model.transcribe(source, language=selectedLanguage, task=task)
75
+
76
+ text = result["text"]
77
+ vtt = getSubs(result["segments"], "vtt")
78
+ srt = getSubs(result["segments"], "srt")
79
 
80
+ # Files that can be downloaded
81
+ downloadDirectory = tempfile.mkdtemp()
82
+ filePrefix = slugify(sourceName, allow_unicode=True)
83
 
84
+ download = []
85
+ download.append(createFile(srt, downloadDirectory, filePrefix + "-subs.srt"));
86
+ download.append(createFile(vtt, downloadDirectory, filePrefix + "-subs.vtt"));
87
+ download.append(createFile(text, downloadDirectory, filePrefix + "-transcript.txt"));
88
 
89
+ return download, text, vtt
 
 
90
 
91
+ finally:
92
+ # Cleanup source
93
+ if DELETE_UPLOADED_FILES:
94
+ print("Deleting source file " + source)
95
+ os.remove(source)
96
 
 
97
 
98
  def getSource(urlData, uploadFile, microphoneData):
99
  if urlData: