我正在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结果块之后.然后更新打印!以改为输出文本变量.

推荐答案

欢迎来到So!我敢打赌你的resultPyDict.如果是这样的话,您可能会获得包含以下内容的文本:

let text = result.get_item("text");

Python相关问答推荐

Pydantic 2.7.0模型接受字符串日期时间或无

即使在可见的情况下也不相互作用

使用setuptools pyproject.toml和自定义目录树构建PyPi包

try 将一行连接到Tensorflow中的矩阵

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

如何从数据库上传数据到html?

计算每个IP的平均值

如何合并两个列表,并获得每个索引值最高的列表名称?

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

具有相同图例 colored颜色 和标签的堆叠子图

有没有办法在不先将文件写入内存的情况下做到这一点?

如何在Gekko中处理跨矢量优化

如何在Python中自动创建数字文件夹和正在进行的文件夹?

根据过滤后的牛郎星图表中的数据计算新系列

是否需要依赖反转来确保呼叫方和被呼叫方之间的分离?

高效地计算数字数组中三行上三个点之间的Angular

某些值的数值幂和**之间的差异

来自任务调度程序的作为系统的Python文件

有什么方法可以在不对多索引DataFrame的列进行排序的情况下避免词法排序警告吗?