File size: 2,188 Bytes
b740fff
 
 
 
828732e
 
 
 
 
 
 
af86d6e
 
b35a9f7
af86d6e
b35a9f7
 
 
 
 
 
 
 
 
 
 
af86d6e
 
3ab0a08
 
 
ec56fd8
 
 
 
b35a9f7
 
 
 
3ab0a08
b740fff
 
c8442dd
 
af86d6e
 
5b9aa0e
 
3ab0a08
9da07f8
 
3ab0a08
 
 
b35a9f7
3ab0a08
77de335
3ab0a08
77de335
 
 
 
 
3ab0a08
b35a9f7
3ab0a08
ddb4c3e
9da07f8
3ab0a08
 
 
 
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
# -*- coding: utf-8 -*-
from ttsmms import TTS
import gradio as gr

ISO_CODES = {'Tachelhit': 'shi',
             'Tarifit (Latin script)': 'rif-script_latin',
             'Tarifit (Arabic script)': 'rif-script_arabic',
             'Taqbaylit': 'kab',
             'Tamasheq': 'taq',
             'Tamajaq, Tawallammat (Tifinagh script)': 'ttq-script_tifinagh'
             }

mapping = {'ɣ': 'ġ',
           'v': 'ġ',
           'c': 'š',
           'x': 'ḫ',
           'T': 'ṭ',
           'S': 'ṣ',
           'D': 'ḍ',
           'H': 'ḥ',
           'Z': 'ẓ',
           '3': 'ε',
           '7': 'ḥ',
           '9': 'q',
           'gh': 'ġ',
           'kh': 'ḫ'
          }

MODELS = {}

def tts(text, variant):
    variant_code = ISO_CODES[variant]
    if variant_code not in MODELS:
        MODELS[variant_code] = TTS(variant_code)
    model = MODELS[variant_code]

    if variant_code == 'shi':
        for key, value in mapping.items():
            text = text.replace(key, value)
    audio = model.synthesis(text)
    return (audio['sampling_rate'], audio['x'])

examples = [["Riɣ ad cceɣ s ufus kḍuɣ s inxar", "Tachelhit"],
            ["arraw n lhem yukr aɣ ihdumn nɣ", "Tachelhit"],
            ["wa tamɣart ma d ukan teskart ?", "Tachelhit"],
            ["ar d iṭṭar unẓar, ffuɣn d igḍaḍ, mmɣin d ijjign", "Tachelhit"],
            ["Egg lxir di timura, ad tafed di tiwwura.", "Tarifit (Latin script)"],
            ["Aqemmum iqnen ur ṯ-ttidfen izan.", "Tarifit (Latin script)"]]

description = "Text-to-speech for Tachelhit, Tarifit, Taqbaylit, Tamasheq and Tamajaq (Tawallammat)."

iface = gr.Interface(
    fn=tts,
    inputs=[
        gr.Textbox(
            label="Text",
            value="Text to synthesize."
        ),
        gr.Dropdown(
            label="Variant",
            choices=list(ISO_CODES.keys()),
            value="Tachelhit"
        )
    ],
    outputs=gr.Audio(label="Output", type="numpy"),
    examples=examples,
    title="🗣️ TTS 🗣️",
    description=description,
    allow_flagging="manual",
    flagging_options=['error', 'bad-quality', 'wrong-pronounciation'],
)
iface.launch()