|
|
|
|
|
import json |
|
import os |
|
import re |
|
from typing import Any, Dict |
|
|
|
import onnx |
|
|
|
|
|
def add_meta_data(filename: str, meta_data: Dict[str, Any]): |
|
"""Add meta data to an ONNX model. It is changed in-place. |
|
|
|
Args: |
|
filename: |
|
Filename of the ONNX model to be changed. |
|
meta_data: |
|
Key-value pairs. |
|
""" |
|
model = onnx.load(filename) |
|
for key, value in meta_data.items(): |
|
meta = model.metadata_props.add() |
|
meta.key = key |
|
meta.value = str(value) |
|
|
|
onnx.save(model, filename) |
|
|
|
|
|
def load_config(model): |
|
with open(f"{model}.json", "r") as file: |
|
config = json.load(file) |
|
return config |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
t = os.environ.get("TYPE", None) |
|
if not t: |
|
print("Please provide the environment variable TYPE") |
|
return |
|
|
|
|
|
name = os.environ.get("NAME", None) |
|
if not t: |
|
print("Please provide the environment variable NAME") |
|
return |
|
print("type", t) |
|
|
|
config = load_config(f"en_US-{name}-{t}.onnx") |
|
|
|
print("add model metadata") |
|
meta_data = { |
|
"model_type": "vits", |
|
"comment": "piper", |
|
"language": "English", |
|
"voice": config["espeak"]["voice"], |
|
"has_espeak": int("espeak" in config), |
|
"n_speakers": config["num_speakers"], |
|
"sample_rate": config["audio"]["sample_rate"], |
|
} |
|
print(meta_data) |
|
add_meta_data(f"en_US-{name}-{t}.onnx", meta_data) |
|
|
|
|
|
main() |
|
|