sira-asr / fix_nemo_file.py
Antigravity AI
fix: resolve build dependencies and add CORS support
7ef1aa8
import zipfile
import os
import tempfile
import shutil
from omegaconf import OmegaConf
ORIGINAL_NEMO = "c:/Users/USER/queue-buddy/mon_modele_soloni/soloni-114m-tdt-ctc-v3.nemo"
FIXED_NEMO = "c:/Users/USER/queue-buddy/mon_modele_soloni/soloni_fixed.nemo"
def fix_nemo_config(original_path, fixed_path):
print(f"Fixing {original_path} -> {fixed_path}")
with tempfile.TemporaryDirectory() as tmpdir:
# 1. Extract everything
with zipfile.ZipFile(original_path, 'r') as zip_ref:
zip_ref.extractall(tmpdir)
# 2. Patch model_config.yaml
config_path = os.path.join(tmpdir, 'model_config.yaml')
if not os.path.exists(config_path):
# Try to find it if nested
for root, dirs, files in os.walk(tmpdir):
if 'model_config.yaml' in files:
config_path = os.path.join(root, 'model_config.yaml')
break
print(f"Loading config from {config_path}")
conf = OmegaConf.load(config_path)
# Disable struct mode in the object
OmegaConf.set_struct(conf, False)
# Nuke the offending key
try:
if 'decoding' in conf and 'greedy' in conf.decoding and 'boosting_tree' in conf.decoding.greedy:
if 'key_phrase_items_list' in conf.decoding.greedy.boosting_tree:
print("Removing 'key_phrase_items_list'...")
del conf.decoding.greedy.boosting_tree['key_phrase_items_list']
except Exception as e:
print(f"Warning during patch: {e}")
# Add global _struct_: false if possible
conf['_struct_'] = False
# Save patched config
OmegaConf.save(conf, config_path)
print("Config patched and saved.")
# 3. Create NEW ZIP
with zipfile.ZipFile(fixed_path, 'w', compression=zipfile.ZIP_STORED) as new_zip:
for root, dirs, files in os.walk(tmpdir):
for file in files:
full_path = os.path.join(root, file)
rel_path = os.path.relpath(full_path, tmpdir)
new_zip.write(full_path, rel_path)
print(f"Fixed model created at {fixed_path}")
if __name__ == "__main__":
fix_nemo_config(ORIGINAL_NEMO, FIXED_NEMO)