PacoFYM commited on
Commit
d9f3843
·
verified ·
1 Parent(s): 5c74135

Upload 3 files

Browse files
Files changed (3) hide show
  1. README.md +23 -13
  2. app.py +37 -0
  3. requirements.txt +6 -0
README.md CHANGED
@@ -1,13 +1,23 @@
1
- ---
2
- title: Transcribe
3
- emoji: 🚀
4
- colorFrom: green
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 5.29.0
8
- app_file: app.py
9
- pinned: false
10
- short_description: Transcribe your audio with diarization
11
- ---
12
-
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
1
+ # Web-приложение: Транскрибация и диаризация аудио с адаптацией под мобильные устройства
2
+
3
+ ## Возможности
4
+ - Загрузка аудио с мобильного или ПК
5
+ - WhisperX: транскрибация + диаризация
6
+ - Вывод пофразно с указанием спикеров
7
+ - Готово к размещению на Hugging Face Spaces
8
+
9
+ ## Запуск локально
10
+
11
+ ```bash
12
+ pip install -r requirements.txt
13
+ python app.py
14
+ ```
15
+
16
+ ## Размещение на Hugging Face Spaces
17
+
18
+ 1. Создайте новое Space на [huggingface.co/spaces](https://huggingface.co/spaces)
19
+ 2. Выберите SDK: Gradio
20
+ 3. Загрузите все файлы проекта (app.py, requirements.txt, README.md)
21
+ 4. Нажмите «Deploy»
22
+
23
+ Приложение автоматически адаптировано для мобильных экранов.
app.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import whisperx
3
+ import os
4
+
5
+ # Загрузка модели один раз
6
+ model = whisperx.load_model("small", device="cpu")
7
+
8
+ # Основная функция транскрибации и диаризации
9
+ def transcribe_with_diarization(audio_path):
10
+ result = model.transcribe(audio_path, diarize=True)
11
+ segments = result["segments"]
12
+
13
+ # Формируем вывод с возможностью редактирования
14
+ text_output = ""
15
+ for seg in segments:
16
+ speaker = seg.get("speaker", "SPEAKER_00")
17
+ start = seg["start"]
18
+ end = seg["end"]
19
+ text = seg["text"]
20
+ text_output += f"[{speaker}] ({start:.2f} - {end:.2f}): {text}\n\n"
21
+
22
+ return text_output
23
+
24
+ # Интерфейс
25
+ with gr.Blocks() as demo:
26
+ gr.Markdown("# 📱🎤 Транскрибация и диаризация аудио")
27
+ gr.Markdown("Загрузите аудиофайл, прослушайте сегменты, отредактируйте спикеров и выгрузите результат.")
28
+
29
+ with gr.Row():
30
+ audio_input = gr.Audio(source="upload", type="filepath", label="Загрузите аудиофайл")
31
+
32
+ transcribe_btn = gr.Button("▶️ Транскрибировать")
33
+ transcript_output = gr.Textbox(label="Результат транскрипции", lines=20)
34
+
35
+ transcribe_btn.click(fn=transcribe_with_diarization, inputs=audio_input, outputs=transcript_output)
36
+
37
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ gradio
2
+ whisperx
3
+ torch
4
+ torchaudio
5
+ transformers
6
+ ffmpeg-python