Update app.py
Browse files
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 |
-
#
|
|
|
|
|
|
|
|
|
29 |
speech = synthesiser(text)
|
30 |
-
|
31 |
-
scipy.io.wavfile.write(
|
32 |
|
33 |
-
# Améliorer la qualité audio
|
34 |
-
|
35 |
-
|
|
|
36 |
|
37 |
-
return
|
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 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
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 |
|