summaryrefslogtreecommitdiff
path: root/makima/src
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src')
-rw-r--r--makima/src/listen.rs57
-rw-r--r--makima/src/main.rs3
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();
}