palli23 commited on
Commit
365da29
·
1 Parent(s): 2767a40
Files changed (2) hide show
  1. app.py +41 -45
  2. requirements.txt +2 -1
app.py CHANGED
@@ -1,57 +1,53 @@
1
- # app.py – FIXED timestamps villa (virkar 100 %)
2
  import os
3
  import gradio as gr
 
4
  from transformers import pipeline
5
- import warnings
6
- warnings.filterwarnings("ignore")
7
-
8
- print("Hleð Whisper-small...")
9
 
 
10
  MODEL_NAME = "palli23/whisper-small-sam_spjall"
11
 
12
- pipe = pipeline(
13
- "automatic-speech-recognition",
14
- model=MODEL_NAME,
15
- device=-1, # CPU fyrst (þú getur breytt í 0 þegar GPU virkar)
16
- token=os.getenv("HF_TOKEN")
17
- )
18
-
19
- # FIX FOR TIMESTAMPS – settu þetta hér
20
- model = pipe.model
21
- processor = pipe.tokenizer
22
-
23
- # Setja upp timestamps config (lagar villuna)
24
- if not hasattr(model.generation_config, 'no_timestamps_token_id'):
25
- model.generation_config.no_timestamps_token_id = processor.convert_tokens_to_ids("<|notimestamps|>")
26
- model.generation_config.predict_timestamps = True
27
-
28
- print("Timestamps fix sett upp – núna virkar return_timestamps=True")
29
-
30
- def transcribe(audio):
31
- if not audio:
32
- return "Hladdu upp hljóð"
33
  try:
34
- # Generate með timestamps (núna virkar!)
35
- result = pipe(audio, return_timestamps=True, chunk_length_s=30, stride_length_s=(6, 3))
36
- # Flettum timestamps
37
- if "chunks" in result:
38
- full_text = ""
39
- for chunk in result["chunks"]:
40
- full_text += f"[{chunk['timestamp'][0]:.1f}s - {chunk['timestamp'][1]:.1f}s]: {chunk['text']}\n"
41
- return full_text
42
- else:
43
- return result["text"]
44
  except Exception as e:
45
  return f"Villa: {str(e)}"
46
 
47
- with gr.Blocks() as demo:
48
- gr.Markdown("# Íslenskt ASR – Timestamps Virkar!")
49
- gr.Markdown("Whisper-small · ~45 % WER · Með tímasetningum")
 
 
50
 
51
- audio = gr.Audio(type="filepath")
52
- btn = gr.Button("Transcribe með timestamps")
53
- out = gr.Textbox(lines=25)
 
54
 
55
- btn.click(transcribe, audio, out)
56
-
57
- demo.launch(auth=("beta", "beta2025"))
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py – Íslenskt ASR með ZeroGPU (A100/T4) PRO Spaces
2
  import os
3
  import gradio as gr
4
+ import spaces # MÁGÍSKUR – gefur þér GPU í PRO
5
  from transformers import pipeline
 
 
 
 
6
 
7
+ # ÞITT private Whisper-small model
8
  MODEL_NAME = "palli23/whisper-small-sam_spjall"
9
 
10
+ # ZeroGPU decorator – þetta gefur þér A100/T4 strax
11
+ @spaces.GPU
12
+ def transcribe(audio_path):
13
+ if not audio_path:
14
+ return "Hladdu upp hljóðskrá fyrst"
15
+
16
+ # Módel hleðst bara einu sinni (cached)
17
+ pipe = pipeline(
18
+ "automatic-speech-recognition",
19
+ model=MODEL_NAME,
20
+ device=0, # GPU
21
+ token=os.getenv("HF_TOKEN") # þarf fyrir private model
22
+ )
23
+
 
 
 
 
 
 
 
24
  try:
25
+ result = pipe(audio_path, batch_size=8)
26
+ return result["text"]
 
 
 
 
 
 
 
 
27
  except Exception as e:
28
  return f"Villa: {str(e)}"
29
 
30
+ # Fallegt Gradio interface
31
+ with gr.Blocks(theme=gr.themes.Soft(), title="Íslenskt ASR – ZeroGPU") as demo:
32
+ gr.Markdown("# Íslenskt ASR 0.2× RTF á A100")
33
+ gr.Markdown("**Whisper-small · ~4 % WER · Keyrir á ZeroGPU (PRO)**")
34
+ gr.Markdown("Hladdu upp podcast/fréttir – færð texta á 10–25 sekúndum")
35
 
36
+ audio_input = gr.Audio(
37
+ type="filepath",
38
+ label="Hladdu upp .mp3 / .wav / .m4a"
39
+ )
40
 
41
+ btn = gr.Button("Transcribe", variant="primary", size="lg")
42
+ output = gr.Textbox(lines=25, label="Útskrift")
43
+
44
+ btn.click(transcribe, inputs=audio_input, outputs=output)
45
+
46
+ gr.Markdown("© 2025 – Einkaeign · Engin gögn vistuð")
47
+
48
+ # Lykilorð + ZeroGPU
49
+ demo.launch(
50
+ auth=("beta", "beta2025"), # breyttu í sterkara lykilorð þegar þú vilt
51
+ server_name="0.0.0.0",
52
+ server_port=7860
53
+ )
requirements.txt CHANGED
@@ -1,3 +1,4 @@
1
  gradio
2
  transformers
3
- torch
 
 
1
  gradio
2
  transformers
3
+ torch
4
+ spaces