E2-F5-TTS / zh /F5-TTS-RKNN2 /convert_opset.py
niobures's picture
E2-F5 TTS (zh_onnx_rknn2)
8cc6c2f verified
import onnx
from onnx import version_converter, helper
def convert_opset(input_model_path: str, output_model_path: str, target_opset: int):
"""
使用 onnx.version_converter 安全地转换 ONNX 模型的 Opset 版本。
Args:
input_model_path (str): 输入 ONNX 模型文件路径。
output_model_path (str): 输出转换后 ONNX 模型文件路径。
target_opset (int): 目标 Opset 版本号。
"""
try:
# 1. 加载模型
original_model = onnx.load(input_model_path)
print(f"原始 Opset Import: {original_model.opset_import}")
# 2. 使用 version_converter 进行转换
# 它会尝试将算子适配到目标 Opset
converted_model = version_converter.convert_version(original_model, target_opset)
# 3. 检查转换后的模型
onnx.checker.check_model(converted_model)
print("ONNX Checker 检查转换后的模型通过。")
# 4. 保存转换后的模型
onnx.save(converted_model, output_model_path)
print(f"模型已安全转换为 Opset {target_opset} 并保存到: {output_model_path}")
print(f"转换后的 Opset Import: {converted_model.opset_import}")
except ValueError as e:
print(f"转换失败:模型包含无法转换到 Opset {target_opset} 的算子。错误: {e}")
except Exception as e:
print(f"处理模型时发生错误: {e}")
# --- 使用示例 ---
input_model = "F5_Transformer.onnx"
output_model_converted = "F5_Transformer_opset19.onnx"
target_version = 19
convert_opset(input_model, output_model_converted, target_version)