//! Convert `microsoft/wavlm-base-plus-sv/pytorch_model.bin` → flat //! safetensors with weight_norm merged. //! //! Usage: //! ``` //! cargo run -p rtx-csm --release --example wavlm_sv_convert -- \ //! --out /tmp/wavlm_sv.safetensors //! ``` use anyhow::{Context, Result}; use clap::Parser; use rtx_csm::{hub, wavlm_sv_convert}; use std::path::PathBuf; #[derive(Debug, Parser)] #[command(name = "wavlm_sv_convert")] struct Cli { /// Optional override; defaults to HF-fetched pytorch_model.bin. #[arg(long)] input: Option, /// Output safetensors. #[arg(long)] out: PathBuf, } fn main() -> Result<()> { tracing_subscriber::fmt().init(); let cli = Cli::parse(); let input = match cli.input { Some(p) => p, None => hub::resolve_wavlm_sv().context("resolve_wavlm_sv")?, }; tracing::info!("converting {} -> {}", input.display(), cli.out.display()); let report = wavlm_sv_convert::convert_pth(&input, &cli.out)?; println!( "merged {} weight_norm pairs, {} passthrough, {} skipped (classifier/objective), {} total tensors written", report.merged_weight_norm_pairs, report.passthrough_tensors, report.skipped_tensors, report.total_tensors_written ); Ok(()) }