File size: 8,859 Bytes
78d1101
21f74cc
78d1101
 
5966f2d
1c7cbff
78d1101
 
 
 
 
a954412
21f74cc
6151eff
6adc46a
5966f2d
f9ec5b7
09b20e1
 
 
 
 
 
 
 
58f88c8
09b20e1
21f74cc
09b20e1
 
 
 
 
 
 
 
 
 
58f88c8
09b20e1
 
 
 
 
 
 
 
 
 
 
 
58f88c8
09b20e1
21f74cc
09b20e1
78d1101
 
7c7161e
78d1101
1c7cbff
d7371fa
1c7cbff
09b20e1
1c7cbff
 
 
eaf8753
1c7cbff
 
 
 
 
 
09b20e1
 
78d1101
 
1c7cbff
 
21f74cc
1c7cbff
701a921
1c7cbff
 
 
 
 
 
6151eff
1c7cbff
 
 
 
 
 
 
701a921
1c7cbff
 
 
21f74cc
 
701a921
1c7cbff
21f74cc
a954412
 
09b20e1
 
21f74cc
 
f0dafb8
09b20e1
21f74cc
 
1c7cbff
 
7c7161e
21f74cc
701a921
 
 
 
 
f9ec5b7
 
 
5966f2d
f9ec5b7
 
 
 
701a921
f9ec5b7
 
1c7cbff
 
 
21f74cc
f0dafb8
701a921
 
f0dafb8
a954412
 
 
1c7cbff
21f74cc
f0dafb8
09b20e1
1c7cbff
21f74cc
 
09b20e1
78d1101
 
09b20e1
 
78d1101
 
1c7cbff
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import gradio as gr
from huggingface_hub import login

import os
#from languages import get_language_names
from goai_helpers import goai_traduction, goai_stt, goai_stt2, goai_tts,  goai_tts2, goai_ttt_tts_pipeline, goai_stt_ttt_pipeline

auth_token = os.getenv('HF_SPACE_TOKEN')
login(token=auth_token)


# list all files in the ./exples_voix directory for the dropdown
AUDIO_FILES = [f for f in os.listdir('./exples_voix') if os.path.isfile(os.path.join('./exples_voix', f))]
MODELES_TTS = ["ArissBandoss/coqui-tts-moore-V1", "ArissBandoss/coqui-tts-moore-V3", "ArissBandoss/mms-tts-mos-V2"]
MODELES_ASR = ["ArissBandoss/whisper-small-mos", "ArissBandoss/whisper-large-v3-turbo-mos"]
LANGUAGES   = ["Automatic Detection"]

DESCRIPTION_TTT = """<div style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;">
                        <div style="flex: 1; min-width: 250px;">
                            Cette 1ère interface sert à démontrer les performances du modèle d'IA de traduction de la <b>langue Mooré</b> vers la langue <b>Francaise</b> et vice-versa.
                            Ce modèle a été concu, développé et maintenu par <b>GO AI CORP</b> et la version disponible en test est celle à 700 millions de paramètres.
                            <br><br>
                            Pour plus de détails sur ce projet ou pour toute collaboration, veuillez prendre attache avec nous via WhatsApp au <b>+226 66 62 83 03</b>.
                        </div>
                        <div style="flex-shrink: 0; min-width: 150px; text-align: center;">
                            <img src="https://goaicorporation.org/assets/images/logo.png" width="300px" style="max-width: 100%; height: auto;">
                        </div>
                    </div>
                """

DESCRIPTION_TTS = """<div style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;">
                        <div style="flex: 1; min-width: 250px;">
                            Cette 2ème interface sert à démontrer les performances des modèles de <b>synthèse vocale</b> du <b>Mooré</b> qui ont été concus, développés et maintenus par <b>GO AI CORP</b>.  
                            Pour l'instant, deux modèles sont mis à disposition pour tests.
                            <br><br>
                            Pour plus de détails sur ce projet ou pour toute collaboration, veuillez prendre attache avec nous via WhatsApp au <b>+226 66 62 83 03</b>.
                        </div>
                        <div style="flex-shrink: 0; min-width: 150px; text-align: center;">
                            <img src="https://goaicorporation.org/assets/images/logo.png" width="300px" style="max-width: 100%; height: auto;">
                        </div>
                    </div>
                """

DESCRIPTION_STT = """<div style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;">
                        <div style="flex: 1; min-width: 250px;">
                            Cette 3ème interface sert à démontrer les performances des modèles de <b>transcription</b> du <b>Mooré</b> qui ont été concus, développés et maintenus par <b>GO AI CORP</b>.  
                            Pour l'instant, deux modèles sont mis à disposition pour tests.
                            <br><br>
                            Pour plus de détails sur ce projet ou pour toute collaboration, veuillez prendre attache avec nous via WhatsApp au <b>+226 66 62 83 03</b>.
                        </div>
                        <div style="flex-shrink: 0; min-width: 150px; text-align: center;">
                            <img src="https://goaicorporation.org/assets/images/logo.png" width="300px" style="max-width: 100%; height: auto;">
                        </div>
                    </div>
                """


demo = gr.Blocks(theme=gr.themes.Soft())

goai_traduction_if = gr.Interface(
    fn=goai_traduction.goai_traduction,
    inputs=[
        gr.Textbox(label="Texte à traduire", placeholder="La, pagã sɩd talla raadã n tɩ lebs kãangã pʋgẽ, n na n paam a menga. Rẽ wã yĩnga, sẽn kisa, sɩd kisame. Sẽn ka maande, sɩd ka maand ye."),
        gr.Dropdown(label="Langue source", choices=["fra_Latn", "mos_Latn"], value='fra_Latn'),
        gr.Dropdown(label="Langue cible", choices=["fra_Latn", "mos_Latn"], value='mos_Latn')
    ],
    outputs=gr.Text(label="Texte traduit"),
    examples=[["Yʋʋm a wãn la b kẽesd biig lekolle?", "mos_Latn", "fra_Latn"],
              ["Zak-soab la kasma.", "mos_Latn", "fra_Latn"],
              ["Le gouvernement avait pris des mesures louables par rapport à l’augmentation des prix de certaines denrées alimentaires.", "fra_Latn", "mos_Latn"],
              ["Comme lors du match face à la Côte d’Ivoire, c’est sur un coup de pied arrêté que les Etalons encaissent leur but.", "fra_Latn", "mos_Latn"],
    ],
    cache_examples=False,
    title="Traduction Mooré-Francais, Francais-Mooré",
    description=DESCRIPTION_TTT
)

goai_ttt_tts_pipeline_if = gr.Interface(
    fn=goai_ttt_tts_pipeline.goai_ttt_tts,
    inputs=[
        gr.Text(
            label="Texte à traduire (en Francais)", 
            lines=3, 
            value="Par cette ouverture, le centre se veut contribuer à la formation professionnelle des jeunes et des femmes, renforcer les capacités des acteurs du monde agricole, et contribuer à la lutte contre le chômage au Burkina Faso."
        ),
        gr.Dropdown(
            label="Modèles de TTS", 
            choices=MODELES_TTS, 
            value="ArissBandoss/coqui-tts-moore-V3"
        ),
        gr.Dropdown(
            label="Voix", 
            choices=AUDIO_FILES, 
            value="exple_voix_masculine.wav"
        ),
        gr.Audio(
            label="Cloner votre voix (optionel et uniquement pour le 1er modèle proposé)", 
            type="numpy", 
            format="wav"
        ),
    ],
    outputs=[
        gr.Text(label="Texte traduit (en Mooré)"),
        gr.Audio(label="Audio généré", format="wav"),
    ],
    examples=[["Ils vont bien, merci. Mon père travaille dur dans les champs et ma mère est toujours occupée à la maison.", "exple_voix_masculine_ref17.wav", "ArissBandoss/coqui-tts-moore-V1"], 
              ["La finale s’est jouée en présence du Président du Faso, Ibrahim Traoré.", "exple_voix_masculine_ref17.wav", "ArissBandoss/coqui-tts-moore-V1"],
              ["Les enfants apprennent les danses traditionnelles de leurs ancêtres, jouent à des jeux traditionnels dans les rues et aident leurs parents dans les tâches quotidiennes.", "exple_voix_masculine.wav", "ArissBandoss/coqui-tts-moore-V1"],
              ["Ils achetèrent des troupeaux, firent construire des cases, parcoururent tout le pays pour offrir à leur mère et à leurs femmes les plus beaux bijoux, les plus belles étoffes.", "exple_voix_feminine.wav", "ArissBandoss/coqui-tts-moore-V1"]
             ],
    cache_examples=False,
    title="Mooré TTS & Traduction",
    description=DESCRIPTION_TTS,
)


goai_stt_ttt_pipeline_if = gr.Interface(
    fn=goai_stt_ttt_pipeline.goai_stt_ttt,
    inputs=[
        gr.Audio(
            sources=["microphone", "upload"], 
            type="filepath",
            label="Audio Mooré",
        ),
        gr.Dropdown(
            label="Modèles d'ASR", 
            choices=MODELES_ASR, 
            value="ArissBandoss/whisper-small-mos",
        ),
        gr.Dropdown(
            choices=LANGUAGES, 
            value="Automatic Detection",  # + sorted(get_language_names())
            label="Langue (Mooré)", 
            interactive = True,
        ), 
        gr.Slider(label="Batch Size", minimum=1, maximum=32, value=8, step=1),
        gr.Slider(label="Chunk Length (s)", minimum=1, maximum=60, value=17.5, step=0.1),
        gr.Slider(label="Stride Length (s)", minimum=1, maximum=30, value=1, step=0.1),
    ],
    outputs=[
        gr.Textbox(label="Texte transcrit (en Mooré)"), 
        gr.Textbox(label="Texte traduit (Francais)"), 
    ],
    examples=[["./exples_voix/exple_voix_feminine.wav", "ArissBandoss/whisper-small-mos"], 
              ["./exples_voix/exple_voix_masculine.wav", "ArissBandoss/whisper-small-mos"],
              ["./exples_voix/exple_voix_masculine_ref17.wav", "ArissBandoss/whisper-small-mos"],
             ],
    cache_examples=False,
    title="Mooré ASR & Traduction",
    description=DESCRIPTION_STT,
    flagging_mode="auto",
)


with demo:
    gr.TabbedInterface(
        interface_list=[goai_traduction_if, goai_ttt_tts_pipeline_if, goai_stt_ttt_pipeline_if],
        tab_names=["Traduction Mooré-Francais", "Mooré TTS & Traduction", "Mooré ASR & Traduction"]
    )

demo.queue().launch(ssr_mode=False)