Lenylvt commited on
Commit
9846a71
1 Parent(s): 5f9e84f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -35
app.py CHANGED
@@ -2,59 +2,58 @@ 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
- with open(chemin_audio, "rb") as file:
18
- # Préparation de la requête
19
- response = client.predict(
20
- file,
21
- task,
22
- return_timestamps,
23
- api_name="/predict_1" # Assurez-vous que c'est le bon endpoint
24
- )
25
- return response[0], response[1] # Ajustez selon la structure de la réponse retournée par l'API
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
 
2
  from gradio_client import Client
3
  import re
4
  import os
5
+ import base64
6
 
7
  st.title("Application de transcription Whisper-JAX 🎙️")
8
 
9
+ # Specify the API URL
10
  API_URL = "https://sanchit-gandhi-whisper-jax-spaces.hf.space"
11
 
12
+ # Initialize the Gradio client with the API URL
13
  client = Client(API_URL)
14
+ client.view_api(return_format="dict")
15
+
16
+ # Function to transcribe an audio file using the specified API endpoint
17
+ def transcrire_audio(file_data, task="transcribe", return_timestamps=True):
18
+ """Function to transcribe an audio file using the Whisper-JAX API endpoint."""
19
+ # Encode the file data to base64
20
+ base64_encoded_data = base64.b64encode(file_data).decode('utf-8')
21
+
22
+ # Prepare and send the request
23
+ response = client.predict(
24
+ base64_encoded_data,
25
+ task,
26
+ return_timestamps,
27
+ api_name="/predict_1" # Make sure this is the correct endpoint
28
+ )
29
+ return response[0], response[1] # Adjust according to the response structure returned by the API
30
+
31
+ # Streamlit widget to upload an audio file
32
  fichier_telecharge = st.file_uploader("Choisissez un fichier audio", type=['mp3', 'wav', 'ogg'])
33
 
34
+ # Button to process the audio file
35
  if st.button("Transcrire l'audio"):
36
  if fichier_telecharge is not None:
37
+ # Read the file into memory
38
+ file_data = fichier_telecharge.getvalue()
 
 
39
 
40
+ # Call the transcription function
41
  try:
42
+ transcription, runtime = transcrire_audio(file_data)
43
  st.write("Transcription avec horodatage :", transcription)
44
 
45
+ # Display transcription without timestamps
46
  transcription_sans_horodatages = remove_timestamps(transcription)
47
  st.write("Transcription sans horodatage :", transcription_sans_horodatages)
48
  except Exception as e:
49
  st.error(f"Une erreur est survenue lors de la transcription : {str(e)}")
 
 
 
50
  else:
51
  st.error("Veuillez télécharger un fichier audio pour continuer.")
52
 
53
+ # Function to remove timestamps from text
54
+ def remove_timestamps(text):
55
+ # Pattern to match timestamps in the format [HH:MM:SS.mmm -> HH:MM:SS.mmm]
56
+ pattern = r"\[\d{2}:\d{2}:\d{2}\.\d{3} -> \d{2}:\d{2}:\d{2}\.\d{3}\]\s*"
57
+ # Replace matched patterns with an empty string
58
+ cleaned_text = re.sub(pattern, "", text)
59
+ return cleaned_text