-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathspeaker_embedding.rs
27 lines (22 loc) · 1.08 KB
/
speaker_embedding.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
Create voice embedding for voice in audio file
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-recongition-models/nemo_en_speakerverification_speakernet.onnx
wget https://github.com/thewh1teagle/sherpa-rs/releases/download/v0.1.0/16hz_mono_pcm_s16le.wav -O 16hz_mono_pcm_s16le.wav
cargo run --example speaker_embedding 16hz_mono_pcm_s16le.wav
*/
fn main() {
let file_path = std::env::args().nth(1).expect("Missing file path argument");
let (samples, sample_rate) = sherpa_rs::read_audio_file(&file_path).unwrap();
assert_eq!(sample_rate, 16000, "The sample rate must be 16000.");
let config = sherpa_rs::speaker_id::ExtractorConfig {
model: "nemo_en_speakerverification_speakernet.onnx".into(),
..Default::default()
};
let mut extractor = sherpa_rs::speaker_id::EmbeddingExtractor::new(config).unwrap();
// Compute the speaker embedding
let embedding = extractor
.compute_speaker_embedding(samples, sample_rate)
.unwrap();
// Use the embedding as needed
println!("Speaker embedding: {:?}", embedding);
}