saboor345 commited on
Commit
668094f
·
1 Parent(s): 297e230

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +106 -0
app.py CHANGED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import scipy
3
+ import nltk
4
+ import tempfile
5
+ import numpy as np
6
+ from bark.generation import preload_models, SAMPLE_RATE
7
+ from bark import generate_audio
8
+ from scipy.io import wavfile
9
+ from IPython.display import Audio
10
+ import gradio as gr
11
+ nltk.download('punkt')
12
+ os.environ["CUDA_VISIBLE_DEVICES"] = "0"
13
+ preload_models()
14
+
15
+
16
+
17
+ def generate_audio_from_text(text,language_prompt,gender_prompt):
18
+ if language_prompt == "english":
19
+ if gender_prompt == "male":
20
+ history_prompt = "v2/en_speaker_8"
21
+ else:
22
+ history_prompt = "v2/en_speaker_9"
23
+ elif language_prompt == "french":
24
+ if gender_prompt == "male":
25
+ history_prompt = "v2/fr_speaker_0"
26
+ else:
27
+ history_prompt = "v2/fr_speaker_1"
28
+ elif language_prompt =="german":
29
+ if gender_prompt=="male":
30
+ history_prompt = "v2/de_speaker_2"
31
+ else:
32
+ history_prompt="v2/de_speaker_3"
33
+ elif language_prompt =="hindi":
34
+ if gender_prompt=="male":
35
+ history_prompt = "v2/hi_speaker_8"
36
+ else:
37
+ history_prompt="v2/hi_speaker_3"
38
+ elif language_prompt =="chinese":
39
+ if gender_prompt=="male":
40
+ history_prompt = "v2/zh_speaker_1"
41
+ else:
42
+ history_prompt="v2/zh_speaker_4"
43
+ elif language_prompt =="italian":
44
+ if gender_prompt=="male":
45
+ history_prompt = "v2/it_speaker_4"
46
+ else:
47
+ history_prompt="v2/it_speaker_7"
48
+ elif language_prompt =="japanese":
49
+ if gender_prompt=="male":
50
+ history_prompt = "v2/ja_speaker_2"
51
+ else:
52
+ history_prompt="v2/ja_speaker_0"
53
+ else:
54
+ raise ValueError("Invalid language or gender selection")
55
+
56
+ sentences = nltk.sent_tokenize(text)
57
+ # silence = np.zeros(int(0.25 * SAMPLE_RATE)) # quarter second of silence
58
+
59
+ pieces = []
60
+ for sentence in sentences:
61
+ audio_array = generate_audio(sentence, history_prompt=history_prompt)
62
+ pieces += [audio_array]
63
+
64
+ # Concatenate the audio pieces
65
+ final_audio = np.concatenate(pieces)
66
+
67
+ # Save the audio to a WAV file
68
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_wav:
69
+ wavfile.write(temp_wav.name, SAMPLE_RATE, final_audio)
70
+
71
+ # Return the saved audio file
72
+ return temp_wav.name
73
+
74
+ # Define lists of language and gender options
75
+ language_options = [
76
+ "english",
77
+ "french",
78
+ "german",
79
+ "hindi",
80
+ "chinese",
81
+ "italian",
82
+ "japanese",
83
+
84
+
85
+ ]
86
+
87
+ gender_options = [
88
+ "male",
89
+ "female",
90
+ ]
91
+
92
+ # Create a Gradio interface with text input and dropdown menus for language and gender
93
+ iface = gr.Interface(
94
+ fn=generate_audio_from_text,
95
+ inputs=[
96
+ gr.Textbox(text="Enter text to convert to speech:"),
97
+ gr.Dropdown(choices=language_options, label="Select language:"),
98
+ gr.Dropdown(choices=gender_options, label="Select gender:"),
99
+ ],
100
+ outputs=gr.outputs.File(label="Download WAV File"),
101
+ title="Text-to-Speech App Vertical Solution",
102
+ timeout=300,
103
+ )
104
+
105
+ # Launch the Gradio app with sharing enabled
106
+ iface.launch(share=True, debug=True, enable_queue=True)