Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
# Imports
|
2 |
import gradio as gr
|
3 |
import spaces
|
|
|
4 |
|
5 |
from kokoro import KModel, KPipeline
|
6 |
|
@@ -10,6 +11,8 @@ if DEVICE == "auto":
|
|
10 |
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
|
11 |
print(f"[SYSTEM] | Using {DEVICE} type compute device.")
|
12 |
|
|
|
|
|
13 |
# Variables
|
14 |
CHAR_LIMIT = 2000
|
15 |
|
@@ -51,10 +54,12 @@ PIPELINES = {lang: KPipeline(lang_code=lang, model=False) for lang in "ab"}
|
|
51 |
PIPELINES["a"].g2p.lexicon.golds["kokoro"] = "kˈOkəɹO"
|
52 |
PIPELINES["b"].g2p.lexicon.golds["kokoro"] = "kˈQkəɹQ"
|
53 |
|
|
|
54 |
for v in CHOICES.values():
|
55 |
-
PIPELINES[v[0]].load_voice(v)
|
56 |
-
|
57 |
-
|
|
|
58 |
|
59 |
css = '''
|
60 |
.gradio-container{max-width: 560px !important}
|
@@ -66,10 +71,10 @@ footer {
|
|
66 |
|
67 |
# Functions
|
68 |
def generate(text=DEFAULT_INPUT, voice=DEFAULT_VOICE, speed=1):
|
69 |
-
|
70 |
pipeline = PIPELINES[voice[0]]
|
71 |
-
pack =
|
72 |
-
|
73 |
for _, ps, _ in pipeline(text, voice, speed):
|
74 |
ref_s = pack[len(ps) - 1]
|
75 |
audio = MODEL(ps, ref_s, speed)
|
|
|
1 |
# Imports
|
2 |
import gradio as gr
|
3 |
import spaces
|
4 |
+
import torch
|
5 |
|
6 |
from kokoro import KModel, KPipeline
|
7 |
|
|
|
11 |
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
|
12 |
print(f"[SYSTEM] | Using {DEVICE} type compute device.")
|
13 |
|
14 |
+
torch.set_num_threads(4)
|
15 |
+
|
16 |
# Variables
|
17 |
CHAR_LIMIT = 2000
|
18 |
|
|
|
54 |
PIPELINES["a"].g2p.lexicon.golds["kokoro"] = "kˈOkəɹO"
|
55 |
PIPELINES["b"].g2p.lexicon.golds["kokoro"] = "kˈQkəɹQ"
|
56 |
|
57 |
+
VOICE_PACKS = {}
|
58 |
for v in CHOICES.values():
|
59 |
+
VOICE_PACKS[v] = PIPELINES[v[0]].load_voice(v)
|
60 |
+
|
61 |
+
model_instance = KModel().to(DEVICE).eval()
|
62 |
+
MODEL = torch.jit.script(model_instance)
|
63 |
|
64 |
css = '''
|
65 |
.gradio-container{max-width: 560px !important}
|
|
|
71 |
|
72 |
# Functions
|
73 |
def generate(text=DEFAULT_INPUT, voice=DEFAULT_VOICE, speed=1):
|
74 |
+
text = text.strip()[:CHAR_LIMIT] + "."
|
75 |
pipeline = PIPELINES[voice[0]]
|
76 |
+
pack = VOICE_PACKS[voice]
|
77 |
+
|
78 |
for _, ps, _ in pipeline(text, voice, speed):
|
79 |
ref_s = pack[len(ps) - 1]
|
80 |
audio = MODEL(ps, ref_s, speed)
|