diff options
Diffstat (limited to 'makima/src')
| -rw-r--r-- | makima/src/listen.rs | 57 | ||||
| -rw-r--r-- | makima/src/main.rs | 3 |
2 files changed, 60 insertions, 0 deletions
diff --git a/makima/src/listen.rs b/makima/src/listen.rs new file mode 100644 index 0000000..d478bd9 --- /dev/null +++ b/makima/src/listen.rs @@ -0,0 +1,57 @@ +use std::path::PathBuf; +use transcribe_rs::TranscriptionEngine; +use transcribe_rs::engines::parakeet::{ParakeetEngine, ParakeetModelParams}; + +pub struct Listen { + name: String, + text: Vec<Dialogue>, +} +struct Dialogue { + character: Character, + text: String, +} + +struct Character { + name: String, +} + +fn dialogue(character: &str, text: &str) -> Dialogue { + Dialogue { + character: Character { + name: character.to_string(), + }, + text: "".to_string(), + } +} + +pub(crate) fn listen() -> Result<Listen, Box<dyn std::error::Error>> { + let mut engine = ParakeetEngine::new(); + engine.load_model_with_params( + &PathBuf::from("models/parakeet-tdt-0.6b-v3-int8"), + ParakeetModelParams::int8(), + )?; + + // Only works with 16000 Hz and mono ( ffmpeg -i audio.mp3 -ar 16000 -ac 1 audio.wav) + let result = engine.transcribe_file(&PathBuf::from("audio.wav"), None)?; + println!("Transcription: {}", result.text); + + let mut txt: String = "".to_string(); + if let Some(segments) = result.segments { + for segment in segments { + println!( + "[{:.2}s - {:.2}s]: {}", + segment.start, segment.end, segment.text + ); + txt = txt + segment.text.as_str(); + } + } + + println!("Transcription: {}", txt); + + + + Ok(Listen { + name: String::from("example"), + text: vec![dialogue("a", "part a"), dialogue("b", "part b")], + }) +} diff --git a/makima/src/main.rs b/makima/src/main.rs index e7a11a9..8b4845d 100644 --- a/makima/src/main.rs +++ b/makima/src/main.rs @@ -1,3 +1,6 @@ +mod listen; + fn main() { println!("Hello, world!"); + listen::listen().unwrap(); } |
