Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,51 +1,60 @@
|
|
1 |
import streamlit as st
|
2 |
from gradio_client import Client
|
|
|
|
|
3 |
|
4 |
-
st.title("Whisper-JAX
|
5 |
|
6 |
-
#
|
7 |
-
API_URL = "https://sanchit-gandhi-whisper-jax.hf.space"
|
8 |
|
9 |
-
#
|
10 |
client = Client(API_URL)
|
11 |
|
12 |
-
#
|
13 |
-
def
|
14 |
-
"""
|
15 |
-
#
|
16 |
-
#
|
17 |
-
|
18 |
-
("file", open(
|
19 |
task,
|
20 |
return_timestamps,
|
21 |
-
api_name="/predict_1" #
|
22 |
)
|
23 |
-
return
|
24 |
|
25 |
-
# Streamlit
|
26 |
-
|
27 |
|
28 |
-
#
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
31 |
|
32 |
-
#
|
33 |
-
if st.button("Transcribe Audio"):
|
34 |
-
if uploaded_file is not None:
|
35 |
-
# Save uploaded file temporarily
|
36 |
-
file_path = f"temp.mp3"
|
37 |
-
with open(file_path, "wb") as f:
|
38 |
-
f.write(uploaded_file.getbuffer())
|
39 |
-
|
40 |
-
# Call the transcribe function
|
41 |
try:
|
42 |
-
transcription =
|
43 |
-
st.write("Transcription:", transcription)
|
|
|
|
|
|
|
|
|
44 |
except Exception as e:
|
45 |
-
st.error(f"
|
46 |
finally:
|
47 |
-
#
|
48 |
-
|
49 |
-
os.remove(file_path)
|
50 |
else:
|
51 |
-
st.error("
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import streamlit as st
|
2 |
from gradio_client import Client
|
3 |
+
import re
|
4 |
+
import os
|
5 |
|
6 |
+
st.title("Application de transcription Whisper-JAX 🎙️")
|
7 |
|
8 |
+
# Spécifiez l'URL de l'API
|
9 |
+
API_URL = "https://sanchit-gandhi-whisper-jax-spaces.hf.space"
|
10 |
|
11 |
+
# Initialisez le client Gradio avec l'URL de l'API
|
12 |
client = Client(API_URL)
|
13 |
|
14 |
+
# Fonction pour transcrire un fichier audio en utilisant le point d'API spécifié
|
15 |
+
def transcrire_audio(chemin_audio, task="transcription", return_timestamps=True):
|
16 |
+
"""Fonction pour transcrire un fichier audio en utilisant le point d'API Whisper-JAX."""
|
17 |
+
# Appel synchrone à la méthode de prédiction
|
18 |
+
# Notez que le fichier doit être passé sous forme de tuple avec le format : (nom_fichier, donnedées_fichier)
|
19 |
+
texte, duree = client.predict(
|
20 |
+
("file", open(chemin_audio, "rb")), # Ouverture du fichier en mode lecture binaire
|
21 |
task,
|
22 |
return_timestamps,
|
23 |
+
api_name="/predict_1" # Assurez-vous que c'est le bon endpoint
|
24 |
)
|
25 |
+
return texte, duree
|
26 |
|
27 |
+
# Widget Streamlit pour télécharger un fichier audio
|
28 |
+
fichier_telecharge = st.file_uploader("Choisissez un fichier audio", type=['mp3', 'wav', 'ogg'])
|
29 |
|
30 |
+
# Bouton pour traiter le fichier audio
|
31 |
+
if st.button("Transcrire l'audio"):
|
32 |
+
if fichier_telecharge is not None:
|
33 |
+
# Enregistrez le fichier téléchargé temporairement
|
34 |
+
chemin_fichier = f"temp_{fichier_telecharge.name}"
|
35 |
+
with open(chemin_fichier, "wb") as f:
|
36 |
+
f.write(fichier_telecharge.getbuffer())
|
37 |
|
38 |
+
# Appel de la fonction de transcription
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
try:
|
40 |
+
transcription, temps_traitement = transcrire_audio(chemin_fichier)
|
41 |
+
st.write("Transcription avec horodatage :", transcription)
|
42 |
+
|
43 |
+
# Affichage de la transcription sans horodatages
|
44 |
+
transcription_sans_horodatages = remove_timestamps(transcription)
|
45 |
+
st.write("Transcription sans horodatage :", transcription_sans_horodatages)
|
46 |
except Exception as e:
|
47 |
+
st.error(f"Une erreur est survenue lors de la transcription : {str(e)}")
|
48 |
finally:
|
49 |
+
# Nettoyage du fichier temporaire
|
50 |
+
os.remove(chemin_fichier)
|
|
|
51 |
else:
|
52 |
+
st.error("Veuillez télécharger un fichier audio pour continuer.")
|
53 |
+
|
54 |
+
# Fonction pour supprimer les horodatages du texte
|
55 |
+
def remove_timestamps(texte):
|
56 |
+
# Motif pour correspondre aux horodatages au format [HH:MM:SS.mmm -> HH:MM:SS.mmm]
|
57 |
+
motif = r"\[\d{2}:\d{2}:\d{2}\.\d{3} -> \d{2}:\d{2}:\d{2}\.\d{3}\]\s*"
|
58 |
+
# Remplacer les motifs correspondants par une chaîne vide
|
59 |
+
texte_nettoye = re.sub(motif, "", texte)
|
60 |
+
return texte_nettoye
|