Lenylvt commited on
Commit
998a321
1 Parent(s): 2d27b8f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -34
app.py CHANGED
@@ -1,51 +1,60 @@
1
  import streamlit as st
2
  from gradio_client import Client
 
 
3
 
4
- st.title("Whisper-JAX Speech-to-Text App")
5
 
6
- # Specify the API URL
7
- API_URL = "https://sanchit-gandhi-whisper-jax.hf.space"
8
 
9
- # Initialize the Gradio client with the API URL
10
  client = Client(API_URL)
11
 
12
- # Function to transcribe audio using the specified API endpoint
13
- def transcribe_audio(audio_path="temp.mp3", task="transcription", return_timestamps=False):
14
- """Function to transcribe an audio file using the Whisper-JAX endpoint."""
15
- # Making a synchronous call to the predict method
16
- # Note that file needs to be passed as a tuple with the format: (filename, filedata)
17
- text, runtime = client.predict(
18
- ("file", open(audio_path, "rb")), # Opening file in binary read mode
19
  task,
20
  return_timestamps,
21
- api_name="/predict_1" # Ensure this is the correct endpoint
22
  )
23
- return text, runtime
24
 
25
- # Streamlit widget to upload an audio file
26
- uploaded_file = st.file_uploader("Choose an audio file", type=['mp3', 'wav', 'ogg'])
27
 
28
- # Options for the task and timestamp inclusion
29
- task = st.radio("Choose a task", ["Transcription", "Translation"], index=0)
30
- return_timestamps = st.checkbox("Return timestamps with transcription")
 
 
 
 
31
 
32
- # Button to process the audio file
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 = transcribe_audio()
43
- st.write("Transcription:", transcription)
 
 
 
 
44
  except Exception as e:
45
- st.error(f"An error occurred during transcription: {str(e)}")
46
  finally:
47
- # Clean up the temporary file
48
- import os
49
- os.remove(file_path)
50
  else:
51
- st.error("Please upload an audio file to proceed.")
 
 
 
 
 
 
 
 
 
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