hayas commited on
Commit
b74ac65
·
1 Parent(s): 6fd487f
.pre-commit-config.yaml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: check-executables-have-shebangs
6
+ - id: check-json
7
+ - id: check-merge-conflict
8
+ - id: check-shebang-scripts-are-executable
9
+ - id: check-toml
10
+ - id: check-yaml
11
+ - id: end-of-file-fixer
12
+ - id: mixed-line-ending
13
+ args: ["--fix=lf"]
14
+ - id: requirements-txt-fixer
15
+ - id: trailing-whitespace
16
+ - repo: https://github.com/astral-sh/ruff-pre-commit
17
+ rev: v0.9.6
18
+ hooks:
19
+ - id: ruff
20
+ args: ["--fix"]
21
+ - id: ruff-format
22
+ - repo: https://github.com/pre-commit/mirrors-mypy
23
+ rev: v1.15.0
24
+ hooks:
25
+ - id: mypy
26
+ args: ["--ignore-missing-imports"]
27
+ additional_dependencies:
28
+ [
29
+ "types-python-slugify",
30
+ "types-pytz",
31
+ "types-PyYAML",
32
+ "types-requests",
33
+ ]
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.10
.vscode/extensions.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "recommendations": [
3
+ "ms-python.python",
4
+ "charliermarsh.ruff",
5
+ "streetsidesoftware.code-spell-checker",
6
+ "tamasfe.even-better-toml"
7
+ ]
8
+ }
.vscode/settings.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "files.insertFinalNewline": false,
4
+ "[python]": {
5
+ "editor.defaultFormatter": "charliermarsh.ruff",
6
+ "editor.formatOnType": true,
7
+ "editor.codeActionsOnSave": {
8
+ "source.fixAll.ruff": "explicit",
9
+ "source.organizeImports": "explicit"
10
+ }
11
+ },
12
+ "[jupyter]": {
13
+ "files.insertFinalNewline": false
14
+ },
15
+ "notebook.output.scrolling": true,
16
+ "notebook.formatOnSave.enabled": true
17
+ }
app.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+
3
+ import gradio as gr
4
+ import numpy as np
5
+ import spaces
6
+ from kokoro import KPipeline
7
+
8
+ pipeline = KPipeline(lang_code="j")
9
+
10
+ VOICES = [
11
+ "jf_alpha",
12
+ "jf_gongitsune",
13
+ "jf_nezumi",
14
+ "jf_tebukuro",
15
+ "jm_kumo",
16
+ ]
17
+
18
+
19
+ @spaces.GPU(duration=20)
20
+ def run(text: str, voice: str, speed: float) -> tuple[tuple[int, np.ndarray], str]:
21
+ generator = pipeline(
22
+ text,
23
+ voice=voice,
24
+ speed=speed,
25
+ split_pattern=r"\n+",
26
+ )
27
+ _, ps, audio = next(generator)
28
+ return (24000, audio.numpy()), ps
29
+
30
+
31
+ with gr.Blocks(css_paths="style.css") as demo:
32
+ gr.Markdown("# Kokoro (ja)")
33
+ with gr.Row():
34
+ with gr.Column():
35
+ input_text = gr.Textbox(label="Input Text")
36
+ voice = gr.Dropdown(label="Voice", choices=VOICES, value=VOICES[0])
37
+ speed = gr.Slider(label="Speed", minimum=0.5, maximum=2.0, step=0.1, value=1.0)
38
+ run_button = gr.Button()
39
+ with gr.Column():
40
+ output_audio = gr.Audio(label="Output Audio", autoplay=True)
41
+ output_tokens = gr.Textbox(label="Output Tokens")
42
+ gr.Examples(
43
+ examples=[
44
+ "どうもこんにちは。今日はいい天気ですね。",
45
+ "隣の竹垣に竹立てかけたのは隣の竹垣に竹立てかけたかったからと骨粗鬆症の東京特許許可局局長がマサチューセッツ州の美術室で魔術師が呪術師と手術中に供述。",
46
+ "李も桃も桃のうち",
47
+ "隣の客はよく柿食う客だ",
48
+ "裏庭には二羽、庭には二羽、鶏がいる。",
49
+ "貴社の記者が汽車で帰社した。橋の端にある箸。石でできた医師。お食事券にまつわる汚職事件。",
50
+ ],
51
+ inputs=input_text,
52
+ )
53
+
54
+ run_button.click(
55
+ fn=run,
56
+ inputs=[input_text, voice, speed],
57
+ outputs=[output_audio, output_tokens],
58
+ )
59
+
60
+ if __name__ == "__main__":
61
+ demo.launch()
pyproject.toml ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "kokoro-ja"
3
+ version = "0.1.0"
4
+ description = ""
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ dependencies = [
8
+ "gradio>=5.16.0",
9
+ "hf-transfer>=0.1.9",
10
+ "kokoro>=0.7.16",
11
+ "misaki[ja]>=0.7.17",
12
+ "spaces>=0.32.0",
13
+ "torch==2.4.0",
14
+ ]
15
+
16
+ [tool.ruff]
17
+ line-length = 119
18
+
19
+ [tool.ruff.lint]
20
+ select = ["ALL"]
21
+ ignore = [
22
+ "COM812", # missing-trailing-comma
23
+ "D203", # one-blank-line-before-class
24
+ "D213", # multi-line-summary-second-line
25
+ "E501", # line-too-long
26
+ "SIM117", # multiple-with-statements
27
+ ]
28
+ extend-ignore = [
29
+ "D100", # undocumented-public-module
30
+ "D101", # undocumented-public-class
31
+ "D102", # undocumented-public-method
32
+ "D103", # undocumented-public-function
33
+ "D104", # undocumented-public-package
34
+ "D105", # undocumented-magic-method
35
+ "D107", # undocumented-public-init
36
+ "EM101", # raw-string-in-exception
37
+ "FBT001", # boolean-type-hint-positional-argument
38
+ "FBT002", # boolean-default-value-positional-argument
39
+ "PD901", # pandas-df-variable-name
40
+ "PGH003", # blanket-type-ignore
41
+ "PLR0913", # too-many-arguments
42
+ "PLR0915", # too-many-statements
43
+ "TRY003", # raise-vanilla-args
44
+ ]
45
+ unfixable = [
46
+ "F401", # unused-import
47
+ ]
48
+
49
+ [tool.ruff.lint.pydocstyle]
50
+ convention = "google"
51
+
52
+ [tool.ruff.lint.per-file-ignores]
53
+ "*.ipynb" = ["T201"]
54
+
55
+ [tool.ruff.format]
56
+ docstring-code-format = true
requirements.txt ADDED
@@ -0,0 +1,416 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv pip compile pyproject.toml -o requirements.txt
3
+ aiofiles==23.2.1
4
+ # via gradio
5
+ annotated-types==0.7.0
6
+ # via pydantic
7
+ anyio==4.8.0
8
+ # via
9
+ # gradio
10
+ # httpx
11
+ # starlette
12
+ attrs==25.1.0
13
+ # via
14
+ # clldutils
15
+ # csvw
16
+ # jsonschema
17
+ # phonemizer-fork
18
+ # referencing
19
+ babel==2.17.0
20
+ # via csvw
21
+ blis==1.2.0
22
+ # via thinc
23
+ catalogue==2.0.10
24
+ # via
25
+ # spacy
26
+ # srsly
27
+ # thinc
28
+ certifi==2025.1.31
29
+ # via
30
+ # httpcore
31
+ # httpx
32
+ # requests
33
+ charset-normalizer==3.4.1
34
+ # via requests
35
+ click==8.1.8
36
+ # via
37
+ # typer
38
+ # uvicorn
39
+ clldutils==3.21.0
40
+ # via segments
41
+ cloudpathlib==0.20.0
42
+ # via weasel
43
+ colorama==0.4.6
44
+ # via csvw
45
+ colorlog==6.9.0
46
+ # via clldutils
47
+ confection==0.1.5
48
+ # via
49
+ # thinc
50
+ # weasel
51
+ csvw==3.5.1
52
+ # via segments
53
+ curated-tokenizers==0.0.9
54
+ # via spacy-curated-transformers
55
+ curated-transformers==0.1.1
56
+ # via spacy-curated-transformers
57
+ cymem==2.0.11
58
+ # via
59
+ # preshed
60
+ # spacy
61
+ # thinc
62
+ dlinfo==2.0.0
63
+ # via phonemizer-fork
64
+ docopt==0.6.2
65
+ # via num2words
66
+ espeakng-loader==0.2.4
67
+ # via misaki
68
+ exceptiongroup==1.2.2
69
+ # via anyio
70
+ fastapi==0.115.8
71
+ # via gradio
72
+ ffmpy==0.5.0
73
+ # via gradio
74
+ filelock==3.17.0
75
+ # via
76
+ # huggingface-hub
77
+ # torch
78
+ # transformers
79
+ # triton
80
+ fsspec==2025.2.0
81
+ # via
82
+ # gradio-client
83
+ # huggingface-hub
84
+ # torch
85
+ fugashi==1.4.0
86
+ # via misaki
87
+ gradio==5.16.0
88
+ # via
89
+ # kokoro-ja (pyproject.toml)
90
+ # spaces
91
+ gradio-client==1.7.0
92
+ # via gradio
93
+ h11==0.14.0
94
+ # via
95
+ # httpcore
96
+ # uvicorn
97
+ hf-transfer==0.1.9
98
+ # via kokoro-ja (pyproject.toml)
99
+ httpcore==1.0.7
100
+ # via httpx
101
+ httpx==0.28.1
102
+ # via
103
+ # gradio
104
+ # gradio-client
105
+ # safehttpx
106
+ # spaces
107
+ huggingface-hub==0.28.1
108
+ # via
109
+ # gradio
110
+ # gradio-client
111
+ # kokoro
112
+ # tokenizers
113
+ # transformers
114
+ idna==3.10
115
+ # via
116
+ # anyio
117
+ # httpx
118
+ # requests
119
+ isodate==0.7.2
120
+ # via
121
+ # csvw
122
+ # rdflib
123
+ jaconv==0.4.0
124
+ # via misaki
125
+ jinja2==3.1.5
126
+ # via
127
+ # gradio
128
+ # spacy
129
+ # torch
130
+ joblib==1.4.2
131
+ # via phonemizer-fork
132
+ jsonschema==4.23.0
133
+ # via csvw
134
+ jsonschema-specifications==2024.10.1
135
+ # via jsonschema
136
+ kokoro==0.7.16
137
+ # via kokoro-ja (pyproject.toml)
138
+ langcodes==3.5.0
139
+ # via spacy
140
+ language-data==1.3.0
141
+ # via langcodes
142
+ language-tags==1.2.0
143
+ # via csvw
144
+ loguru==0.7.3
145
+ # via kokoro
146
+ lxml==5.3.1
147
+ # via clldutils
148
+ marisa-trie==1.2.1
149
+ # via language-data
150
+ markdown==3.7
151
+ # via clldutils
152
+ markdown-it-py==3.0.0
153
+ # via rich
154
+ markupsafe==2.1.5
155
+ # via
156
+ # clldutils
157
+ # gradio
158
+ # jinja2
159
+ mdurl==0.1.2
160
+ # via markdown-it-py
161
+ misaki==0.7.17
162
+ # via
163
+ # kokoro-ja (pyproject.toml)
164
+ # kokoro
165
+ mojimoji==0.0.13
166
+ # via misaki
167
+ mpmath==1.3.0
168
+ # via sympy
169
+ murmurhash==1.0.12
170
+ # via
171
+ # preshed
172
+ # spacy
173
+ # thinc
174
+ networkx==3.4.2
175
+ # via torch
176
+ num2words==0.5.14
177
+ # via misaki
178
+ numpy==1.26.4
179
+ # via
180
+ # blis
181
+ # gradio
182
+ # kokoro
183
+ # pandas
184
+ # scipy
185
+ # spacy
186
+ # thinc
187
+ # transformers
188
+ nvidia-cublas-cu12==12.1.3.1
189
+ # via
190
+ # nvidia-cudnn-cu12
191
+ # nvidia-cusolver-cu12
192
+ # torch
193
+ nvidia-cuda-cupti-cu12==12.1.105
194
+ # via torch
195
+ nvidia-cuda-nvrtc-cu12==12.1.105
196
+ # via torch
197
+ nvidia-cuda-runtime-cu12==12.1.105
198
+ # via torch
199
+ nvidia-cudnn-cu12==9.1.0.70
200
+ # via torch
201
+ nvidia-cufft-cu12==11.0.2.54
202
+ # via torch
203
+ nvidia-curand-cu12==10.3.2.106
204
+ # via torch
205
+ nvidia-cusolver-cu12==11.4.5.107
206
+ # via torch
207
+ nvidia-cusparse-cu12==12.1.0.106
208
+ # via
209
+ # nvidia-cusolver-cu12
210
+ # torch
211
+ nvidia-nccl-cu12==2.20.5
212
+ # via torch
213
+ nvidia-nvjitlink-cu12==12.8.61
214
+ # via
215
+ # nvidia-cusolver-cu12
216
+ # nvidia-cusparse-cu12
217
+ nvidia-nvtx-cu12==12.1.105
218
+ # via torch
219
+ orjson==3.10.15
220
+ # via gradio
221
+ packaging==24.2
222
+ # via
223
+ # gradio
224
+ # gradio-client
225
+ # huggingface-hub
226
+ # spaces
227
+ # spacy
228
+ # thinc
229
+ # transformers
230
+ # weasel
231
+ pandas==2.2.3
232
+ # via gradio
233
+ phonemizer-fork==3.3.2
234
+ # via misaki
235
+ pillow==11.1.0
236
+ # via gradio
237
+ preshed==3.0.9
238
+ # via
239
+ # spacy
240
+ # thinc
241
+ psutil==5.9.8
242
+ # via spaces
243
+ pydantic==2.10.6
244
+ # via
245
+ # confection
246
+ # fastapi
247
+ # gradio
248
+ # spaces
249
+ # spacy
250
+ # thinc
251
+ # weasel
252
+ pydantic-core==2.27.2
253
+ # via pydantic
254
+ pydub==0.25.1
255
+ # via gradio
256
+ pygments==2.19.1
257
+ # via rich
258
+ pylatexenc==2.10
259
+ # via clldutils
260
+ pyparsing==3.2.1
261
+ # via rdflib
262
+ python-dateutil==2.9.0.post0
263
+ # via
264
+ # clldutils
265
+ # csvw
266
+ # pandas
267
+ python-multipart==0.0.20
268
+ # via gradio
269
+ pytz==2025.1
270
+ # via pandas
271
+ pyyaml==6.0.2
272
+ # via
273
+ # gradio
274
+ # huggingface-hub
275
+ # transformers
276
+ rdflib==7.1.3
277
+ # via csvw
278
+ referencing==0.36.2
279
+ # via
280
+ # jsonschema
281
+ # jsonschema-specifications
282
+ regex==2024.11.6
283
+ # via
284
+ # curated-tokenizers
285
+ # misaki
286
+ # segments
287
+ # transformers
288
+ requests==2.32.3
289
+ # via
290
+ # csvw
291
+ # huggingface-hub
292
+ # spaces
293
+ # spacy
294
+ # transformers
295
+ # weasel
296
+ rfc3986==1.5.0
297
+ # via csvw
298
+ rich==13.9.4
299
+ # via typer
300
+ rpds-py==0.22.3
301
+ # via
302
+ # jsonschema
303
+ # referencing
304
+ ruff==0.9.6
305
+ # via gradio
306
+ safehttpx==0.1.6
307
+ # via gradio
308
+ safetensors==0.5.2
309
+ # via transformers
310
+ scipy==1.15.2
311
+ # via kokoro
312
+ segments==2.2.1
313
+ # via phonemizer-fork
314
+ semantic-version==2.10.0
315
+ # via gradio
316
+ setuptools==75.8.0
317
+ # via
318
+ # marisa-trie
319
+ # spacy
320
+ # thinc
321
+ shellingham==1.5.4
322
+ # via typer
323
+ six==1.17.0
324
+ # via python-dateutil
325
+ smart-open==7.1.0
326
+ # via weasel
327
+ sniffio==1.3.1
328
+ # via anyio
329
+ spaces==0.32.0
330
+ # via kokoro-ja (pyproject.toml)
331
+ spacy==3.8.4
332
+ # via misaki
333
+ spacy-curated-transformers==0.3.0
334
+ # via misaki
335
+ spacy-legacy==3.0.12
336
+ # via spacy
337
+ spacy-loggers==1.0.5
338
+ # via spacy
339
+ srsly==2.5.1
340
+ # via
341
+ # confection
342
+ # spacy
343
+ # thinc
344
+ # weasel
345
+ starlette==0.45.3
346
+ # via
347
+ # fastapi
348
+ # gradio
349
+ sympy==1.13.3
350
+ # via torch
351
+ tabulate==0.9.0
352
+ # via clldutils
353
+ thinc==8.3.4
354
+ # via spacy
355
+ tokenizers==0.21.0
356
+ # via transformers
357
+ tomlkit==0.13.2
358
+ # via gradio
359
+ torch==2.4.0
360
+ # via
361
+ # kokoro-ja (pyproject.toml)
362
+ # curated-transformers
363
+ # kokoro
364
+ # spacy-curated-transformers
365
+ tqdm==4.67.1
366
+ # via
367
+ # huggingface-hub
368
+ # spacy
369
+ # transformers
370
+ transformers==4.48.3
371
+ # via kokoro
372
+ triton==3.0.0
373
+ # via torch
374
+ typer==0.15.1
375
+ # via
376
+ # gradio
377
+ # spacy
378
+ # weasel
379
+ typing-extensions==4.12.2
380
+ # via
381
+ # anyio
382
+ # cloudpathlib
383
+ # fastapi
384
+ # gradio
385
+ # gradio-client
386
+ # huggingface-hub
387
+ # phonemizer-fork
388
+ # pydantic
389
+ # pydantic-core
390
+ # referencing
391
+ # rich
392
+ # spaces
393
+ # torch
394
+ # typer
395
+ # uvicorn
396
+ tzdata==2025.1
397
+ # via pandas
398
+ unidic-lite==1.0.8
399
+ # via misaki
400
+ uritemplate==4.1.1
401
+ # via csvw
402
+ urllib3==2.3.0
403
+ # via requests
404
+ uvicorn==0.34.0
405
+ # via gradio
406
+ wasabi==1.1.3
407
+ # via
408
+ # spacy
409
+ # thinc
410
+ # weasel
411
+ weasel==0.4.1
412
+ # via spacy
413
+ websockets==14.2
414
+ # via gradio-client
415
+ wrapt==1.17.2
416
+ # via smart-open
style.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ h1 {
2
+ text-align: center;
3
+ display: block;
4
+ }
5
+
6
+ #duplicate-button {
7
+ margin: auto;
8
+ color: #fff;
9
+ background: #1565c0;
10
+ border-radius: 100vh;
11
+ }
uv.lock ADDED
The diff for this file is too large to render. See raw diff