BetterWhisper / app.py
Lenylvt's picture
Update app.py
998a321 verified
raw
history blame
2.61 kB
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