liaqateagle commited on
Commit
7ded678
·
verified ·
1 Parent(s): 34a70dd

Upload 4 files

Browse files
Files changed (4) hide show
  1. .gitattributes +34 -35
  2. README.md +12 -14
  3. appen.py +167 -0
  4. requirements.txt +4 -0
.gitattributes CHANGED
@@ -1,35 +1,34 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
 
README.md CHANGED
@@ -1,14 +1,12 @@
1
- ---
2
- title: Gtts Multilingual
3
- emoji: 🦀
4
- colorFrom: green
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 5.11.0
8
- app_file: app.py
9
- pinned: false
10
- license: apache-2.0
11
- short_description: Convert your text into natural-sounding speech
12
- ---
13
-
14
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: Text to Speech Converter By LiaqatEagle
3
+ emoji: 🗨️
4
+ colorFrom: red
5
+ colorTo: indigo
6
+ sdk: gradio
7
+ sdk_version: 3.28.1
8
+ app_file: app.py
9
+ pinned: false
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
appen.py ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from gtts import gTTS
3
+ import io
4
+ import os
5
+ import time
6
+ from gtts.lang import _main_langs
7
+ from docx import Document
8
+
9
+ # Directory for audio files
10
+ AUDIO_DIR = 'audio_files'
11
+ # Maximum file age in seconds (24 hours)
12
+ MAX_FILE_AGE = 24 * 60 * 60
13
+
14
+ # Function to convert text to speech using gTTS
15
+ def text_to_speech(text, lang, tld):
16
+ lang_codes = {lang_name: lang_code for lang_code, lang_name in _main_langs().items()}
17
+ lang_code = lang_codes[lang]
18
+
19
+ tts = gTTS(text, lang=lang_code, tld=tld)
20
+ fp = io.BytesIO()
21
+ tts.write_to_fp(fp)
22
+ fp.seek(0)
23
+
24
+ os.makedirs(AUDIO_DIR, exist_ok=True)
25
+ file_name = str(time.time()) + '.mp3'
26
+ file_path = os.path.join(AUDIO_DIR, file_name)
27
+
28
+ with open(file_path, 'wb') as f:
29
+ f.write(fp.read())
30
+
31
+ delete_old_audio_files()
32
+ return file_path, file_path
33
+
34
+ # Function to delete old audio files
35
+ def delete_old_audio_files():
36
+ now = time.time()
37
+ for file_name in os.listdir(AUDIO_DIR):
38
+ file_path = os.path.join(AUDIO_DIR, file_name)
39
+ if now - os.path.getmtime(file_path) > MAX_FILE_AGE:
40
+ os.remove(file_path)
41
+
42
+ # Function to convert TXT file to speech
43
+ def txt_to_speech(file, lang, tld):
44
+ with open(file.name, 'r') as f:
45
+ text = f.read()
46
+ return text_to_speech(text, lang, tld)
47
+
48
+ # Function to convert DOCX file to speech
49
+ def docx_to_speech(file, lang, tld):
50
+ doc = Document(file.name)
51
+ text = "\n".join([para.text for para in doc.paragraphs])
52
+ return text_to_speech(text, lang, tld)
53
+
54
+ # Create beautiful Gradio interface
55
+ with gr.Blocks(css="""
56
+ .gradio-container {
57
+ background: linear-gradient(to right, #f6f8fa, #e9ecef);
58
+ }
59
+ .tabs {
60
+ border-radius: 10px;
61
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
62
+ }
63
+ .input-container {
64
+ background: white;
65
+ padding: 20px;
66
+ border-radius: 8px;
67
+ margin: 10px 0;
68
+ }
69
+ .button {
70
+ background: #007bff;
71
+ color: white;
72
+ border-radius: 5px;
73
+ padding: 10px 20px;
74
+ transition: all 0.3s ease;
75
+ }
76
+ .button:hover {
77
+ background: #0056b3;
78
+ transform: translateY(-2px);
79
+ }
80
+ """) as iface:
81
+ gr.Markdown(
82
+ """
83
+ # 🎙️ Text to Speech Converter By LiaqatEagle
84
+ ### Convert your text into natural-sounding speech
85
+ """
86
+ )
87
+
88
+ with gr.Tabs(elem_classes="tabs") as tabs:
89
+ with gr.Tab("✍️ Text to Speech"):
90
+ with gr.Column(elem_classes="input-container"):
91
+ text_input = gr.Textbox(
92
+ lines=10,
93
+ label="Enter your text here:",
94
+ placeholder="Type or paste your text here..."
95
+ )
96
+ with gr.Row():
97
+ lang_input = gr.Dropdown(
98
+ choices=list(_main_langs().values()),
99
+ label="Select Language:",
100
+ value="English"
101
+ )
102
+ tld_input = gr.Dropdown(
103
+ choices=["com", "co.uk", "ca"],
104
+ label="Select TLD:",
105
+ value="com"
106
+ )
107
+ convert_btn = gr.Button("Convert", elem_classes="button")
108
+ audio_output = gr.Audio(label="Audio Output")
109
+ file_output = gr.File(label="Download Audio")
110
+
111
+ convert_btn.click(
112
+ fn=text_to_speech,
113
+ inputs=[text_input, lang_input, tld_input],
114
+ outputs=[audio_output, file_output]
115
+ )
116
+
117
+ with gr.Tab("📄 TXT to Speech"):
118
+ with gr.Column(elem_classes="input-container"):
119
+ file_input = gr.File(label="Upload your TXT file")
120
+ with gr.Row():
121
+ lang_input_file = gr.Dropdown(
122
+ choices=list(_main_langs().values()),
123
+ label="Select Language:",
124
+ value="English"
125
+ )
126
+ tld_input_file = gr.Dropdown(
127
+ choices=["com", "co.uk", "ca"],
128
+ label="Select TLD:",
129
+ value="com"
130
+ )
131
+ convert_btn_file = gr.Button("Convert", elem_classes="button")
132
+ audio_output_file = gr.Audio(label="Audio Output")
133
+ file_output_file = gr.File(label="Download Audio")
134
+
135
+ convert_btn_file.click(
136
+ fn=txt_to_speech,
137
+ inputs=[file_input, lang_input_file, tld_input_file],
138
+ outputs=[audio_output_file, file_output_file]
139
+ )
140
+
141
+ with gr.Tab("📝 DOCX to Speech"):
142
+ with gr.Column(elem_classes="input-container"):
143
+ docx_file_input = gr.File(label="Upload your DOCX file")
144
+ with gr.Row():
145
+ lang_input_docx = gr.Dropdown(
146
+ choices=list(_main_langs().values()),
147
+ label="Select Language:",
148
+ value="English"
149
+ )
150
+ tld_input_docx = gr.Dropdown(
151
+ choices=["com", "co.uk", "ca"],
152
+ label="Select TLD:",
153
+ value="com"
154
+ )
155
+ convert_btn_docx = gr.Button("Convert", elem_classes="button")
156
+ audio_output_docx = gr.Audio(label="Audio Output")
157
+ file_output_docx = gr.File(label="Download Audio")
158
+
159
+ convert_btn_docx.click(
160
+ fn=docx_to_speech,
161
+ inputs=[docx_file_input, lang_input_docx, tld_input_docx],
162
+ outputs=[audio_output_docx, file_output_docx]
163
+ )
164
+
165
+ # Enable queue and launch the interface
166
+ iface.queue()
167
+ iface.launch()
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gTTS
2
+ edge-tts
3
+ python-docx
4
+ EbookLib