File size: 2,611 Bytes
2d27b8f
 
998a321
 
2d27b8f
998a321
2d27b8f
998a321
 
2d27b8f
998a321
2d27b8f
 
998a321
 
 
 
 
 
 
2d27b8f
 
998a321
2d27b8f
998a321
2d27b8f
998a321
 
2d27b8f
998a321
 
 
 
 
 
 
2d27b8f
998a321
2d27b8f
998a321
 
 
 
 
 
2d27b8f
998a321
2d27b8f
998a321
 
2d27b8f
998a321
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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