Initial commit: HotKeet + parakeet-cli
HotKeet: Push-to-Talk Diktier-App mit Parakeet-Transkription - Konfiguration per Datei-/Ordner-Dialog - Mikrofon-Auswahl persistent - Tray, Einstellungen, Signaltöne parakeet-cli: Transkriptions-CLI für HotKeet - ONNX-basierte Spracherkennung - WAV-Input, JSON-Output Made-with: Cursor
This commit is contained in:
6
parakeet-cli/.cargo/config.toml
Normal file
6
parakeet-cli/.cargo/config.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
# Linker-Pfad für msvcrt.lib (Visual Studio 2022)
|
||||
[target.x86_64-pc-windows-msvc]
|
||||
rustflags = [
|
||||
"-C",
|
||||
"link-arg=/LIBPATH:C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\SDK\\ScopeCppSDK\\vc15\\VC\\lib",
|
||||
]
|
||||
1280
parakeet-cli/Cargo.lock
generated
Normal file
1280
parakeet-cli/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
9
parakeet-cli/Cargo.toml
Normal file
9
parakeet-cli/Cargo.toml
Normal file
@@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "parakeet-cli"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
description = "CLI for Parakeet v3 speech-to-text via transcribe-rs"
|
||||
|
||||
[dependencies]
|
||||
transcribe-rs = { version = "0.2.3", features = ["parakeet"] }
|
||||
serde_json = "1.0"
|
||||
18
parakeet-cli/README.md
Normal file
18
parakeet-cli/README.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# parakeet-cli
|
||||
|
||||
CLI für Parakeet v3 Speech-to-Text (transcribe-rs). Wird von mediSchnack als natives Offline-Modell genutzt.
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
cd mediSchnack/parakeet-cli
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
**Hinweis:** Bei Rust < 1.88 muss `ort` auf eine kompatible Version gepinnt werden:
|
||||
|
||||
```bash
|
||||
cargo update -p ort -p ort-sys --precise 2.0.0-rc.10
|
||||
```
|
||||
|
||||
Die `parakeet-cli.exe` wird beim mediSchnack-Build automatisch nach `bin/` kopiert, sofern sie unter `parakeet-cli/target/release/` existiert.
|
||||
9
parakeet-cli/build.cmd
Normal file
9
parakeet-cli/build.cmd
Normal file
@@ -0,0 +1,9 @@
|
||||
@echo off
|
||||
REM Build-Skript: Setzt LIB-Pfad für msvcrt.lib (Visual Studio 2022)
|
||||
set "LIB_PATH=C:\Program Files\Microsoft Visual Studio\2022\Community\SDK\ScopeCppSDK\vc15\VC\lib"
|
||||
if defined LIB (
|
||||
set "LIB=%LIB_PATH%;%LIB%"
|
||||
) else (
|
||||
set "LIB=%LIB_PATH%"
|
||||
)
|
||||
cargo build %*
|
||||
8
parakeet-cli/build.ps1
Normal file
8
parakeet-cli/build.ps1
Normal file
@@ -0,0 +1,8 @@
|
||||
# Build-Skript: Setzt LIB-Pfad für msvcrt.lib (Visual Studio 2022)
|
||||
$libPath = "C:\Program Files\Microsoft Visual Studio\2022\Community\SDK\ScopeCppSDK\vc15\VC\lib"
|
||||
if ($env:LIB) {
|
||||
$env:LIB = "$libPath;$env:LIB"
|
||||
} else {
|
||||
$env:LIB = $libPath
|
||||
}
|
||||
cargo build @args
|
||||
43
parakeet-cli/src/main.rs
Normal file
43
parakeet-cli/src/main.rs
Normal file
@@ -0,0 +1,43 @@
|
||||
//! Parakeet CLI - Transcribes WAV audio using Parakeet v3 (transcribe-rs).
|
||||
//! Usage: parakeet-cli <model_dir> <audio.wav>
|
||||
//! Output: JSON {"text": "..."} on stdout, errors on stderr.
|
||||
|
||||
use std::path::PathBuf;
|
||||
|
||||
use transcribe_rs::{engines::parakeet::{ParakeetEngine, ParakeetModelParams}, TranscriptionEngine};
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
if args.len() < 3 {
|
||||
eprintln!("Usage: parakeet-cli <model_dir> <audio.wav>");
|
||||
std::process::exit(1);
|
||||
}
|
||||
let model_path = PathBuf::from(&args[1]);
|
||||
let audio_path = PathBuf::from(&args[2]);
|
||||
|
||||
if !model_path.is_dir() {
|
||||
eprintln!("Model directory does not exist: {:?}", model_path);
|
||||
std::process::exit(1);
|
||||
}
|
||||
if !audio_path.is_file() {
|
||||
eprintln!("Audio file does not exist: {:?}", audio_path);
|
||||
std::process::exit(1);
|
||||
}
|
||||
|
||||
let mut engine = ParakeetEngine::new();
|
||||
if let Err(e) = engine.load_model_with_params(&model_path, ParakeetModelParams::int8()) {
|
||||
eprintln!("Failed to load model: {}", e);
|
||||
std::process::exit(1);
|
||||
}
|
||||
|
||||
let result = match engine.transcribe_file(&audio_path, None) {
|
||||
Ok(r) => r,
|
||||
Err(e) => {
|
||||
eprintln!("Transcription failed: {}", e);
|
||||
std::process::exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
let json = serde_json::json!({ "text": result.text });
|
||||
println!("{}", json);
|
||||
}
|
||||
Reference in New Issue
Block a user