我正在try 使用Python 的窃窃私语语音来通过Py03 Ruust代码来发送API.
对于Whisper GitHub上给出的例子,GitHub发现here
import whisper
model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])
它只提供文本.这是有意义的,因为它提供了在词典中打印"文本"值的逻辑.
我的 rust 病计划如下:
use pyo3::prelude::*;
use pyo3::types::PyTuple;
fn main() -> PyResult<()> {
let arg1 = "tiny";
let arg2 = "/test_dir/test/Test3.opus";
Python::with_gil(|py| {
let whisper = PyModule::import(py, "whisper")?;
let model_args = PyTuple::new(py, &[arg1]);
let audio_args = PyTuple::new(py, &[arg2]);
let model = whisper
.getattr("load_model")?
.call1(model_args)?;
//.extract()?;
println!("Model loaded");
let audio = whisper
.getattr("load_audio")?
.call1(audio_args)?;
println!("Audio loaded");
let result_args = PyTuple::new(py, &[model, audio]);
println!("Arguments setup");
let result = whisper
.getattr("transcribe")?
.call1(result_args)?;
println!("Output is: {}", result);
Ok(())
})
}
我遇到的问题是,虽然我确实得到了输出,但它不仅是文本,而且是的词典输出的所有三个部分,以返回转录.这意味着当我只想要文本时,它会输出文本、片段和语言.
在查看Py03文档时,我似乎无法确定如何从我的输出中只获取文本.
这可能是我忽略的一些基本问题,但我很感激任何建议,因为我对Rust 还很陌生!
编辑:
我最终需要补充的是:
let text = result.get_item("text")?;
在let结果块之后.然后更新打印!以改为输出文本变量.