Mohssinibra commited on
Commit
9078685
·
verified ·
1 Parent(s): 85e680f

ArToEngModel2

Browse files
Files changed (1) hide show
  1. app.py +22 -14
app.py CHANGED
@@ -1,42 +1,50 @@
1
  import gradio as gr
2
  import librosa
3
  import torch
4
- from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor, MBartForConditionalGeneration, MBart50Tokenizer, MarianMTModel, MarianTokenizer
5
 
6
- # Load pre-trained models
7
  model = Wav2Vec2ForCTC.from_pretrained("boumehdi/wav2vec2-large-xlsr-moroccan-darija")
8
  processor = Wav2Vec2Processor.from_pretrained("boumehdi/wav2vec2-large-xlsr-moroccan-darija")
9
 
10
- #translation_model = MBartForConditionalGeneration.from_pretrained("facebook/mbart-large-50-many-to-many-mmt")
11
- #translation_tokenizer = MBart50Tokenizer.from_pretrained("facebook/mbart-large-50-many-to-many-mmt", src_lang="ar_AR")
12
-
13
  # Charger le modèle de traduction Arabe -> Anglais
14
  translation_model_name = "Helsinki-NLP/opus-mt-ar-en"
15
  translation_model = MarianMTModel.from_pretrained(translation_model_name)
16
  translation_tokenizer = MarianTokenizer.from_pretrained(translation_model_name)
17
 
18
-
19
  def transcribe_audio(audio):
 
 
20
  audio_array, sr = librosa.load(audio, sr=16000)
21
  input_values = processor(audio_array, return_tensors="pt", padding=True).input_values
 
 
22
  logits = model(input_values).logits
23
  tokens = torch.argmax(logits, axis=-1)
 
 
24
  transcription = processor.decode(tokens[0])
 
 
25
  translation = translate_text(transcription)
 
26
  return transcription, translation
27
 
28
  def translate_text(text):
29
- inputs = translation_tokenizer(text, return_tensors="pt")
30
- translated_tokens = translation_model.generate(**inputs, forced_bos_token_id=translation_tokenizer.lang_code_to_id["en_XX"])
31
- translated_text = translation_tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
 
32
  return translated_text
33
 
 
34
  with gr.Blocks() as demo:
35
- gr.Markdown("# Speech-to-Text and Translation")
36
- audio_input = gr.Audio(type="filepath")
37
- submit_button = gr.Button("Submit")
38
- transcription_output = gr.Textbox(label="Transcription")
39
- translation_output = gr.Textbox(label="Translation")
 
40
 
41
  submit_button.click(transcribe_audio, inputs=[audio_input], outputs=[transcription_output, translation_output])
42
 
 
1
  import gradio as gr
2
  import librosa
3
  import torch
4
+ from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor, MarianMTModel, MarianTokenizer
5
 
6
+ # Charger le modèle de transcription pour le Darija
7
  model = Wav2Vec2ForCTC.from_pretrained("boumehdi/wav2vec2-large-xlsr-moroccan-darija")
8
  processor = Wav2Vec2Processor.from_pretrained("boumehdi/wav2vec2-large-xlsr-moroccan-darija")
9
 
 
 
 
10
  # Charger le modèle de traduction Arabe -> Anglais
11
  translation_model_name = "Helsinki-NLP/opus-mt-ar-en"
12
  translation_model = MarianMTModel.from_pretrained(translation_model_name)
13
  translation_tokenizer = MarianTokenizer.from_pretrained(translation_model_name)
14
 
 
15
  def transcribe_audio(audio):
16
+ """Convertir l'audio en texte et le traduire en anglais"""
17
+ # Charger et prétraiter l'audio
18
  audio_array, sr = librosa.load(audio, sr=16000)
19
  input_values = processor(audio_array, return_tensors="pt", padding=True).input_values
20
+
21
+ # Obtenir les prédictions du modèle
22
  logits = model(input_values).logits
23
  tokens = torch.argmax(logits, axis=-1)
24
+
25
+ # Décoder la transcription en Darija
26
  transcription = processor.decode(tokens[0])
27
+
28
+ # Traduire en anglais
29
  translation = translate_text(transcription)
30
+
31
  return transcription, translation
32
 
33
  def translate_text(text):
34
+ """Traduire le texte de l'arabe vers l'anglais"""
35
+ inputs = translation_tokenizer(text, return_tensors="pt", padding=True, truncation=True)
36
+ translated_tokens = translation_model.generate(**inputs)
37
+ translated_text = translation_tokenizer.decode(translated_tokens[0], skip_special_tokens=True)
38
  return translated_text
39
 
40
+ # Interface utilisateur avec Gradio
41
  with gr.Blocks() as demo:
42
+ gr.Markdown("# 🎙️ Speech-to-Text & Translation")
43
+
44
+ audio_input = gr.Audio(type="filepath", label="Upload Audio or Record")
45
+ submit_button = gr.Button("Transcribe & Translate")
46
+ transcription_output = gr.Textbox(label="Transcription (Darija)")
47
+ translation_output = gr.Textbox(label="Translation (English)")
48
 
49
  submit_button.click(transcribe_audio, inputs=[audio_input], outputs=[transcription_output, translation_output])
50