artyomboyko commited on
Commit
779f9f6
·
verified ·
1 Parent(s): 5467c51

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -31
app.py CHANGED
@@ -8,16 +8,15 @@ from huggingface_hub import login
8
 
9
  import tempfile
10
  import os
11
- import time # Добавлен импорт time
12
 
13
  # --- Конфигурация ---
14
- HF_TOKEN = os.getenv("HF_ACCESS_TOKEN") # Убедитесь, что эта переменная установлена в вашей среде
15
  MODEL_NAME = "artyomboyko/whisper-small-ru-v4"
16
  BATCH_SIZE = 8
17
- FILE_LIMIT_MB = 1000 # Эта переменная не используется в коде, но оставлена
18
 
19
  # --- Инициализация ---
20
- # Попробуйте войти в систему Hugging Face, если токен доступен
21
  try:
22
  if HF_TOKEN:
23
  login(token=HF_TOKEN)
@@ -45,13 +44,10 @@ try:
45
  print(f"Модель {MODEL_NAME} успешно загружена.")
46
  except Exception as e:
47
  print(f"Ошибка при загрузке модели {MODEL_NAME}: {e}")
48
- # Можно добавить выход из программы или обработку ошибки
49
  exit()
50
 
51
 
52
  # --- Функции ---
53
-
54
- # Функция для транскрибации аудиофайла
55
  def transcribe(filepath, task):
56
  """
57
  Транскрибирует аудиофайл с помощью загруженной модели Whisper.
@@ -70,8 +66,6 @@ def transcribe(filepath, task):
70
 
71
  print(f"Начало транскрибации файла: {filepath}, Задача: {task}")
72
  try:
73
- # generate_kwargs передает параметры для генерации текста моделью
74
- # return_timestamps=True указывает, что нужно возвращать временные метки (хотя здесь используется только текст)
75
  result = pipe(filepath, batch_size=BATCH_SIZE, generate_kwargs={"task": task}, return_timestamps=True)
76
  text = result["text"]
77
  print("Транскрибация завершена успешно.")
@@ -83,13 +77,10 @@ def transcribe(filepath, task):
83
 
84
 
85
  # --- Создание интерфейса Gradio ---
86
-
87
- # Используем gr.Blocks для создания кастомного интерфейса с вкладками
88
  with gr.Blocks(theme=gr.themes.Default(primary_hue="blue", secondary_hue="neutral")) as demo:
89
- # Заголовок и описание приложения с использованием Markdown
90
  gr.Markdown(
91
  f"""
92
- # Whisper: Транскрибация аудио и YouTube видео
93
  Транскрибируйте длинные аудиозаписи (с микрофона или из файла) одним нажатием кнопки!
94
  Демо использует модель OpenAI Whisper [{MODEL_NAME}](https://huggingface.co/{MODEL_NAME})
95
  через библиотеку 🤗 Transformers для распознавания речи.
@@ -98,39 +89,31 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="blue", secondary_hue="neutra
98
 
99
  # Создание вкладок
100
  with gr.Tabs():
 
101
  # Вкладка 1: Транскрибация с микрофона
102
  with gr.TabItem("Микрофон"):
103
- with gr.Row(): # Располагаем элементы в строку
104
- # Компонент для записи аудио с микрофона
105
- # type="filepath" - функция будет получать путь к временному файлу
106
  mic_input = gr.Audio(sources=["microphone"], type="filepath", label="Запись с микрофона")
107
- # Компонент для выбора задачи (транскрибация или перевод)
108
  task_mic = gr.Radio(["transcribe", "translate"], label="Задача", value="transcribe")
109
- # Компонент для вывода результата транскрибации
110
  output_mic = gr.Textbox(label="Результат", lines=7) # Увеличили количество строк для текста
111
- # Кнопка для запуска транскрибации с микрофона
112
  mic_button = gr.Button("Транскрибировать с микрофона")
113
 
114
  # Вкладка 2: Транскрибация из файла
115
  with gr.TabItem("Аудиофайл"):
116
  with gr.Row():
117
- # Компонент для загрузки аудиофайла
118
- # type="filepath" - функция будет получать путь к загруженному файлу
119
  file_input = gr.Audio(sources=["upload"], type="filepath", label="Загрузить аудиофайл")
120
- # Компонент для выбора задачи
121
  task_file = gr.Radio(["transcribe", "translate"], label="Задача", value="transcribe")
122
- # Компонент для вывода результата
123
  output_file = gr.Textbox(label="Результат", lines=7)
124
- # Кнопка для запуска транскрибации файла
125
  file_button = gr.Button("Транскрибировать файл")
126
 
127
 
128
  # --- Привязка функций к кнопкам ---
129
- # Связываем кнопку "Транскрибировать с микрофона" с функцией transcribe
 
130
  mic_button.click(
131
- fn=transcribe, # Функция для вызова
132
- inputs=[mic_input, task_mic], # Входные компоненты (аудио и выбор задачи)
133
- outputs=output_mic # Выходной компонент (текстовое поле)
134
  )
135
 
136
  # Связываем кнопку "Транскрибировать файл" с функцией transcribe
@@ -141,8 +124,5 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="blue", secondary_hue="neutra
141
  )
142
 
143
  # --- Запуск приложения ---
144
- # enable_queue=True - обрабатывает запросы последовательно, полезно для долгих задач
145
- # share=True - создает публичную ссылку (если нужно)
146
- # debug=True - включает режим отладки для вывода логов Gradio
147
  print("Запуск интерфейса Gradio...")
148
  demo.queue().launch(debug=True, share=False)
 
8
 
9
  import tempfile
10
  import os
11
+ import time
12
 
13
  # --- Конфигурация ---
14
+ HF_TOKEN = os.getenv("HF_ACCESS_TOKEN")
15
  MODEL_NAME = "artyomboyko/whisper-small-ru-v4"
16
  BATCH_SIZE = 8
17
+ # FILE_LIMIT_MB = 1000
18
 
19
  # --- Инициализация ---
 
20
  try:
21
  if HF_TOKEN:
22
  login(token=HF_TOKEN)
 
44
  print(f"Модель {MODEL_NAME} успешно загружена.")
45
  except Exception as e:
46
  print(f"Ошибка при загрузке модели {MODEL_NAME}: {e}")
 
47
  exit()
48
 
49
 
50
  # --- Функции ---
 
 
51
  def transcribe(filepath, task):
52
  """
53
  Транскрибирует аудиофайл с помощью загруженной модели Whisper.
 
66
 
67
  print(f"Начало транскрибации файла: {filepath}, Задача: {task}")
68
  try:
 
 
69
  result = pipe(filepath, batch_size=BATCH_SIZE, generate_kwargs={"task": task}, return_timestamps=True)
70
  text = result["text"]
71
  print("Транскрибация завершена успешно.")
 
77
 
78
 
79
  # --- Создание интерфейса Gradio ---
 
 
80
  with gr.Blocks(theme=gr.themes.Default(primary_hue="blue", secondary_hue="neutral")) as demo:
 
81
  gr.Markdown(
82
  f"""
83
+ # Whisper: Транскрибация аудио
84
  Транскрибируйте длинные аудиозаписи (с микрофона или из файла) одним нажатием кнопки!
85
  Демо использует модель OpenAI Whisper [{MODEL_NAME}](https://huggingface.co/{MODEL_NAME})
86
  через библиотеку 🤗 Transformers для распознавания речи.
 
89
 
90
  # Создание вкладок
91
  with gr.Tabs():
92
+
93
  # Вкладка 1: Транскрибация с микрофона
94
  with gr.TabItem("Микрофон"):
95
+ with gr.Row():
 
 
96
  mic_input = gr.Audio(sources=["microphone"], type="filepath", label="Запись с микрофона")
 
97
  task_mic = gr.Radio(["transcribe", "translate"], label="Задача", value="transcribe")
 
98
  output_mic = gr.Textbox(label="Результат", lines=7) # Увеличили количество строк для текста
 
99
  mic_button = gr.Button("Транскрибировать с микрофона")
100
 
101
  # Вкладка 2: Транскрибация из файла
102
  with gr.TabItem("Аудиофайл"):
103
  with gr.Row():
 
 
104
  file_input = gr.Audio(sources=["upload"], type="filepath", label="Загрузить аудиофайл")
 
105
  task_file = gr.Radio(["transcribe", "translate"], label="Задача", value="transcribe")
 
106
  output_file = gr.Textbox(label="Результат", lines=7)
 
107
  file_button = gr.Button("Транскрибировать файл")
108
 
109
 
110
  # --- Привязка функций к кнопкам ---
111
+
112
+ # Связываем кнопку "Транскрибировать с микрофона" с функцией transcrib
113
  mic_button.click(
114
+ fn=transcribe,
115
+ inputs=[mic_input, task_mic],
116
+ outputs=output_mic
117
  )
118
 
119
  # Связываем кнопку "Транскрибировать файл" с функцией transcribe
 
124
  )
125
 
126
  # --- Запуск приложения ---
 
 
 
127
  print("Запуск интерфейса Gradio...")
128
  demo.queue().launch(debug=True, share=False)