文章目录
- 一、关于 Porcupine
- 特点
- 用例
- 尝试一下
- 语言支持
- 性能
- 二、Demo
- 1、Python Demo
- 2、iOS Demo
- BackgroundService Demo
- ForegroundApp Demo
- 3、网页 Demo
- 3.1 Vanilla JavaScript 和 HTML
- 3.2 Vue Demos
- 三、SDK - Python
一、关于 Porcupine
Porcupine 是一个高度准确和轻量级的唤醒词引擎。它支持构建始终监听的语音应用程序。
- github : https://github.com/Picovoice/porcupine (240916 3.7K)
- 官网:https://picovoice.ai/
- 作者: Picovoice (Vancouver, Canada)
- Twitter | YouTube
特点
- 使用在 现实世界环境中 训练的深度神经网络。
- 紧凑、计算有效率。它非常适合物联网。
- 跨平台
- Arm Cortex-M、STM32、Arduino和 i.MX RT
- 树莓派(Zero、3、4、5)
- 安卓 和 iOS
- Chrome、Safari、火狐和 Edge
- Linux(x86_64)、macOS(x86_64、arm64)和Windows(x86_64)
- 可扩展。它可以检测多个始终监听的语音命令,而不会增加运行时占用空间。
- 自助服务。开发人员可以使用PicoVoice Console训练自定义唤醒词模型。
用例
如果您需要检测一个或几个静态(始终监听)语音命令,Porcupine是合适的产品。
- 如果您想创建类似于Alexa或Google的语音体验,请参阅 PicoVoice平台。
- 如果您需要理解特定领域中 复杂且自然说出的语音命令,请参阅 Rhino Speech-to-Intent engine。
尝试一下
- 交互式网络 Demo
- 树莓派Zero 上的Porcupine
语言支持
- 阿拉伯语、荷兰语、英语、波斯语、法语、德语、印地语、意大利语、日语、韩语、普通话、波兰语、葡萄牙语、俄语、西班牙语、瑞典语和越南语
- 商业客户可根据具体情况支持其他语言。
性能
Porcupine 和另外两个广泛使用的库 PocketSphinx和 Snowboy 有比较,见在里 。与这两个性能最好的引擎相比,Porcupine精度提高了11.0倍,速度提高了6.5倍(在 Raspberry Pi 3上)。
二、Demo
Demo 支持各个平台,这里简单列举几个,详见:https://github.com/Picovoice/porcupine?tab=readme-ov-file#demos
如果使用SSH,克隆存储库:
git clone --recurse-submodules git@github.com:Picovoice/porcupine.git
如果使用HTTPS,请使用以下命令克隆存储库:
git clone --recurse-submodules https://github.com/Picovoice/porcupine.git
1、Python Demo
安装 Demo 包:
sudo pip3 install pvporcupinedemo
使用连接到设备的工作麦克风在终端中运行以下操作:
porcupine_demo_mic --access_key ${ACCESS_KEY} --keywords porcupine
引擎开始实时处理来自麦克风的音频输入,并在检测到 Porcupine
时输出到终端。
有关Python Demo 的更多信息,请访问demo/python。
2、iOS Demo
BackgroundService Demo 在后台运行音频录制,当应用程序没有focus 并保持在后台运行时,可以检测唤醒词。只有当应用程序focus 时,前景应用程序 Demo 才会运行唤醒词检测。
BackgroundService Demo
要运行 Demo ,请转到demo/ios/Background Service并运行:
pod install
用你的 AccessKey
替换文件ViewController. swift中的 let accessKey = "${YOUR_ACCESS_KEY_HERE}"
。
然后,使用Xcode打开生成的PorcupineBackgroundServiceDemo.xcworkspace
并运行应用程序。
ForegroundApp Demo
要运行前台应用程序 Demo :
1)转到ForegroundApp目录。然后运行:
pod install
2)在 XCode 中打开PorcupineForegroundAppDemo.xcworkspace
。
3)用你的AccessKey
替换文件ViewController. swift中的let accessKey = "${YOUR_ACCESS_KEY_HERE}"
。
4)前往 Product > Scheme
,为您要 Demo 的语言 选择 scheme(例如arDemo
->Arabic Demo ,deDemo
-> German Demo )
5)使用模拟器或连接iOS设备,运行 Demo
该 Demo 允许您选择任何预构建的关键字进行检测。按开始并说出选定的关键字。
3、网页 Demo
3.1 Vanilla JavaScript 和 HTML
从demo/web在终端中运行以下命令:
yarn
yarn start ${LANGUAGE}
(或)
npm install
npm run start ${LANGUAGE}
在浏览器中打开 http://localhost:5000 以尝试 Demo 。
3.2 Vue Demos
From demo/vue run the following in the terminal:
yarn
yarn start ${LANGUAGE}
(or)
npm install
npm run start ${LANGUAGE}
在浏览器中打开 http://localhost:5000 以尝试 Demo 。
三、SDK - Python
支持多种 SDK,这里截取 Python 部分,更多可见:https://github.com/Picovoice/porcupine?tab=readme-ov-file#sdks
安装Python SDK:
pip3 install pvporcupine
SDK公开了一个工厂方法 来创建引擎的实例:
import pvporcupine
# AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
access_key = "${ACCESS_KEY}"
handle = pvporcupine.create(access_key=access_key, keywords=['picovoice', 'bumblebee'])
keywords
参数是访问库 随附的默认关键字文件 的简写。可用的 默认关键字文件 可以通过以下方式检索
import pvporcupine
print(pvporcupine.KEYWORDS)
如果您希望使用非默认关键字文件,您需要确定其路径:
import pvporcupine
# AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
access_key = "${ACCESS_KEY}"
handle = pvporcupine.create(
access_key=access_key,
keyword_paths=['path/to/non/default/keyword/file'])
初始化后,可以使用handle.sample_rate
获取有效的样例 rate。
所需帧长 (输入数组中音频样本的数量)是handle.frame_length
。
该对象可用于监控 传入音频如下:
import pvporcupine
# AccessKey obtained from Picovoice Console (https://console.picovoice.ai/)
access_key = "${ACCESS_KEY}"
handle = pvporcupine.create(access_key=access_key, keywords=['porcupine'])
def get_next_audio_frame():
pass
while True:
keyword_index = handle.process(get_next_audio_frame())
if keyword_index >= 0:
# Insert detection event callback here
pass
最后,完成后一定要使用handle.delete()
显式释放资源。
2024-09-16(一)