19个稳定版本 (3个主要版本)
3.0.2 | 2024年1月30日 |
---|---|
3.0.1 | 2023年11月16日 |
3.0.0 | 2023年10月25日 |
2.2.1 | 2023年6月7日 |
0.0.2 | 2021年8月9日 |
16 在 音频 中排名
每月下载量 86
用于 picovoice
3MB
743 行
包含 (Windows DLL, 295KB) libpv_porcupine.dll,(ELF库, 145KB) data/lib/beaglebone/libpv_porcupine.so,(ELF库, 155KB) libpv_porcupine.so,(ELF库, 180KB) data/lib/linux/x86_64/libpv_porcupine.so,(Mach-o库, 220KB) data/lib/mac/arm64/libpv_porcupine.dylib,(Mach-o库, 235KB) libpv_porcupine.dylib 等8个文件 更多。
Porcupine唤醒词引擎
由加拿大温哥华的Picovoice制作
Porcupine是一个高精度且轻量级的唤醒词引擎。它允许构建始终处于监听状态的语音应用程序。它是
- 在真实世界环境中训练的深度神经网络。
- 紧凑且计算效率高。非常适合物联网。
- 跨平台
- Arm Cortex-M、STM32、Arduino和i.MX RT
- 树莓派、NVIDIA Jetson Nano和BeagleBone
- Android和iOS
- Chrome、Safari、Firefox和Edge
- Linux (x86_64)、macOS (x86_64、arm64)和Windows (x86_64)
- 可扩展。它可以检测多个始终处于监听状态的语音命令,而不会增加运行时占用。
- 自助服务。开发者可以使用Picovoice控制台训练自定义唤醒词模型。
兼容性
- Rust 1.54+
- 在Linux (x86_64)、macOS (x86_64和arm64)、Windows (x86_64)、树莓派、NVIDIA Jetson (Nano) 和 BeagleBone上运行
安装
首先您需要在您的系统上安装Rust和Cargo。
要将porcupine库添加到您的应用程序中,请将 pv_porcupine
添加到您的应用的 Cargo.toml
清单中
[dependencies]
pv_porcupine = "*"
如果您想克隆仓库并在本地使用,首先运行 copy.sh
。 (注意:在Windows上,需要Git Bash或其他bash shell,否则您必须手动将库复制到项目中)。然后您可以引用本地的绑定位置
[dependencies]
pv_porcupine = { path = "/path/to/rust/binding" }
访问密钥
Porcupine在初始化时需要一个有效的Picovoice AccessKey
。当使用Porcupine SDK时,AccessKey
充当您的凭据。您可以免费获取您的AccessKey
。请确保您的AccessKey
保密。在Picovoice控制台注册或登录以获取您的AccessKey
。
用法
要创建引擎的实例,首先使用唤醒词引擎的配置参数创建一个PorcupineBuilder实例,然后调用.init()
use porcupine::{BuiltinKeywords, PorcupineBuilder};
let access_key = "${ACCESS_KEY}"; // AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
let porcupine: Porcupine = PorcupineBuilder::new_with_keywords(access_key, &[BuiltinKeywords::Porcupine]).init().expect("Unable to create Porcupine");
在上面的例子中,我们初始化了引擎以检测内置的唤醒词"Porcupine"。内置关键字包含在具有BuiltinKeywords
枚举类型的包中。
Porcupine可以同时检测多个关键字
let porcupine: Porcupine = PorcupineBuilder::new_with_keywords(access_key, &[BuiltinKeywords::Porcupine, BuiltinKeywords::Blueberry, BuiltinKeywords::Bumblebee])
.init().expect("Unable to create Porcupine");
要检测自定义关键字,使用PorcupineBuilder
的new_with_keyword_paths
方法传入*.ppn
文件路径
let porcupine: Porcupine = PorcupineBuilder::new_with_keyword_paths(access_key, &["/absolute/path/to/keyword/one.ppn", "/absolute/path/to/keyword/two.ppn"])
.init().expect("Unable to create Porcupine");
可以通过将适当的*.pv
文件路径传递到model_path
方法来更改语言
let porcupine: Porcupine = PorcupineBuilder::new_with_keyword_paths(access_key, &["/absolute/path/to/keyword/one.ppn"])
.model_path("/path/to/another/language_params.pv")
.init().expect("Unable to create Porcupine");
可以使用sensitivities
方法按关键字调整引擎的灵敏度
let porcupine: Porcupine = PorcupineBuilder::new_with_keywords(access_key, &[BuiltinKeywords::Porcupine, BuiltinKeywords::Bumblebee])
.sensitivities(&[0.2f32, 0.42f32])
.init().expect("Unable to create Porcupine");
灵敏度是一个参数,它允许以误报率为代价交换漏报率。它是一个在[0, 1]
内的浮点数。更高的灵敏度以增加误报率为代价降低漏报率。
初始化时,有效样本率由sample_rate()
给出。期望帧长度(输入数组中的音频样本数)由frame_length()
给出。该引擎接受16位线性编码的PCM,并处理单声道音频。
要将音频输入Porcupine,请在捕获循环中使用process
函数。
fn next_audio_frame() -> Vec<i16> {
// get audio frame
}
loop {
if let Ok(keyword_index) = porcupine.process(&next_audio_frame()) {
if keyword_index >= 0 {
// wake word detected!
}
}
}
非英语唤醒词
为了检测非英语唤醒词,您需要使用相应的模型文件。所有支持的语言模型文件均可在此处找到。
示例
请参阅Porcupine Rust示例此处