18个稳定版本 (3个主要版本)

3.0.3 2024年8月15日
3.0.2 2024年1月30日
3.0.1 2023年11月16日
2.2.1 2023年6月7日
0.0.1 2021年8月11日

#48 in 机器学习

Download history 10/week @ 2024-05-20 10/week @ 2024-05-27 15/week @ 2024-06-03 32/week @ 2024-06-10 9/week @ 2024-06-17 11/week @ 2024-06-24 28/week @ 2024-07-01 8/week @ 2024-07-15 5/week @ 2024-07-29 17/week @ 2024-08-05 128/week @ 2024-08-12

每月150次下载
用于picovoice

Apache-2.0

3MB
715

包含(Windows DLL,300KB)data/lib/windows/amd64/libpv_rhino.dll,(ELF库,180KB)data/lib/linux/x86_64/libpv_rhino.so,(Mach-o库,240KB)data/lib/mac/arm64/libpv_rhino.dylib,(Mach-o库,255KB)data/lib/mac/x86_64/libpv_rhino.dylib,(ELF库,145KB)libpv_rhino.so,(ELF库,150KB)libpv_rhino.so 等5个更多

Rhino语音到意图引擎

Picovoice在加拿大温哥华制作

Rhino是Picovoice的语音到意图引擎。它可以直接从感兴趣的给定上下文中的语音命令中推断意图,实时进行。例如,给定一个语音命令

我能来一小杯双份浓缩咖啡吗?

Rhino推断用户想点饮料,并发出以下推断结果

{
  "isUnderstood": "true",
  "intent": "orderBeverage",
  "slots": {
    "beverage": "espresso",
    "size": "small",
    "numberOfShots": "2"
  }
}

Rhino是

  • 使用在现实环境中训练的深度神经网络。
  • 紧凑且计算效率高,非常适合物联网。
  • 自助服务。开发人员和设计师可以使用Picovoice控制台训练自定义模型。

兼容性

  • Rust 1.54+
  • 在Linux (x86_64)、macOS (x86_64)、Windows (x86_64)和Raspberry Pi上运行

安装

首先,您需要在系统上安装Rust和Cargo

要将rhino库添加到您的应用程序中,请将pv_rhino添加到您的应用程序的Cargo.toml清单中

[dependencies]
pv_rhino = "*"

如果您更喜欢克隆仓库并在本地使用它,请首先运行copy.sh。(注意:在Windows上,需要Git Bash或其他bash shell,否则您必须手动将库复制到项目中)。然后您可以引用本地绑定位置

[dependencies]
pv_rhino = { path = "/path/to/rust/binding" }

访问密钥

犀牛在初始化时需要一个有效的Picovoice AccessKey。在使用Rhino SDKs时,AccessKey充当您的凭证。您可以免费获取您的AccessKey。请确保您的AccessKey是保密的。登录或注册Picovoice控制台以获取您的AccessKey

用法

要创建引擎的实例,首先使用语音到意图引擎的配置参数创建一个RhinoBuilder实例,然后调用.init()

use rhino::RhinoBuilder;

let access_key = "${ACCESS_KEY}"; // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)

let rhino: Rhino = RhinoBuilder::new(access_key, "/path/to/context/file.rhn").init().expect("Unable to create Rhino");

上下文文件是使用Picovoice控制台Rhino的GitHub存储库中提供的默认上下文之一创建的语音到意图上下文。

可以使用sensitivity参数调整引擎的灵敏度。它是一个位于[0, 1]之间的浮点数。较高的灵敏度值会导致误报率(可能)增加,但可以减少遗漏。您还可以覆盖默认的Rhino模型(.pv),这在使用非英语上下文时需要完成。

let rhino: Rhino = RhinoBuilder::RhinoBuilder::new(access_key, "/path/to/context/file.rhn")
    .sensitivity(0.42f32)
    .model_path("/path/to/rhino/params.pv")
    .init().expect("Unable to create Rhino");

初始化时,有效样本率由sample_rate()给出。预期帧长度(输入数组中的音频样本数量)由frame_length()给出。该引擎接受16位线性编码的PCM,并处理单声道音频。

要向犀牛输入音频,请在您的捕获循环中使用process函数。

fn next_audio_frame() -> Vec<i16> {
    // get audio frame
}

loop {
    if let Ok(is_finalized) = rhino.process(&next_audio_frame()) {
        if is_finalized {
            if let Ok(inference) = rhino.get_inference() {
                if inference.is_understood {
                    let intent = inference.intent.unwrap();
                    let slots = inference.slots;
                    // add code to take action based on inferred intent and slot values
                } else {
                    // add code to handle unsupported commands
                }
            }
        }   
    }
}

非英语上下文

为了检测非英语上下文,您需要使用相应的模型文件。所有受支持语言的模型文件可在此处找到。

示例

请参阅犀牛Rust示例此处

依赖项