Spaces:
Sleeping
Sleeping
import streamlit as st | |
from gradio_client import Client | |
import re | |
import os | |
st.title("Application de transcription Whisper-JAX 🎙️") | |
# Spécifiez l'URL de l'API | |
API_URL = "https://sanchit-gandhi-whisper-jax-spaces.hf.space" | |
# Initialisez le client Gradio avec l'URL de l'API | |
client = Client(API_URL) | |
# Fonction pour transcrire un fichier audio en utilisant le point d'API spécifié | |
def transcrire_audio(chemin_audio, task="transcription", return_timestamps=True): | |
"""Fonction pour transcrire un fichier audio en utilisant le point d'API Whisper-JAX.""" | |
# Appel synchrone à la méthode de prédiction | |
# Notez que le fichier doit être passé sous forme de tuple avec le format : (nom_fichier, donnedées_fichier) | |
texte, duree = client.predict( | |
("file", open(chemin_audio, "rb")), # Ouverture du fichier en mode lecture binaire | |
task, | |
return_timestamps, | |
api_name="/predict_1" # Assurez-vous que c'est le bon endpoint | |
) | |
return texte, duree | |
# Widget Streamlit pour télécharger un fichier audio | |
fichier_telecharge = st.file_uploader("Choisissez un fichier audio", type=['mp3', 'wav', 'ogg']) | |
# Bouton pour traiter le fichier audio | |
if st.button("Transcrire l'audio"): | |
if fichier_telecharge is not None: | |
# Enregistrez le fichier téléchargé temporairement | |
chemin_fichier = f"temp_{fichier_telecharge.name}" | |
with open(chemin_fichier, "wb") as f: | |
f.write(fichier_telecharge.getbuffer()) | |
# Appel de la fonction de transcription | |
try: | |
transcription, temps_traitement = transcrire_audio(chemin_fichier) | |
st.write("Transcription avec horodatage :", transcription) | |
# Affichage de la transcription sans horodatages | |
transcription_sans_horodatages = remove_timestamps(transcription) | |
st.write("Transcription sans horodatage :", transcription_sans_horodatages) | |
except Exception as e: | |
st.error(f"Une erreur est survenue lors de la transcription : {str(e)}") | |
finally: | |
# Nettoyage du fichier temporaire | |
os.remove(chemin_fichier) | |
else: | |
st.error("Veuillez télécharger un fichier audio pour continuer.") | |
# Fonction pour supprimer les horodatages du texte | |
def remove_timestamps(texte): | |
# Motif pour correspondre aux horodatages au format [HH:MM:SS.mmm -> HH:MM:SS.mmm] | |
motif = r"\[\d{2}:\d{2}:\d{2}\.\d{3} -> \d{2}:\d{2}:\d{2}\.\d{3}\]\s*" | |
# Remplacer les motifs correspondants par une chaîne vide | |
texte_nettoye = re.sub(motif, "", texte) | |
return texte_nettoye | |