Update app.py
Browse files
app.py
CHANGED
|
@@ -179,7 +179,7 @@ def format_diarized(segments):
|
|
| 179 |
|
| 180 |
# ββ Haupt-Pipeline βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 181 |
|
| 182 |
-
@spaces.GPU(duration=
|
| 183 |
def run_pipeline(audio_array, sample_rate, model_key, use_diar):
|
| 184 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 185 |
dtype = torch.float16 if device == "cuda" else torch.float32
|
|
@@ -207,6 +207,8 @@ def run_pipeline(audio_array, sample_rate, model_key, use_diar):
|
|
| 207 |
|
| 208 |
# ββ Gradio-Handler ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 209 |
|
|
|
|
|
|
|
| 210 |
def transcribe(audio, model_key, use_diar):
|
| 211 |
if audio is None:
|
| 212 |
yield "Kein Audio eingegeben.", ""
|
|
@@ -217,6 +219,15 @@ def transcribe(audio, model_key, use_diar):
|
|
| 217 |
audio_data = audio_data.astype(np.float32)
|
| 218 |
if audio_data.max() > 1.0:
|
| 219 |
audio_data /= 32768.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 220 |
yield "GPU wird angefordert ...", ""
|
| 221 |
transcript, labeled = run_pipeline(audio_data, sample_rate, model_key, use_diar)
|
| 222 |
yield transcript, labeled
|
|
@@ -341,7 +352,7 @@ with gr.Blocks(title="Yapper - Meeting Transcriber") as demo:
|
|
| 341 |
<div class="icon">ποΈ</div>
|
| 342 |
<div>
|
| 343 |
<h1 style="margin:0;font-size:1.7rem;font-weight:700;color:#ffffff;letter-spacing:-.3px;">Yapper</h1>
|
| 344 |
-
<
|
| 345 |
</div>
|
| 346 |
<div class="badge">⚡ ZeroGPU</div>
|
| 347 |
</div>
|
|
|
|
| 179 |
|
| 180 |
# ββ Haupt-Pipeline βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 181 |
|
| 182 |
+
@spaces.GPU(duration=60)
|
| 183 |
def run_pipeline(audio_array, sample_rate, model_key, use_diar):
|
| 184 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 185 |
dtype = torch.float16 if device == "cuda" else torch.float32
|
|
|
|
| 207 |
|
| 208 |
# ββ Gradio-Handler ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 209 |
|
| 210 |
+
MAX_DURATION_S = 1201 # 20 Min. Audio
|
| 211 |
+
|
| 212 |
def transcribe(audio, model_key, use_diar):
|
| 213 |
if audio is None:
|
| 214 |
yield "Kein Audio eingegeben.", ""
|
|
|
|
| 219 |
audio_data = audio_data.astype(np.float32)
|
| 220 |
if audio_data.max() > 1.0:
|
| 221 |
audio_data /= 32768.0
|
| 222 |
+
|
| 223 |
+
duration_s = len(audio_data) / sample_rate
|
| 224 |
+
if duration_s > MAX_DURATION_S:
|
| 225 |
+
yield (
|
| 226 |
+
f"Audio ist {duration_s:.0f}s lang β maximal {MAX_DURATION_S}s (20 Min.) erlaubt.",
|
| 227 |
+
""
|
| 228 |
+
)
|
| 229 |
+
return
|
| 230 |
+
|
| 231 |
yield "GPU wird angefordert ...", ""
|
| 232 |
transcript, labeled = run_pipeline(audio_data, sample_rate, model_key, use_diar)
|
| 233 |
yield transcript, labeled
|
|
|
|
| 352 |
<div class="icon">ποΈ</div>
|
| 353 |
<div>
|
| 354 |
<h1 style="margin:0;font-size:1.7rem;font-weight:700;color:#ffffff;letter-spacing:-.3px;">Yapper</h1>
|
| 355 |
+
<p style="margin:4px 0 0;font-size:.87rem;color:#ffffff;opacity:.9;">Transkription & Speaker-Diarisierung · fΓΌr eure Teams-Meetings</p>
|
| 356 |
</div>
|
| 357 |
<div class="badge">⚡ ZeroGPU</div>
|
| 358 |
</div>
|