File size: 2,606 Bytes
fe4637e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4230d06
daee104
 
 
d4336ec
 
fe4637e
daee104
fe4637e
daee104
fe4637e
 
daee104
fe4637e
daee104
 
 
 
 
 
 
 
ecdba17
fe4637e
 
 
 
 
daee104
fe4637e
daee104
ecdba17
 
 
 
 
 
 
 
 
 
fe4637e
 
 
daee104
 
fe4637e
 
ecdba17
 
 
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# import gradio as gr
# from transformers import pipeline
# import numpy as np

# transcriber = pipeline("automatic-speech-recognition", model="jonatasgrosman/wav2vec2-large-xlsr-53-arabic")

# def transcribe(stream, new_chunk):
#     sr, y = new_chunk
#     y = y.astype(np.float32)
#     y /= np.max(np.abs(y))

#     if stream is not None:
#         stream = np.concatenate([stream, y])
#     else:
#         stream = y
#     return stream, transcriber({"sampling_rate": sr, "raw": stream})["text"]


# demo = gr.Interface(
#     transcribe,
#     ["state", gr.Audio(sources=["microphone"], streaming=True)],
#     ["state", "text"],
#     live=True, title="S2T: Transcription automatique en LIVE de l'arabe en text by PS-WADE", 
#     description="Parlez en arabe dans le microphone. La transcription commence en quelques secondes. Attendez un moment après avoir terminé pour voir le reste de la transcription"
# )

    
# demo.launch(share=True, show_error=True)
import httpcore
import gradio as gr
from transformers import pipeline
import numpy as np
setattr(httpcore, 'SyncHTTPTransport', object)

from googletrans import Translator

# Initialisation du modèle de transcription
transcriber = pipeline("automatic-speech-recognition", model="jonatasgrosman/wav2vec2-large-xlsr-53-arabic")
# Initialisation du traducteur
translator = Translator()

def transcribe_and_translate(stream, new_chunk):
    sr, y = new_chunk
    y = y.astype(np.float32)
    y /= np.max(np.abs(y))

    if stream is not None:
        stream = np.concatenate([stream, y])
    else:
        stream = y
    
    # Transcription du texte
    transcription = transcriber({"sampling_rate": sr, "raw": stream})["text"]
    # Traduction du texte transcrit
    translation = translator.translate(transcription, src='ar', dest='fr').text
    return stream, transcription, translation

# Création de l'interface Gradio
demo = gr.Interface(
    fn=transcribe_and_translate,
    inputs=[
        gr.State(),
        gr.Audio(sources=["microphone"], streaming=True)
    ],
    outputs=[
        gr.State(),
        gr.Textbox(label="Texte en Arabe"),
        gr.Textbox(label="Traduction en Français")
    ],
    live=True,
    title="S2T: Transcription et traduction automatiques en LIVE de l'arabe en texte français by PS-WADE",
    description="Parlez en arabe dans le microphone. La transcription et la traduction commencent en quelques secondes. Attendez un moment après avoir terminé pour voir le reste de la transcription et la traduction."
)

# Lancement de l'application Gradio
demo.launch(share=True, show_error=True)