Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
from faster_whisper import WhisperModel
|
| 3 |
import logging
|
|
@@ -40,14 +41,15 @@ def text_to_srt(text):
|
|
| 40 |
with open(temp_file_path, 'w', encoding='utf-8') as file:
|
| 41 |
file.write(srt_content)
|
| 42 |
return temp_file_path
|
| 43 |
-
|
| 44 |
# Fonction pour formater des secondes en timestamp
|
| 45 |
def format_timestamp(seconds):
|
| 46 |
hours = int(seconds // 3600)
|
| 47 |
minutes = int((seconds % 3600) // 60)
|
| 48 |
seconds_remainder = seconds % 60
|
| 49 |
return f"{hours:02d}:{minutes:02d}:{seconds_remainder:06.3f}"
|
| 50 |
-
|
|
|
|
| 51 |
# Fonction de traduction de texte
|
| 52 |
def translate_text(text, source_language_code, target_language_code):
|
| 53 |
model_name = f"Helsinki-NLP/opus-mt-{source_language_code}-{target_language_code}"
|
|
@@ -61,7 +63,8 @@ def translate_text(text, source_language_code, target_language_code):
|
|
| 61 |
translated = model.generate(**tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512))
|
| 62 |
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
|
| 63 |
return translated_text
|
| 64 |
-
|
|
|
|
| 65 |
# Fonction pour traduire un fichier SRT
|
| 66 |
def translate_srt(input_file_path, source_language_code, target_language_code, progress=None):
|
| 67 |
subs = pysrt.open(input_file_path)
|
|
@@ -75,7 +78,8 @@ def translate_srt(input_file_path, source_language_code, target_language_code, p
|
|
| 75 |
translated_srt_path = input_file_path.replace(".srt", f"_{target_language_code}.srt")
|
| 76 |
pysrt.SubRipFile(translated_subs).save(translated_srt_path)
|
| 77 |
return translated_srt_path
|
| 78 |
-
|
|
|
|
| 79 |
# Fonction pour transcrire l'audio d'une vidéo en texte
|
| 80 |
def transcribe(audio_file_path, model_size="base"):
|
| 81 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
|
@@ -87,7 +91,8 @@ def transcribe(audio_file_path, model_size="base"):
|
|
| 87 |
for segment in segments
|
| 88 |
]
|
| 89 |
return "\n".join(transcription_with_timestamps)
|
| 90 |
-
|
|
|
|
| 91 |
# Fonction pour ajouter des sous-titres à une vidéo
|
| 92 |
def add_subtitle_to_video(input_video, subtitle_file, subtitle_language, soft_subtitle=False):
|
| 93 |
video_input_stream = ffmpeg.input(input_video)
|
|
|
|
| 1 |
+
import spaces
|
| 2 |
import gradio as gr
|
| 3 |
from faster_whisper import WhisperModel
|
| 4 |
import logging
|
|
|
|
| 41 |
with open(temp_file_path, 'w', encoding='utf-8') as file:
|
| 42 |
file.write(srt_content)
|
| 43 |
return temp_file_path
|
| 44 |
+
|
| 45 |
# Fonction pour formater des secondes en timestamp
|
| 46 |
def format_timestamp(seconds):
|
| 47 |
hours = int(seconds // 3600)
|
| 48 |
minutes = int((seconds % 3600) // 60)
|
| 49 |
seconds_remainder = seconds % 60
|
| 50 |
return f"{hours:02d}:{minutes:02d}:{seconds_remainder:06.3f}"
|
| 51 |
+
|
| 52 |
+
@spaces.GPU
|
| 53 |
# Fonction de traduction de texte
|
| 54 |
def translate_text(text, source_language_code, target_language_code):
|
| 55 |
model_name = f"Helsinki-NLP/opus-mt-{source_language_code}-{target_language_code}"
|
|
|
|
| 63 |
translated = model.generate(**tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512))
|
| 64 |
translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
|
| 65 |
return translated_text
|
| 66 |
+
|
| 67 |
+
@spaces.GPU
|
| 68 |
# Fonction pour traduire un fichier SRT
|
| 69 |
def translate_srt(input_file_path, source_language_code, target_language_code, progress=None):
|
| 70 |
subs = pysrt.open(input_file_path)
|
|
|
|
| 78 |
translated_srt_path = input_file_path.replace(".srt", f"_{target_language_code}.srt")
|
| 79 |
pysrt.SubRipFile(translated_subs).save(translated_srt_path)
|
| 80 |
return translated_srt_path
|
| 81 |
+
|
| 82 |
+
@spaces.GPU
|
| 83 |
# Fonction pour transcrire l'audio d'une vidéo en texte
|
| 84 |
def transcribe(audio_file_path, model_size="base"):
|
| 85 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
|
|
|
| 91 |
for segment in segments
|
| 92 |
]
|
| 93 |
return "\n".join(transcription_with_timestamps)
|
| 94 |
+
|
| 95 |
+
@spaces.GPU
|
| 96 |
# Fonction pour ajouter des sous-titres à une vidéo
|
| 97 |
def add_subtitle_to_video(input_video, subtitle_file, subtitle_language, soft_subtitle=False):
|
| 98 |
video_input_stream = ffmpeg.input(input_video)
|