import os import argparse from pathlib import Path from funasr_detach.utils.types import str2bool def main(): parser = argparse.ArgumentParser() parser.add_argument("--model-name", type=str, required=True) parser.add_argument("--export-dir", type=str, required=True) parser.add_argument( "--export", type=str2bool, default=True, help="whether to export model" ) parser.add_argument("--type", type=str, default="onnx", help='["onnx", "torch"]') parser.add_argument("--device", type=str, default="cpu", help='["cpu", "cuda"]') parser.add_argument( "--quantize", type=str2bool, default=False, help="export quantized model" ) parser.add_argument( "--fallback-num", type=int, default=0, help="amp fallback number" ) parser.add_argument("--audio_in", type=str, default=None, help='["wav", "wav.scp"]') parser.add_argument( "--model_revision", type=str, default=None, help="model_revision" ) parser.add_argument("--calib_num", type=int, default=200, help="calib max num") args = parser.parse_args() model_dir = args.model_name if not Path(args.model_name).exists(): from modelscope.hub.snapshot_download import snapshot_download try: model_dir = snapshot_download( args.model_name, cache_dir=args.export_dir, revision=args.model_revision ) except: raise "model_dir must be model_name in modelscope or local path downloaded from modelscope, but is {}".format( model_dir ) if args.export: model_file = os.path.join(model_dir, "model.onnx") if args.quantize: model_file = os.path.join(model_dir, "model_quant.onnx") if not os.path.exists(model_file): print(".onnx is not exist, begin to export onnx") from funasr_detach.bin.export_model import ModelExport export_model = ModelExport( cache_dir=args.export_dir, onnx=True, device="cpu", quant=args.quantize, ) export_model.export(model_dir) if __name__ == "__main__": main()