blackeeee commited on
Commit
f12aa02
·
verified ·
1 Parent(s): 555bc3f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -48
app.py CHANGED
@@ -1,72 +1,44 @@
1
  import gradio as gr
2
- import nemo.collections.asr as nemo_asr
3
- import torch
4
  import time
5
- import os
6
 
7
- # --- НАСТРОЙКИ ---
8
- # Официальная модель GigaAM v3 CTC.
9
- # Она быстрее, чем RNNT, но тупее по контексту.
10
- MODEL_NAME = "SaluteAI/GigaAM-v3-CTC"
11
-
12
- print(f"⏳ Начинаю загрузку {MODEL_NAME}... Это может занять время.")
13
-
14
- # Загружаем модель сразу на CPU
15
  try:
16
- # Пытаемся загрузить через стандартный метод NeMo
17
- asr_model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained(
18
- model_name=MODEL_NAME,
19
- map_location="cpu"
20
- )
21
- print("✅ Модель успешно загружена!")
22
  except Exception as e:
23
- # Фолбэк: если вдруг имя сменилось, попробуем загрузить e2e версию
24
- print(f"Ошибка загрузки основной модели: {e}")
25
- print("Пробую альтернативу (E2E)...")
26
- MODEL_NAME = "SaluteAI/GigaAM-v3-e2e-CTC"
27
- asr_model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained(
28
- model_name=MODEL_NAME,
29
- map_location="cpu"
30
- )
31
 
32
  def transcribe(audio_path):
33
  if audio_path is None:
34
- return "Ошибка: Нет аудио", 0.0
35
 
 
 
 
36
  start_time = time.time()
37
 
38
- # NeMo требует список путей
39
- files = [audio_path]
40
-
41
- # Инференс
42
- # logprobs=False ускоряет процесс
43
- try:
44
- transcriptions = asr_model.transcribe(
45
- paths2audio_files=files,
46
- batch_size=1,
47
- num_workers=0, # Важно для Space (иначе может крашнуться)
48
- verbose=False
49
- )
50
- text = transcriptions[0]
51
- except Exception as e:
52
- return f"Ошибка инференса: {e}", 0.0
53
 
54
  elapsed_time = time.time() - start_time
55
 
56
- # Если это не E2E модель, текст будет капсом без пробелов.
57
- # Но GigaAM обычно выдает нормальный текст.
58
  return text, f"{elapsed_time:.3f} сек"
59
 
60
  # Интерфейс
61
  iface = gr.Interface(
62
  fn=transcribe,
63
- inputs=gr.Audio(type="filepath", label="Говори (RU)"),
64
  outputs=[
65
- gr.Textbox(label="GigaAM v3 Результат"),
66
- gr.Label(label="Время выполнения")
67
  ],
68
- title="🇷🇺 GigaAM v3 CTC (Test)",
69
- description=f"Тестируем скорость {MODEL_NAME} на бесплатном CPU."
70
  )
71
 
72
  iface.launch()
 
1
  import gradio as gr
2
+ import onnx_asr
 
3
  import time
 
4
 
5
+ # Загружаем модели сразу при старте (чтобы не тупило на первом запросе)
6
+ # Используем E2E версию по дефолту - она ставит знаки препинания.
7
+ print("⏳ Загрузка GigaAM v3 ONNX...")
 
 
 
 
 
8
  try:
9
+ # "gigaam-v3-e2e-ctc" - это версия с нормализацией и пунктуацией
10
+ model = onnx_asr.load_model("gigaam-v3-e2e-ctc")
11
+ print("✅ Модель готова!")
 
 
 
12
  except Exception as e:
13
+ print(f"Ошибка загрузки: {e}")
14
+ model = None
 
 
 
 
 
 
15
 
16
  def transcribe(audio_path):
17
  if audio_path is None:
18
+ return "Ошибка: нет аудио", 0.0
19
 
20
+ if model is None:
21
+ return "Ошибка: модель не загрузилась", 0.0
22
+
23
  start_time = time.time()
24
 
25
+ # Инференс одной строкой. Библиотека сама делает ресемплинг.
26
+ text = model.recognize(audio_path)
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  elapsed_time = time.time() - start_time
29
 
 
 
30
  return text, f"{elapsed_time:.3f} сек"
31
 
32
  # Интерфейс
33
  iface = gr.Interface(
34
  fn=transcribe,
35
+ inputs=gr.Audio(type="filepath", label="Микрофон"),
36
  outputs=[
37
+ gr.Textbox(label="Результат (GigaAM v3 ONNX)"),
38
+ gr.Label(label="Время инференса")
39
  ],
40
+ title="🚀 GigaAM v3 (ONNX Int8)",
41
+ description="Самая быстрая версия GigaAM для CPU. Использует библиотеку onnx-asr."
42
  )
43
 
44
  iface.launch()