|
--- |
|
license: cc-by-4.0 |
|
datasets: |
|
- CSTR-Edinburgh/vctk |
|
language: |
|
- en |
|
--- |
|
[Spaces Demo](https://huggingface.co/spaces/Akjava/matcha-tts_vctk-onnx) |
|
|
|
Trained with Matcha-TTS(Not my work,I just converted to onnx) - [Github](https://github.com/shivammehta25/Matcha-TTS) | [Paper](https://arxiv.org/abs/2309.03199) |
|
|
|
How to Infer see [Github page](https://github.com/akjava/Matcha-TTS-Japanese/tree/main/examples) |
|
## License |
|
You have to follow the cc-by-4.0 vctk license. |
|
### Datasets License |
|
- VCTK Dataset license are cc-by-4.0 |
|
### Tools License |
|
|
|
These tools did not effect output license. |
|
|
|
- Matcha-TTS - MIT |
|
- ONNX Simplifier - Apache2.0 |
|
- onnxruntime - MIT |
|
### Converted model Owner(me) |
|
I release my output under MIT License.If you want your license ,convert it by yourself |
|
## Onnx File Type |
|
All models are simplify(If you need original,export by yourself) |
|
|
|
Vocoder:hifigan_univ_v1(some english speaker avoid robotic) |
|
|
|
- vctk_univ_simplify.onnx |
|
- vctk_univ_simplify_q8.onnx - Quantized Github page friendly small size ,but 3-5 times slow |
|
|
|
Vocoder:hifigan_T2_v1(Good for English) |
|
|
|
- vctk_t2_simplify.onnx |
|
- vctk_t2_simplify_q8.onnx - Quantized Github page friendly small size ,but 3-5 times slow |
|
## How to Convert |
|
### Export Model |
|
see Matcha-TTS [ONNX export](https://github.com/shivammehta25/Matcha-TTS) |
|
|
|
``` |
|
python -m matcha.onnx.export matcha_vctk.ckpt vctk_t2.onnx --vocoder-name "hifigan_T2_v1" --vocoder-checkpoint "generator_v1" |
|
``` |
|
|
|
### simplify model |
|
``` |
|
from onnxsim import simplify |
|
import onnx |
|
|
|
import argparse |
|
parser = argparse.ArgumentParser( |
|
description="create simplify onnx" |
|
) |
|
parser.add_argument( |
|
"--input","-i", |
|
type=str,required=True |
|
) |
|
parser.add_argument( |
|
"--output","-o", |
|
type=str |
|
) |
|
args = parser.parse_args() |
|
|
|
src_model_path = args.input |
|
if args.output == None: |
|
dst_model_path = src_model_path.replace(".onnx","_simplify.onnx") |
|
else: |
|
dst_model_path = args.output |
|
|
|
|
|
model = onnx.load(src_model_path) |
|
model_simp, check = simplify(model) |
|
|
|
onnx.save(model_simp, dst_model_path) |
|
``` |
|
### quantize model |
|
``` |
|
from onnxruntime.quantization import quantize_dynamic, QuantType |
|
import argparse |
|
parser = argparse.ArgumentParser( |
|
description="create quantized onnx" |
|
) |
|
parser.add_argument( |
|
"--input","-i", |
|
type=str,required=True |
|
) |
|
parser.add_argument( |
|
"--output","-o", |
|
type=str |
|
) |
|
args = parser.parse_args() |
|
|
|
src_model_path = args.input |
|
if args.output == None: |
|
dst_model_path = src_model_path.replace(".onnx","_q8.onnx") |
|
else: |
|
dst_model_path = args.output |
|
|
|
# only QUInt8 works well |
|
quantized_model = quantize_dynamic(src_model_path, dst_model_path, weight_type=QuantType.QUInt8) |
|
``` |