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 机器学习
每月150次下载
用于picovoice
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示例此处