xinference 0.14.4.post1__py3-none-any.whl → 0.15.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of xinference might be problematic. Click here for more details.
- xinference/_compat.py +51 -0
- xinference/_version.py +3 -3
- xinference/api/restful_api.py +5 -39
- xinference/client/restful/restful_client.py +3 -24
- xinference/conftest.py +1 -1
- xinference/constants.py +5 -0
- xinference/core/cache_tracker.py +1 -1
- xinference/core/chat_interface.py +8 -14
- xinference/core/event.py +1 -1
- xinference/core/model.py +82 -31
- xinference/core/scheduler.py +37 -37
- xinference/core/status_guard.py +1 -1
- xinference/core/supervisor.py +11 -10
- xinference/core/utils.py +80 -22
- xinference/core/worker.py +17 -16
- xinference/deploy/cmdline.py +8 -16
- xinference/deploy/local.py +1 -1
- xinference/deploy/supervisor.py +1 -1
- xinference/deploy/utils.py +1 -1
- xinference/deploy/worker.py +1 -1
- xinference/model/audio/cosyvoice.py +86 -41
- xinference/model/embedding/core.py +52 -31
- xinference/model/image/stable_diffusion/core.py +18 -1
- xinference/model/llm/__init__.py +21 -11
- xinference/model/llm/llama_cpp/core.py +16 -33
- xinference/model/llm/llm_family.json +619 -1297
- xinference/model/llm/llm_family.py +31 -52
- xinference/model/llm/llm_family_csghub.json +18 -35
- xinference/model/llm/llm_family_modelscope.json +573 -1119
- xinference/model/llm/lmdeploy/core.py +56 -88
- xinference/model/llm/mlx/core.py +46 -69
- xinference/model/llm/sglang/core.py +33 -18
- xinference/model/llm/transformers/chatglm.py +167 -305
- xinference/model/llm/transformers/cogvlm2.py +36 -63
- xinference/model/llm/transformers/cogvlm2_video.py +33 -223
- xinference/model/llm/transformers/core.py +49 -50
- xinference/model/llm/transformers/deepseek_vl.py +53 -96
- xinference/model/llm/transformers/glm4v.py +55 -111
- xinference/model/llm/transformers/intern_vl.py +39 -70
- xinference/model/llm/transformers/internlm2.py +32 -54
- xinference/model/llm/transformers/minicpmv25.py +22 -55
- xinference/model/llm/transformers/minicpmv26.py +158 -68
- xinference/model/llm/transformers/omnilmm.py +5 -28
- xinference/model/llm/transformers/qwen2_vl.py +208 -0
- xinference/model/llm/transformers/qwen_vl.py +34 -86
- xinference/model/llm/transformers/utils.py +32 -38
- xinference/model/llm/transformers/yi_vl.py +32 -72
- xinference/model/llm/utils.py +195 -489
- xinference/model/llm/vllm/core.py +153 -100
- xinference/model/rerank/core.py +41 -8
- xinference/model/rerank/model_spec.json +7 -0
- xinference/model/rerank/model_spec_modelscope.json +7 -1
- xinference/model/utils.py +1 -31
- xinference/thirdparty/cosyvoice/bin/export_jit.py +64 -0
- xinference/thirdparty/cosyvoice/bin/export_trt.py +8 -0
- xinference/thirdparty/cosyvoice/bin/inference.py +5 -2
- xinference/thirdparty/cosyvoice/cli/cosyvoice.py +38 -22
- xinference/thirdparty/cosyvoice/cli/model.py +139 -26
- xinference/thirdparty/cosyvoice/flow/flow.py +15 -9
- xinference/thirdparty/cosyvoice/flow/length_regulator.py +20 -1
- xinference/thirdparty/cosyvoice/hifigan/generator.py +8 -4
- xinference/thirdparty/cosyvoice/llm/llm.py +14 -13
- xinference/thirdparty/cosyvoice/transformer/attention.py +7 -3
- xinference/thirdparty/cosyvoice/transformer/decoder.py +1 -1
- xinference/thirdparty/cosyvoice/transformer/embedding.py +4 -3
- xinference/thirdparty/cosyvoice/transformer/encoder.py +4 -2
- xinference/thirdparty/cosyvoice/utils/common.py +36 -0
- xinference/thirdparty/cosyvoice/utils/file_utils.py +16 -0
- xinference/thirdparty/deepseek_vl/serve/assets/Kelpy-Codos.js +100 -0
- xinference/thirdparty/deepseek_vl/serve/assets/avatar.png +0 -0
- xinference/thirdparty/deepseek_vl/serve/assets/custom.css +355 -0
- xinference/thirdparty/deepseek_vl/serve/assets/custom.js +22 -0
- xinference/thirdparty/deepseek_vl/serve/assets/favicon.ico +0 -0
- xinference/thirdparty/deepseek_vl/serve/examples/app.png +0 -0
- xinference/thirdparty/deepseek_vl/serve/examples/chart.png +0 -0
- xinference/thirdparty/deepseek_vl/serve/examples/mirror.png +0 -0
- xinference/thirdparty/deepseek_vl/serve/examples/pipeline.png +0 -0
- xinference/thirdparty/deepseek_vl/serve/examples/puzzle.png +0 -0
- xinference/thirdparty/deepseek_vl/serve/examples/rap.jpeg +0 -0
- xinference/thirdparty/fish_speech/fish_speech/configs/base.yaml +87 -0
- xinference/thirdparty/fish_speech/fish_speech/configs/firefly_gan_vq.yaml +34 -0
- xinference/thirdparty/fish_speech/fish_speech/configs/lora/r_8_alpha_16.yaml +4 -0
- xinference/thirdparty/fish_speech/fish_speech/configs/text2semantic_finetune.yaml +83 -0
- xinference/thirdparty/fish_speech/fish_speech/datasets/protos/text-data.proto +24 -0
- xinference/thirdparty/fish_speech/fish_speech/i18n/README.md +27 -0
- xinference/thirdparty/fish_speech/fish_speech/text/chn_text_norm/.gitignore +114 -0
- xinference/thirdparty/fish_speech/fish_speech/text/chn_text_norm/README.md +36 -0
- xinference/thirdparty/fish_speech/fish_speech/webui/css/style.css +161 -0
- xinference/thirdparty/fish_speech/fish_speech/webui/html/footer.html +11 -0
- xinference/thirdparty/fish_speech/fish_speech/webui/js/animate.js +69 -0
- xinference/thirdparty/fish_speech/tools/sensevoice/README.md +59 -0
- xinference/thirdparty/matcha/VERSION +1 -0
- xinference/thirdparty/matcha/hifigan/LICENSE +21 -0
- xinference/thirdparty/matcha/hifigan/README.md +101 -0
- xinference/thirdparty/omnilmm/LICENSE +201 -0
- xinference/thirdparty/whisper/__init__.py +156 -0
- xinference/thirdparty/whisper/__main__.py +3 -0
- xinference/thirdparty/whisper/assets/gpt2.tiktoken +50256 -0
- xinference/thirdparty/whisper/assets/mel_filters.npz +0 -0
- xinference/thirdparty/whisper/assets/multilingual.tiktoken +50257 -0
- xinference/thirdparty/whisper/audio.py +157 -0
- xinference/thirdparty/whisper/decoding.py +826 -0
- xinference/thirdparty/whisper/model.py +314 -0
- xinference/thirdparty/whisper/normalizers/__init__.py +2 -0
- xinference/thirdparty/whisper/normalizers/basic.py +76 -0
- xinference/thirdparty/whisper/normalizers/english.json +1741 -0
- xinference/thirdparty/whisper/normalizers/english.py +550 -0
- xinference/thirdparty/whisper/timing.py +386 -0
- xinference/thirdparty/whisper/tokenizer.py +395 -0
- xinference/thirdparty/whisper/transcribe.py +605 -0
- xinference/thirdparty/whisper/triton_ops.py +109 -0
- xinference/thirdparty/whisper/utils.py +316 -0
- xinference/thirdparty/whisper/version.py +1 -0
- xinference/types.py +7 -49
- xinference/web/ui/build/asset-manifest.json +6 -6
- xinference/web/ui/build/index.html +1 -1
- xinference/web/ui/build/static/css/{main.4bafd904.css → main.632e9148.css} +2 -2
- xinference/web/ui/build/static/css/main.632e9148.css.map +1 -0
- xinference/web/ui/build/static/js/main.9cfafbd6.js +3 -0
- xinference/web/ui/build/static/js/{main.eb13fe95.js.LICENSE.txt → main.9cfafbd6.js.LICENSE.txt} +2 -0
- xinference/web/ui/build/static/js/main.9cfafbd6.js.map +1 -0
- xinference/web/ui/node_modules/.cache/babel-loader/01d6d198156bacbd436c51435edbd4b2cacd47a79db929105eba30f74b67d48d.json +1 -0
- xinference/web/ui/node_modules/.cache/babel-loader/10c69dc7a296779fcffedeff9393d832dfcb0013c36824adf623d3c518b801ff.json +1 -0
- xinference/web/ui/node_modules/.cache/babel-loader/59eb25f514afcc4fefd1b309d192b2455f1e0aec68a9de598ca4b2333fe2c774.json +1 -0
- xinference/web/ui/node_modules/.cache/babel-loader/68bede6d95bb5ef0b35bbb3ec5b8c937eaf6862c6cdbddb5ef222a7776aaf336.json +1 -0
- xinference/web/ui/node_modules/.cache/babel-loader/77d50223f3e734d4485cca538cb098a8c3a7a0a1a9f01f58cdda3af42fe1adf5.json +1 -0
- xinference/web/ui/node_modules/.cache/babel-loader/a56d5a642409a84988891089c98ca28ad0546432dfbae8aaa51bc5a280e1cdd2.json +1 -0
- xinference/web/ui/node_modules/.cache/babel-loader/d9ff696a3e3471f01b46c63d18af32e491eb5dc0e43cb30202c96871466df57f.json +1 -0
- xinference/web/ui/node_modules/.cache/babel-loader/f5039ddbeb815c51491a1989532006b96fc3ae49c6c60e3c097f875b4ae915ae.json +1 -0
- xinference/web/ui/node_modules/.package-lock.json +37 -0
- xinference/web/ui/node_modules/a-sync-waterfall/package.json +21 -0
- xinference/web/ui/node_modules/nunjucks/node_modules/commander/package.json +48 -0
- xinference/web/ui/node_modules/nunjucks/package.json +112 -0
- xinference/web/ui/package-lock.json +38 -0
- xinference/web/ui/package.json +1 -0
- {xinference-0.14.4.post1.dist-info → xinference-0.15.0.dist-info}/METADATA +8 -8
- {xinference-0.14.4.post1.dist-info → xinference-0.15.0.dist-info}/RECORD +141 -87
- xinference/model/llm/transformers/llama_2.py +0 -108
- xinference/web/ui/build/static/css/main.4bafd904.css.map +0 -1
- xinference/web/ui/build/static/js/main.eb13fe95.js +0 -3
- xinference/web/ui/build/static/js/main.eb13fe95.js.map +0 -1
- xinference/web/ui/node_modules/.cache/babel-loader/0b11a5339468c13b2d31ac085e7effe4303259b2071abd46a0a8eb8529233a5e.json +0 -1
- xinference/web/ui/node_modules/.cache/babel-loader/213b5913e164773c2b0567455377765715f5f07225fbac77ad8e1e9dc9648a47.json +0 -1
- xinference/web/ui/node_modules/.cache/babel-loader/5c26a23b5eacf5b752a08531577ae3840bb247745ef9a39583dc2d05ba93a82a.json +0 -1
- xinference/web/ui/node_modules/.cache/babel-loader/978b57d1a04a701bc3fcfebc511f5f274eed6ed7eade67f6fb76c27d5fd9ecc8.json +0 -1
- {xinference-0.14.4.post1.dist-info → xinference-0.15.0.dist-info}/LICENSE +0 -0
- {xinference-0.14.4.post1.dist-info → xinference-0.15.0.dist-info}/WHEEL +0 -0
- {xinference-0.14.4.post1.dist-info → xinference-0.15.0.dist-info}/entry_points.txt +0 -0
- {xinference-0.14.4.post1.dist-info → xinference-0.15.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Base configuration for training a model
|
|
2
|
+
paths:
|
|
3
|
+
run_dir: results/${project}
|
|
4
|
+
ckpt_dir: ${paths.run_dir}/checkpoints
|
|
5
|
+
|
|
6
|
+
hydra:
|
|
7
|
+
run:
|
|
8
|
+
dir: ${paths.run_dir}
|
|
9
|
+
|
|
10
|
+
# Lightning Trainer
|
|
11
|
+
trainer:
|
|
12
|
+
_target_: lightning.pytorch.trainer.Trainer
|
|
13
|
+
|
|
14
|
+
default_root_dir: ${paths.run_dir}
|
|
15
|
+
accelerator: gpu
|
|
16
|
+
num_nodes: 1
|
|
17
|
+
devices: auto
|
|
18
|
+
strategy:
|
|
19
|
+
_target_: lightning.pytorch.strategies.DDPStrategy
|
|
20
|
+
process_group_backend: nccl # This should be override when training on windows
|
|
21
|
+
|
|
22
|
+
precision: bf16-mixed
|
|
23
|
+
|
|
24
|
+
# disable validation by epoch end
|
|
25
|
+
check_val_every_n_epoch: null
|
|
26
|
+
val_check_interval: 5000
|
|
27
|
+
max_steps: 100_000
|
|
28
|
+
|
|
29
|
+
# Use torch.backends.cudnn.benchmark to speed up training
|
|
30
|
+
benchmark: true
|
|
31
|
+
|
|
32
|
+
# Callbacks
|
|
33
|
+
callbacks:
|
|
34
|
+
model_checkpoint:
|
|
35
|
+
_target_: lightning.pytorch.callbacks.ModelCheckpoint
|
|
36
|
+
dirpath: ${paths.ckpt_dir}
|
|
37
|
+
filename: "step_{step:09d}"
|
|
38
|
+
save_last: false # additionally always save an exact copy of the last checkpoint to a file last.ckpt
|
|
39
|
+
save_top_k: 5 # save 5 latest checkpoints
|
|
40
|
+
monitor: step # use step to monitor checkpoints
|
|
41
|
+
mode: max # save the latest checkpoint with the highest global_step
|
|
42
|
+
every_n_epochs: null # don't save checkpoints by epoch end
|
|
43
|
+
every_n_train_steps: 5000 # save checkpoints every 5000 steps
|
|
44
|
+
auto_insert_metric_name: false
|
|
45
|
+
|
|
46
|
+
model_summary:
|
|
47
|
+
_target_: lightning.pytorch.callbacks.ModelSummary
|
|
48
|
+
max_depth: 2 # the maximum depth of layer nesting that the summary will include
|
|
49
|
+
|
|
50
|
+
learning_rate_monitor:
|
|
51
|
+
_target_: lightning.pytorch.callbacks.LearningRateMonitor
|
|
52
|
+
logging_interval: step
|
|
53
|
+
log_momentum: false
|
|
54
|
+
|
|
55
|
+
grad_norm_monitor:
|
|
56
|
+
_target_: fish_speech.callbacks.GradNormMonitor
|
|
57
|
+
norm_type: 2
|
|
58
|
+
logging_interval: step
|
|
59
|
+
|
|
60
|
+
# Logger
|
|
61
|
+
logger:
|
|
62
|
+
tensorboard:
|
|
63
|
+
_target_: lightning.pytorch.loggers.tensorboard.TensorBoardLogger
|
|
64
|
+
save_dir: "${paths.run_dir}/tensorboard/"
|
|
65
|
+
name: null
|
|
66
|
+
log_graph: false
|
|
67
|
+
default_hp_metric: true
|
|
68
|
+
prefix: ""
|
|
69
|
+
|
|
70
|
+
# wandb:
|
|
71
|
+
# _target_: lightning.pytorch.loggers.wandb.WandbLogger
|
|
72
|
+
# # name: "" # name of the run (normally generated by wandb)
|
|
73
|
+
# save_dir: "${paths.run_dir}"
|
|
74
|
+
# offline: False
|
|
75
|
+
# id: null # pass correct id to resume experiment!
|
|
76
|
+
# anonymous: null # enable anonymous logging
|
|
77
|
+
# project: "fish-speech"
|
|
78
|
+
# log_model: False # upload lightning ckpts
|
|
79
|
+
# prefix: "" # a string to put at the beginning of metric keys
|
|
80
|
+
# # entity: "" # set to name of your wandb team
|
|
81
|
+
# group: ""
|
|
82
|
+
# tags: ["vq", "hq", "finetune"]
|
|
83
|
+
# job_type: ""
|
|
84
|
+
|
|
85
|
+
# Loop
|
|
86
|
+
train: true
|
|
87
|
+
test: false
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
_target_: fish_speech.models.vqgan.modules.firefly.FireflyArchitecture
|
|
2
|
+
spec_transform:
|
|
3
|
+
_target_: fish_speech.utils.spectrogram.LogMelSpectrogram
|
|
4
|
+
sample_rate: 44100
|
|
5
|
+
n_mels: 160
|
|
6
|
+
n_fft: 2048
|
|
7
|
+
hop_length: 512
|
|
8
|
+
win_length: 2048
|
|
9
|
+
backbone:
|
|
10
|
+
_target_: fish_speech.models.vqgan.modules.firefly.ConvNeXtEncoder
|
|
11
|
+
input_channels: 160
|
|
12
|
+
depths: [3, 3, 9, 3]
|
|
13
|
+
dims: [128, 256, 384, 512]
|
|
14
|
+
drop_path_rate: 0.2
|
|
15
|
+
kernel_size: 7
|
|
16
|
+
head:
|
|
17
|
+
_target_: fish_speech.models.vqgan.modules.firefly.HiFiGANGenerator
|
|
18
|
+
hop_length: 512
|
|
19
|
+
upsample_rates: [8, 8, 2, 2, 2] # aka. strides
|
|
20
|
+
upsample_kernel_sizes: [16, 16, 4, 4, 4]
|
|
21
|
+
resblock_kernel_sizes: [3, 7, 11]
|
|
22
|
+
resblock_dilation_sizes: [[1, 3, 5], [1, 3, 5], [1, 3, 5]]
|
|
23
|
+
num_mels: 512
|
|
24
|
+
upsample_initial_channel: 512
|
|
25
|
+
use_template: false
|
|
26
|
+
pre_conv_kernel_size: 13
|
|
27
|
+
post_conv_kernel_size: 13
|
|
28
|
+
quantizer:
|
|
29
|
+
_target_: fish_speech.models.vqgan.modules.fsq.DownsampleFiniteScalarQuantize
|
|
30
|
+
input_dim: 512
|
|
31
|
+
n_groups: 4
|
|
32
|
+
n_codebooks: 1
|
|
33
|
+
levels: [8, 5, 5, 5]
|
|
34
|
+
downsample_factor: [2]
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
defaults:
|
|
2
|
+
- base
|
|
3
|
+
- _self_
|
|
4
|
+
|
|
5
|
+
project: text2semantic_finetune_dual_ar
|
|
6
|
+
max_length: 4096
|
|
7
|
+
pretrained_ckpt_path: checkpoints/fish-speech-1.2-sft
|
|
8
|
+
|
|
9
|
+
# Lightning Trainer
|
|
10
|
+
trainer:
|
|
11
|
+
accumulate_grad_batches: 1
|
|
12
|
+
gradient_clip_val: 1.0
|
|
13
|
+
gradient_clip_algorithm: "norm"
|
|
14
|
+
max_steps: 1000
|
|
15
|
+
precision: bf16-true
|
|
16
|
+
limit_val_batches: 10
|
|
17
|
+
val_check_interval: 100
|
|
18
|
+
|
|
19
|
+
# Dataset Configuration
|
|
20
|
+
tokenizer:
|
|
21
|
+
_target_: transformers.AutoTokenizer.from_pretrained
|
|
22
|
+
pretrained_model_name_or_path: ${pretrained_ckpt_path}
|
|
23
|
+
|
|
24
|
+
# Dataset Configuration
|
|
25
|
+
train_dataset:
|
|
26
|
+
_target_: fish_speech.datasets.semantic.AutoTextSemanticInstructionDataset
|
|
27
|
+
proto_files:
|
|
28
|
+
- data/protos
|
|
29
|
+
tokenizer: ${tokenizer}
|
|
30
|
+
causal: true
|
|
31
|
+
max_length: ${max_length}
|
|
32
|
+
use_speaker: false
|
|
33
|
+
interactive_prob: 0.7
|
|
34
|
+
|
|
35
|
+
val_dataset:
|
|
36
|
+
_target_: fish_speech.datasets.semantic.AutoTextSemanticInstructionDataset
|
|
37
|
+
proto_files:
|
|
38
|
+
- data/protos
|
|
39
|
+
tokenizer: ${tokenizer}
|
|
40
|
+
causal: true
|
|
41
|
+
max_length: ${max_length}
|
|
42
|
+
use_speaker: false
|
|
43
|
+
interactive_prob: 0.7
|
|
44
|
+
|
|
45
|
+
data:
|
|
46
|
+
_target_: fish_speech.datasets.semantic.SemanticDataModule
|
|
47
|
+
train_dataset: ${train_dataset}
|
|
48
|
+
val_dataset: ${val_dataset}
|
|
49
|
+
num_workers: 4
|
|
50
|
+
batch_size: 8
|
|
51
|
+
tokenizer: ${tokenizer}
|
|
52
|
+
max_length: ${max_length}
|
|
53
|
+
|
|
54
|
+
# Model Configuration
|
|
55
|
+
model:
|
|
56
|
+
_target_: fish_speech.models.text2semantic.lit_module.TextToSemantic
|
|
57
|
+
model:
|
|
58
|
+
_target_: fish_speech.models.text2semantic.llama.BaseTransformer.from_pretrained
|
|
59
|
+
path: ${pretrained_ckpt_path}
|
|
60
|
+
load_weights: true
|
|
61
|
+
max_length: ${max_length}
|
|
62
|
+
lora_config: null
|
|
63
|
+
|
|
64
|
+
optimizer:
|
|
65
|
+
_target_: torch.optim.AdamW
|
|
66
|
+
_partial_: true
|
|
67
|
+
lr: 1e-4
|
|
68
|
+
weight_decay: 0
|
|
69
|
+
betas: [0.9, 0.95]
|
|
70
|
+
eps: 1e-5
|
|
71
|
+
|
|
72
|
+
lr_scheduler:
|
|
73
|
+
_target_: torch.optim.lr_scheduler.LambdaLR
|
|
74
|
+
_partial_: true
|
|
75
|
+
lr_lambda:
|
|
76
|
+
_target_: fish_speech.scheduler.get_constant_schedule_with_warmup_lr_lambda
|
|
77
|
+
_partial_: true
|
|
78
|
+
num_warmup_steps: 10
|
|
79
|
+
|
|
80
|
+
# Callbacks
|
|
81
|
+
callbacks:
|
|
82
|
+
model_checkpoint:
|
|
83
|
+
every_n_train_steps: ${trainer.val_check_interval}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package text_data;
|
|
4
|
+
|
|
5
|
+
message Semantics {
|
|
6
|
+
repeated uint32 values = 1;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
message Sentence {
|
|
10
|
+
repeated string texts = 1;
|
|
11
|
+
repeated Semantics semantics = 3;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
message TextData {
|
|
15
|
+
string source = 1;
|
|
16
|
+
string name = 2;
|
|
17
|
+
repeated Sentence sentences = 4;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
message SampledData {
|
|
21
|
+
string source = 1;
|
|
22
|
+
string name = 2;
|
|
23
|
+
repeated Sentence samples = 3;
|
|
24
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
## i18n Folder Attribution
|
|
2
|
+
|
|
3
|
+
The `i18n` folder within the `fish_speech` directory contains files initially sourced from the RVC project. In compliance with the MIT license under which these files were released, we acknowledge the original authors and sources below:
|
|
4
|
+
|
|
5
|
+
### fish_speech/i18n/core.py
|
|
6
|
+
|
|
7
|
+
**Related code from RVC:**
|
|
8
|
+
[https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/83d6a64e675d9bbd6e92ee450c5f807ed2bb54d8/i18n/i18n.py](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/83d6a64e675d9bbd6e92ee450c5f807ed2bb54d8/i18n/i18n.py)
|
|
9
|
+
|
|
10
|
+
**Initial commit:**
|
|
11
|
+
add localization(添加本地化) [RVC-Project/Retrieval-based-Voice-Conversion-WebUI#35](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/pull/35)
|
|
12
|
+
|
|
13
|
+
**Initial author:**
|
|
14
|
+
[@L4Ph](https://github.com/L4Ph)
|
|
15
|
+
|
|
16
|
+
### fish_speech/i18n/scan.py
|
|
17
|
+
|
|
18
|
+
**Related code from RVC:**
|
|
19
|
+
[https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/83d6a64e675d9bbd6e92ee450c5f807ed2bb54d8/i18n/scan_i18n.py](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/83d6a64e675d9bbd6e92ee450c5f807ed2bb54d8/i18n/scan_i18n.py)
|
|
20
|
+
|
|
21
|
+
**Initial commit:**
|
|
22
|
+
File for detecting i18n missing keys [RVC-Project/Retrieval-based-Voice-Conversion-WebUI#1058](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/pull/1058)
|
|
23
|
+
|
|
24
|
+
**Initial author:**
|
|
25
|
+
[@towzeur](https://github.com/towzeur)
|
|
26
|
+
|
|
27
|
+
We appreciate the contributions of the RVC project and its authors.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
MANIFEST
|
|
27
|
+
|
|
28
|
+
# PyInstaller
|
|
29
|
+
# Usually these files are written by a python script from a template
|
|
30
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
31
|
+
*.manifest
|
|
32
|
+
*.spec
|
|
33
|
+
|
|
34
|
+
# Installer logs
|
|
35
|
+
pip-log.txt
|
|
36
|
+
pip-delete-this-directory.txt
|
|
37
|
+
|
|
38
|
+
# Unit test / coverage reports
|
|
39
|
+
htmlcov/
|
|
40
|
+
.tox/
|
|
41
|
+
.coverage
|
|
42
|
+
.coverage.*
|
|
43
|
+
.cache
|
|
44
|
+
nosetests.xml
|
|
45
|
+
coverage.xml
|
|
46
|
+
*.cover
|
|
47
|
+
.hypothesis/
|
|
48
|
+
.pytest_cache/
|
|
49
|
+
|
|
50
|
+
# Translations
|
|
51
|
+
*.mo
|
|
52
|
+
*.pot
|
|
53
|
+
|
|
54
|
+
# Django stuff:
|
|
55
|
+
*.log
|
|
56
|
+
local_settings.py
|
|
57
|
+
db.sqlite3
|
|
58
|
+
|
|
59
|
+
# Flask stuff:
|
|
60
|
+
instance/
|
|
61
|
+
.webassets-cache
|
|
62
|
+
|
|
63
|
+
# Scrapy stuff:
|
|
64
|
+
.scrapy
|
|
65
|
+
|
|
66
|
+
# Sphinx documentation
|
|
67
|
+
docs/_build/
|
|
68
|
+
|
|
69
|
+
# PyBuilder
|
|
70
|
+
target/
|
|
71
|
+
|
|
72
|
+
# Jupyter Notebook
|
|
73
|
+
.ipynb_checkpoints
|
|
74
|
+
|
|
75
|
+
# pyenv
|
|
76
|
+
.python-version
|
|
77
|
+
|
|
78
|
+
# celery beat schedule file
|
|
79
|
+
celerybeat-schedule
|
|
80
|
+
|
|
81
|
+
# SageMath parsed files
|
|
82
|
+
*.sage.py
|
|
83
|
+
|
|
84
|
+
# Environments
|
|
85
|
+
.env
|
|
86
|
+
.venv
|
|
87
|
+
env/
|
|
88
|
+
venv/
|
|
89
|
+
ENV/
|
|
90
|
+
env.bak/
|
|
91
|
+
venv.bak/
|
|
92
|
+
|
|
93
|
+
# Spyder project settings
|
|
94
|
+
.spyderproject
|
|
95
|
+
.spyproject
|
|
96
|
+
|
|
97
|
+
# Rope project settings
|
|
98
|
+
.ropeproject
|
|
99
|
+
|
|
100
|
+
# mkdocs documentation
|
|
101
|
+
/site
|
|
102
|
+
|
|
103
|
+
# mypy
|
|
104
|
+
.mypy_cache/
|
|
105
|
+
|
|
106
|
+
# JetBrains PyCharm
|
|
107
|
+
.idea
|
|
108
|
+
|
|
109
|
+
# Customize
|
|
110
|
+
references
|
|
111
|
+
url.txt
|
|
112
|
+
|
|
113
|
+
# Git
|
|
114
|
+
.git
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# This account is no longer in use, see [Atomicoo](https://github.com/atomicoo) for my latest works.
|
|
2
|
+
|
|
3
|
+
# Chn Text Norm
|
|
4
|
+
|
|
5
|
+
this is a repository for chinese text normalization (no longer maintained).
|
|
6
|
+
|
|
7
|
+
## Quick Start ##
|
|
8
|
+
|
|
9
|
+
### Git Clone Repo ###
|
|
10
|
+
|
|
11
|
+
git clone this repo to the root directory of your project which need to use it.
|
|
12
|
+
|
|
13
|
+
cd /path/to/proj
|
|
14
|
+
git clone https://github.com/Joee1995/chn-text-norm.git
|
|
15
|
+
|
|
16
|
+
after that, your doc tree should be:
|
|
17
|
+
```
|
|
18
|
+
proj # root of your project
|
|
19
|
+
|--- chn_text_norm # this chn-text-norm tool
|
|
20
|
+
|--- text.py
|
|
21
|
+
|--- ...
|
|
22
|
+
|--- text_normalize.py # your text normalization code
|
|
23
|
+
|--- ...
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### How to Use ? ###
|
|
27
|
+
|
|
28
|
+
# text_normalize.py
|
|
29
|
+
from chn_text_norm.text import *
|
|
30
|
+
|
|
31
|
+
raw_text = 'your raw text'
|
|
32
|
+
text = Text(raw_text=raw_text).normalize()
|
|
33
|
+
|
|
34
|
+
### How to add quantums ###
|
|
35
|
+
|
|
36
|
+
打开test.py,然后你就知道怎么做了。
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--my-200: #80eeee;
|
|
3
|
+
--my-50: #ecfdf5;
|
|
4
|
+
--water-width: 300px;
|
|
5
|
+
--water-heigh: 300px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/* general styled components */
|
|
10
|
+
.tools {
|
|
11
|
+
align-items: center;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.gradio-button {
|
|
16
|
+
max-width: 2.2em;
|
|
17
|
+
min-width: 2.2em !important;
|
|
18
|
+
height: 2.4em;
|
|
19
|
+
align-self: end;
|
|
20
|
+
line-height: 1em;
|
|
21
|
+
border-radius: 0.5em;
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.gradio-button.secondary-down, .gradio-button.secondary-down:hover{
|
|
26
|
+
box-shadow: 1px 1px 1px rgba(0,0,0,0.25) inset, 0px 0px 3px rgba(0,0,0,0.15) inset;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* replace original footer with ours */
|
|
30
|
+
a{
|
|
31
|
+
font-weight: bold;
|
|
32
|
+
cursor: pointer;
|
|
33
|
+
color: #030C14 !important;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
footer {
|
|
37
|
+
display: none !important;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#footer{
|
|
41
|
+
text-align: center;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#footer div{
|
|
45
|
+
display: inline-block;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
#footer .versions{
|
|
49
|
+
font-size: 85%;
|
|
50
|
+
opacity: 0.85;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/*@keyframes moveBackground {*/
|
|
54
|
+
/* 0% {*/
|
|
55
|
+
/* background-position: 0 0;*/
|
|
56
|
+
/* }*/
|
|
57
|
+
/* 100% {*/
|
|
58
|
+
/* background-position: -100px 100px;*/
|
|
59
|
+
/* }*/
|
|
60
|
+
/*}*/
|
|
61
|
+
@keyframes moveJellyBackground {
|
|
62
|
+
0% {
|
|
63
|
+
background-position: 0% 50%;
|
|
64
|
+
}
|
|
65
|
+
50% {
|
|
66
|
+
background-position: 100% 50%;
|
|
67
|
+
}
|
|
68
|
+
100% {
|
|
69
|
+
background-position: 0% 50%;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.gradio-container {
|
|
74
|
+
position: absolute;
|
|
75
|
+
z-index: 10;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
.quan {
|
|
80
|
+
position: absolute;
|
|
81
|
+
bottom: 0;
|
|
82
|
+
width: var(--water-width);
|
|
83
|
+
height: var(--water-heigh);
|
|
84
|
+
border-radius: 0;
|
|
85
|
+
/*border: 3px solid rgb(246, 247, 248);*/
|
|
86
|
+
/*box-shadow: 0 0 0 3px rgb(41, 134, 196);*/
|
|
87
|
+
z-index: 0;
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.quan:last-child {
|
|
92
|
+
margin-right: 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.shui {
|
|
96
|
+
position: absolute;
|
|
97
|
+
top: 0;
|
|
98
|
+
left: 0;
|
|
99
|
+
width: 100%;
|
|
100
|
+
height: 100%;
|
|
101
|
+
background-color: rgb(23, 106, 201);
|
|
102
|
+
border-radius: 0;
|
|
103
|
+
overflow: hidden;
|
|
104
|
+
z-index: 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.shui::after {
|
|
108
|
+
|
|
109
|
+
content: '';
|
|
110
|
+
position: absolute;
|
|
111
|
+
top: 20%;
|
|
112
|
+
left: 50%;
|
|
113
|
+
width: 150%;
|
|
114
|
+
height: 150%;
|
|
115
|
+
border-radius: 40%;
|
|
116
|
+
background-image: radial-gradient(circle at 0% 50%, #dcfcf1, var(--my-50) 50%);
|
|
117
|
+
animation: shi 5s linear infinite;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@keyframes shi {
|
|
121
|
+
0% {
|
|
122
|
+
transform: translate(-50%, -65%) rotate(0deg);
|
|
123
|
+
}
|
|
124
|
+
100% {
|
|
125
|
+
transform: translate(-50%, -65%) rotate(360deg);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.shui::before {
|
|
130
|
+
content: '';
|
|
131
|
+
position: absolute;
|
|
132
|
+
top: 20%;
|
|
133
|
+
left: 50%;
|
|
134
|
+
width: 150%;
|
|
135
|
+
height: 150%;
|
|
136
|
+
border-radius: 42%;
|
|
137
|
+
background-color: rgb(240, 228, 228, 0.2);
|
|
138
|
+
animation: xu 7s linear infinite;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@keyframes xu {
|
|
142
|
+
0% {
|
|
143
|
+
transform: translate(-50%, -60%) rotate(0deg);
|
|
144
|
+
}
|
|
145
|
+
100% {
|
|
146
|
+
transform: translate(-50%, -60%) rotate(360deg);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
fieldset.data_src div.wrap label {
|
|
151
|
+
background: #f8bffee0 !important;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.scrollable-component {
|
|
155
|
+
max-height: 100px;
|
|
156
|
+
overflow-y: auto;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
#file_accordion {
|
|
160
|
+
max-height: 220px !important;
|
|
161
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<div style="color: rgba(25,255,205,0.7) !important;">
|
|
2
|
+
<a href="{api_docs}">API</a>
|
|
3
|
+
•
|
|
4
|
+
<a href="https://github.com/fishaudio/fish-speech">Github</a>
|
|
5
|
+
•
|
|
6
|
+
<a href="https://gradio.app">Gradio</a>
|
|
7
|
+
</div>
|
|
8
|
+
<br />
|
|
9
|
+
<div class="versions" style="color: rgba(25,255,205,0.7) !important;">
|
|
10
|
+
{versions}
|
|
11
|
+
</div>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
|
|
2
|
+
function createGradioAnimation() {
|
|
3
|
+
const params = new URLSearchParams(window.location.search);
|
|
4
|
+
if (!params.has('__theme')) {
|
|
5
|
+
params.set('__theme', 'light');
|
|
6
|
+
window.location.search = params.toString();
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
var gradioApp = document.querySelector('gradio-app');
|
|
10
|
+
if (gradioApp) {
|
|
11
|
+
|
|
12
|
+
document.documentElement.style.setProperty('--my-200', '#80eeee');
|
|
13
|
+
document.documentElement.style.setProperty('--my-50', '#ecfdf5');
|
|
14
|
+
|
|
15
|
+
// gradioApp.style.position = 'relative';
|
|
16
|
+
// gradioApp.style.backgroundSize = '200% 200%';
|
|
17
|
+
// gradioApp.style.animation = 'moveJellyBackground 10s ease infinite';
|
|
18
|
+
// gradioApp.style.backgroundImage = 'radial-gradient(circle at 0% 50%, var(--my-200), var(--my-50) 50%)';
|
|
19
|
+
// gradioApp.style.display = 'flex';
|
|
20
|
+
// gradioApp.style.justifyContent = 'flex-start';
|
|
21
|
+
// gradioApp.style.flexWrap = 'nowrap';
|
|
22
|
+
// gradioApp.style.overflowX = 'auto';
|
|
23
|
+
|
|
24
|
+
// for (let i = 0; i < 6; i++) {
|
|
25
|
+
// var quan = document.createElement('div');
|
|
26
|
+
// quan.className = 'quan';
|
|
27
|
+
// gradioApp.insertBefore(quan, gradioApp.firstChild);
|
|
28
|
+
// quan.id = 'quan' + i.toString();
|
|
29
|
+
// quan.style.left = 'calc(var(--water-width) * ' + i.toString() + ')';
|
|
30
|
+
// var quanContainer = document.querySelector('.quan');
|
|
31
|
+
// if (quanContainer) {
|
|
32
|
+
// var shui = document.createElement('div');
|
|
33
|
+
// shui.className = 'shui';
|
|
34
|
+
// quanContainer.insertBefore(shui, quanContainer.firstChild)
|
|
35
|
+
// }
|
|
36
|
+
// }
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var container = document.createElement('div');
|
|
40
|
+
container.id = 'gradio-animation';
|
|
41
|
+
container.style.fontSize = '2em';
|
|
42
|
+
container.style.fontFamily = 'Maiandra GD, ui-monospace, monospace';
|
|
43
|
+
container.style.fontWeight = 'bold';
|
|
44
|
+
container.style.textAlign = 'center';
|
|
45
|
+
container.style.marginBottom = '20px';
|
|
46
|
+
|
|
47
|
+
var text = 'Welcome to Fish-Speech!';
|
|
48
|
+
for (var i = 0; i < text.length; i++) {
|
|
49
|
+
(function(i){
|
|
50
|
+
setTimeout(function(){
|
|
51
|
+
var letter = document.createElement('span');
|
|
52
|
+
letter.style.opacity = '0';
|
|
53
|
+
letter.style.transition = 'opacity 0.5s';
|
|
54
|
+
letter.innerText = text[i];
|
|
55
|
+
|
|
56
|
+
container.appendChild(letter);
|
|
57
|
+
|
|
58
|
+
setTimeout(function() {
|
|
59
|
+
letter.style.opacity = '1';
|
|
60
|
+
}, 50);
|
|
61
|
+
}, i * 200);
|
|
62
|
+
})(i);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
var gradioContainer = document.querySelector('.gradio-container');
|
|
66
|
+
gradioContainer.insertBefore(container, gradioContainer.firstChild);
|
|
67
|
+
|
|
68
|
+
return 'Animation created';
|
|
69
|
+
}
|