#![cfg(all(feature = "metal", target_os = "macos"))]
#[test]
fn frame2_codes_from_ref_embedding() {
let vocoder_path = std::path::PathBuf::from(std::env::var("HOME").expect("HOME not set"))
.join(".leap/models/LFM2.5-Audio-1.5B-Q4_0/vocoder-LFM2.5-Audio-1.5B-Q4_0.gguf");
let load_emb = |path: &str| -> Vec<f32> {
std::fs::read(path)
.unwrap()
.chunks_exact(4)
.map(|c| f32::from_le_bytes(c.try_into().unwrap()))
.collect()
};
if !vocoder_path.exists() {
return;
}
let ref_files = [
"/tmp/ref_frame0_emb.bin",
"/tmp/ref_frame1_emb.bin",
"/tmp/ref_frame2_emb.bin",
"/tmp/cera_frame2_emb.bin",
];
if ref_files.iter().any(|f| !std::path::Path::new(f).exists()) {
eprintln!("skipping — reference embedding files not found in /tmp/");
return;
}
let ref_f0 = load_emb("/tmp/ref_frame0_emb.bin");
let ref_f1 = load_emb("/tmp/ref_frame1_emb.bin");
let ref_f2 = load_emb("/tmp/ref_frame2_emb.bin");
let cera_f2 = load_emb("/tmp/cera_frame2_emb.bin");
let voc_gguf = cera::gguf::GgufFile::open_arc(&vocoder_path).unwrap();
let dw = cera::model::audio_decoder::AudioDecoderWeights::from_gguf(&voc_gguf).unwrap();
{
let mut df = cera::model::audio_decoder::DepthformerState::new(&dw.depthformer_config);
let c0 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &ref_f0, 0.0, 1);
let c1 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &ref_f1, 0.0, 1);
let c2 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &ref_f2, 0.0, 1);
eprintln!("All ref embs → c0={c0:?} c1={c1:?} c2={c2:?}");
}
{
let mut df = cera::model::audio_decoder::DepthformerState::new(&dw.depthformer_config);
let c0 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &ref_f0, 0.0, 1);
let c1 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &ref_f1, 0.0, 1);
let c2 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &cera_f2, 0.0, 1);
eprintln!("Ref f0+f1, cera f2 → c0={c0:?} c1={c1:?} c2={c2:?}");
}
{
let cera_f1 = load_emb("/tmp/cera_frame1_emb.bin");
let mut df = cera::model::audio_decoder::DepthformerState::new(&dw.depthformer_config);
let c0 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &ref_f0, 0.0, 1);
let c1 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &cera_f1, 0.0, 1);
let c2 = cera::model::audio_decoder::sample_audio_frame(&dw, &mut df, &cera_f2, 0.0, 1);
eprintln!("Ref f0, cera f1+f2 → c0={c0:?} c1={c1:?} c2={c2:?}");
}
}