2个版本
0.2.1 | 2022年11月3日 |
---|---|
0.2.0 | 2022年11月1日 |
在音频分类中排名#480
3MB
11K SLoC
whisper-rs
到whisper.cpp的Rust绑定
用法
fn main() {
// load a context and model
let mut ctx = WhisperContext::new("path/to/model").expect("failed to load model");
// create a params object
let mut params = FullParams::new(DecodeStrategy::Greedy { n_past: 0 });
// assume we have a buffer of audio data
// here we'll make a fake one, floating point samples, 32 bit, 16KHz, mono
let audio_data = vec![0_f32; 16000 * 2];
// now we can run the model
ctx.full(params, &audio_data[..])
.expect("failed to run model");
// fetch the results
let num_segments = ctx.full_n_segments();
for i in 0..num_segments {
let segment = ctx.full_get_segment_text(i).expect("failed to get segment");
let start_timestamp = ctx.full_get_segment_t0(i);
let end_timestamp = ctx.full_get_segment_t1(i);
println!("[{} - {}]: {}", start_timestamp, end_timestamp, segment);
}
}
有关更多详细信息,请参阅examples/basic_use.rs。
如果需要,可以公开低级别的绑定,但对于大多数用例,上面的应该足够。有关更多详细信息,请参阅文档:https://docs.rs/whisper-rs/。
故障排除
- 我在编译时遇到了很多未定义符号的错误!
- 这些符号可能是C++标准库的一部分。
- 尝试使用编译器标志
-Clink-args=-lstdc++
来链接它 RUSTFLAGS="-Clink-args=-lstdc++" cargobuild
- 尝试使用编译器标志
- 这些符号可能是C++标准库的一部分。
- Windows/macOS/Android不工作!
- 我没有测试这些平台的方法,所以我真的帮不上忙。
- 如果您能让它工作,请提交一个PR!
- 我没有测试这些平台的方法,所以我真的帮不上忙。
- 在绑定生成构建期间出现panic!
- 您可以尝试自行修复它,或者设置
WHISPER_DONT_GENERATE_BINDINGS
环境变量。这将跳过尝试构建绑定,并复制现有的一个。它们可能已经过时,但总比没有好。WHISPER_DONT_GENERATE_BINDINGS=1cargo build
- 如果您能修复问题,请提交一个PR!
- 您可以尝试自行修复它,或者设置
- M1构建信息
- 有关更多信息,请参阅此问题。
许可证
tl;dr: 公共领域
依赖项
~2.9–5MB
~112K SLoC