nairaxo commited on
Commit
d7e32f5
·
verified ·
1 Parent(s): cba6e73

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -20
app.py CHANGED
@@ -4,6 +4,8 @@ import scipy
4
  import torchaudio
5
  from speechbrain.pretrained import SepformerSeparation as separator
6
 
 
 
7
  # Chargement des modèles Whisper pour la transcription
8
  model_roman = pipeline("automatic-speech-recognition", model="nairaxo/whisper-shikomori-latin")
9
  model_arabic = pipeline("automatic-speech-recognition", model="nairaxo/whisper-shikomori-arabic")
@@ -24,17 +26,22 @@ def transcribe(audio, model_choice):
24
  return transcription
25
 
26
  # Fonction de génération et d'amélioration audio
27
- def generate_and_enhance_audio(text):
28
- # Synthétiser la parole
 
 
 
 
29
  speech = synthesiser(text)
30
- output = "finetuned_output.wav"
31
- scipy.io.wavfile.write(output, rate=speech["sampling_rate"], data=speech["audio"][0])
32
 
33
- # Améliorer la qualité audio
34
- est_sources = model_enh.separate_file(path=output)
35
- torchaudio.save(output, est_sources[:, :, 0].detach().cpu(), 16000)
 
36
 
37
- return output
38
 
39
  # Initialisation des blocs pour l'interface Gradio
40
  demo = gr.Blocks()
@@ -50,7 +57,6 @@ mf_transcribe = gr.Interface(
50
  outputs=gr.Textbox(label="📄 Transcription en Shikomori", lines=5, max_lines=10),
51
  title="Transcription Audio en Shikomori",
52
  description="<p style='color: #555;'>Sélectionnez une méthode et un modèle pour transcrire l'audio en langue Shikomori. Ce service (en version bêta) prend en charge les transcriptions en alphabet latin et arabe (système Kamar-Eddine). Les modèles ont été entraîné sur la base de données construites à partir d'un algorithme d'alignement forcé. Pour une bonne expérience et afin de mieux transcrire vos audios, assurez-vous de prononcer clairement les mots et d'être dans un environnement ayant peu de bruits.</p>",
53
- theme="compact",
54
  )
55
 
56
  # Interface Gradio pour fichier audio (Speech-to-Text)
@@ -64,23 +70,28 @@ file_transcribe = gr.Interface(
64
  outputs=gr.Textbox(label="📄 Transcription en Shikomori", lines=5, max_lines=10),
65
  title="Transcription Audio en Shikomori",
66
  description="<p style='color: #555;'>Chargez un fichier audio et sélectionnez une méthode et un modèle pour transcrire l'audio en langue Shikomori. Ce service (en version bêta) prend en charge les transcriptions en alphabet latin et arabe (système Kamar-Eddine). Les modèles ont été entraîné sur la base de données construites à partir d'un algorithme d'alignement forcé. Pour une bonne expérience et afin de mieux transcrire vos audios, assurez-vous de prononcer clairement les mots et d'être dans un environnement ayant peu de bruits.</p>",
67
- theme="compact",
68
  )
69
 
70
  # Interface Gradio pour Text-to-Speech
71
- tts_interface = gr.Interface(
72
- fn=generate_and_enhance_audio,
73
- inputs=gr.Textbox(label="Entrez votre texte", lines=3, placeholder="Écrivez ici..."),
74
- outputs=gr.Audio(label="Audio généré", type="filepath"),
75
- title="Synthèse et amélioration de la parole",
76
- description="<p style='color: #555;'>Entrez du texte pour générer de la parole en Shikomori et améliorer sa qualité audio.</p>",
77
- theme="compact",
78
- )
 
 
 
 
 
 
79
 
80
  # Utilisation de l'interface avec des onglets
81
- with demo:
82
  gr.TabbedInterface(
83
- [mf_transcribe, file_transcribe, tts_interface],
84
  ["🔊 Microphone", "📁 Fichier Audio", "🎙️ Text-to-Speech"]
85
  )
86
 
 
4
  import torchaudio
5
  from speechbrain.pretrained import SepformerSeparation as separator
6
 
7
+ from shialifube import transliterate
8
+
9
  # Chargement des modèles Whisper pour la transcription
10
  model_roman = pipeline("automatic-speech-recognition", model="nairaxo/whisper-shikomori-latin")
11
  model_arabic = pipeline("automatic-speech-recognition", model="nairaxo/whisper-shikomori-arabic")
 
26
  return transcription
27
 
28
  # Fonction de génération et d'amélioration audio
29
+ def generate_and_enhance_audio(text, script_choice):
30
+ # Translittérer le texte si l'utilisateur a choisi l'arabe
31
+ if script_choice == "Alphabet arabe":
32
+ text = transliterate(text) # Translittération de l'arabe en latin
33
+
34
+ # Synthétiser la parole (audio original)
35
  speech = synthesiser(text)
36
+ original_output = "original_output.wav"
37
+ scipy.io.wavfile.write(original_output, rate=speech["sampling_rate"], data=speech["audio"][0])
38
 
39
+ # Améliorer la qualité audio (audio amélioré)
40
+ enhanced_output = "enhanced_output.wav"
41
+ est_sources = model_enh.separate_file(path=original_output)
42
+ torchaudio.save(enhanced_output, est_sources[:, :, 0].detach().cpu(), 16000)
43
 
44
+ return original_output, enhanced_output
45
 
46
  # Initialisation des blocs pour l'interface Gradio
47
  demo = gr.Blocks()
 
57
  outputs=gr.Textbox(label="📄 Transcription en Shikomori", lines=5, max_lines=10),
58
  title="Transcription Audio en Shikomori",
59
  description="<p style='color: #555;'>Sélectionnez une méthode et un modèle pour transcrire l'audio en langue Shikomori. Ce service (en version bêta) prend en charge les transcriptions en alphabet latin et arabe (système Kamar-Eddine). Les modèles ont été entraîné sur la base de données construites à partir d'un algorithme d'alignement forcé. Pour une bonne expérience et afin de mieux transcrire vos audios, assurez-vous de prononcer clairement les mots et d'être dans un environnement ayant peu de bruits.</p>",
 
60
  )
61
 
62
  # Interface Gradio pour fichier audio (Speech-to-Text)
 
70
  outputs=gr.Textbox(label="📄 Transcription en Shikomori", lines=5, max_lines=10),
71
  title="Transcription Audio en Shikomori",
72
  description="<p style='color: #555;'>Chargez un fichier audio et sélectionnez une méthode et un modèle pour transcrire l'audio en langue Shikomori. Ce service (en version bêta) prend en charge les transcriptions en alphabet latin et arabe (système Kamar-Eddine). Les modèles ont été entraîné sur la base de données construites à partir d'un algorithme d'alignement forcé. Pour une bonne expérience et afin de mieux transcrire vos audios, assurez-vous de prononcer clairement les mots et d'être dans un environnement ayant peu de bruits.</p>",
 
73
  )
74
 
75
  # Interface Gradio pour Text-to-Speech
76
+ with gr.Blocks() as tts_interface: # Create a new Blocks instance for Text-to-Speech
77
+ gr.Markdown("## 🎙️ Synthèse et amélioration de la parole")
78
+ gr.Markdown("<p style='color: #555;'>Entrez du texte pour générer de la parole en Shikomori. Si le texte est en alphabet arabe, il sera automatiquement translittéré en alphabet latin avant la synthèse. L'audio original et l'audio amélioré seront affichés côte à côte.</p>")
79
+
80
+ with gr.Row():
81
+ text_input = gr.Textbox(label="Entrez votre texte", lines=3, placeholder="Écrivez ici...")
82
+ script_choice = gr.Radio(choices=["Alphabet latin", "Alphabet arabe"], label="Sélection du script d'entrée", value="Alphabet latin")
83
+
84
+ with gr.Row():
85
+ original_audio = gr.Audio(label="Audio original", type="filepath")
86
+ enhanced_audio = gr.Audio(label="Audio amélioré", type="filepath")
87
+
88
+ generate_button = gr.Button("Générer l'audio")
89
+ generate_button.click(fn=generate_and_enhance_audio, inputs=[text_input, script_choice], outputs=[original_audio, enhanced_audio])
90
 
91
  # Utilisation de l'interface avec des onglets
92
+ with demo: # Use the main 'demo' Blocks instance for the TabbedInterface
93
  gr.TabbedInterface(
94
+ [mf_transcribe, file_transcribe, tts_interface], # Use the new tts_interface
95
  ["🔊 Microphone", "📁 Fichier Audio", "🎙️ Text-to-Speech"]
96
  )
97