import torchfrom transformers import AutoModelForSpeechSeq2Seqimport refrom tqdm import tqdmfrom collections import OrderedDictimport json # Load parameter name mapping from HF to OpenAI formatwith open('convert_hf2openai.json', 'r') as f: reverse_translation = json.load(f) reverse_translation = OrderedDict(reverse_translation) def save_model(model, save_path): def reverse_translate(current_param): # Convert parameter names using regex patterns for pattern, repl in reverse_translation.items(): if re.match(pattern, current_param): return re.sub(pattern, repl, current_param) # Extract model dimensions from config config = model.config model_dims = { "n_mels": config.num_mel_bins, # Number of mel spectrogram bins "n_vocab": config.vocab_size, # Vocabulary size "n_audio_ctx": config.max_source_positions, # Max audio context length "n_audio_state": config.d_model, # Audio encoder state dimension "n_audio_head": config.encoder_attention_heads, # Audio encoder attention heads "n_audio_layer": config.encoder_layers, # Number of audio encoder layers "n_text_ctx": config.max_target_positions, # Max text context length "n_text_state": config.d_model, # Text decoder state dimension "n_text_head": config.decoder_attention_heads, # Text decoder attention heads "n_text_layer": config.decoder_layers, # Number of text decoder layers } # Convert model state dict to Whisper format original_model_state_dict = model.state_dict() new_state_dict = {} for key, value in tqdm(original_model_state_dict.items()): key = key.replace("model.", "") # Remove 'model.' prefix new_key = reverse_translate(key) # Convert parameter names if new_key is not None: new_state_dict[new_key] = value # Create final model dictionary pytorch_model = {"dims": model_dims, "model_state_dict": new_state_dict} # Save converted model torch.save(pytorch_model, save_path) # Load Hugging Face modelmodel_id = "Oriserve/Whisper-Hindi2Hinglish-Swift"model = AutoModelForSpeechSeq2Seq.from_pretrained( model_id, low_cpu_mem_usage=True, # Optimize memory usage use_safetensors=True # Use safetensors format) # Convert and save modelmodel_save_path = "Whisper-Hindi2Hinglish-Swift.pt"save_model(model,model_save_path)