Porcupine - 语音关键词唤醒引擎
文章目录
- 一、关于 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 pvporcupineprint(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():passwhile True:keyword_index = handle.process(get_next_audio_frame())if keyword_index >= 0:# Insert detection event callback herepass
最后,完成后一定要使用handle.delete()显式释放资源。
2024-09-16(一)
相关文章:
Porcupine - 语音关键词唤醒引擎
文章目录 一、关于 Porcupine特点用例尝试一下 语言支持性能 二、Demo1、Python Demo2、iOS DemoBackgroundService DemoForegroundApp Demo 3、网页 Demo3.1 Vanilla JavaScript 和 HTML3.2 Vue Demos 三、SDK - Python 一、关于 Porcupine Porcupine 是一个高度准确和轻量级…...
Golang | Leetcode Golang题解之第409题最长回文串
题目: 题解: func longestPalindrome(s string) int {mp : map[byte]int{}for i : 0; i < len(s); i {mp[s[i]]}res : 0for _, v : range mp {if v&1 1 {res v - 1} else {res v}}if res<len(s) {res}return res }...
【C++】STL数据结构最全函数详解2-向量vector
关于STL,我们之前浅浅提过:这里 另外对于栈,这里有更加详尽的介绍:CSTL常用数据结构1详解---栈(stack)-CSDN博客 这个系列将会更加深入地从函数原型开始用详细的例子解释用法 首先这一篇介绍的是一个非常…...
阿里云 Quick BI使用介绍
Quick BI使用介绍 文章目录 阿里云 Quick BI使用介绍1. 创建自己的quick bi服务器2. 新建数据源3. 上传文件和 使用4. 开始分析 -选仪表盘5. 提供的图表6. 一个图表的设置使用小结 阿里云 Quick BI使用介绍 Quick BI是一款全场景数据消费式的BI平台,秉承全场景消费…...
LLMs之SuperPrompt:SuperPrompt的简介、使用方法、案例应用之详细攻略
LLMs之SuperPrompt:SuperPrompt的简介、使用方法、案例应用之详细攻略 目录 SuperPrompt的简介 SuperPrompt的使用方法 1、prompt SuperPrompt的案例应用 SuperPrompt的简介 SuperPrompt项目是一个开源项目,旨在通过设计特定的提示词来帮助我们更好…...
Java中的Web服务开发:RESTful API的最佳实践
Java中的Web服务开发:RESTful API的最佳实践 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在现代Web应用开发中,RESTful API是构建可伸缩、易于维护的Web服务的关键。…...
Linux创建虚拟磁盘并分区格式化
快速创建一个虚拟磁盘 你可以通过以下步骤在Linux上虚拟一个磁盘,并将其挂载到 /mnt/ 目录下: 步骤 1: 创建一个虚拟磁盘文件 使用 dd 命令创建一个虚拟磁盘文件(例如大小为1GB): dd if/dev/zero of/root/virtual_…...
面试经典150题——最后一个单词的长度
目录 题目链接:58. 最后一个单词的长度 - 力扣(LeetCode) 题目描述 示例 提示: 解法一:反向遍历 Java写法: C写法: 解法二:逆天解法 思路 存在的问题 总结 题目链接&…...
【C++】入门基础(上)
Hi,好久不见! 目录 1、C入门小基础 1.1 祖师爷--Bjarne Stroustrup(本贾尼斯特劳斯特卢普) 1.2 C参考文献 1.3 书籍推荐 2、C的第一个程序 3、命名空间 3.1 namespace的价值 3.2 namespace的定义 3.3 命名空间的使…...
Mac中Twig模版安装与SSTI漏洞学习
感谢大佬的文章参考学习。 SSTI:https://www.cnblogs.com/bmjoker/p/13508538.html Homebrew:快速开始 - Homebrew 中文网 Homebrew安装 一键快捷安装:默认使用中科大的源 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homeb…...
【20.5 python中的FastAPI】
python中的FastAPI FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,基于 Python 3.6 的类型提示。它利用了 Python 3.7 的新特性,如类型提示(Type Hints),来自动生成 A…...
研1日记13
正态分布: toTenor:转数字变为0-1 加载模型: model youmodel() model.load("路径") 测试单个样本:...
Go语言错误处理详解
Go语言以其简洁、高效和并发能力著称。在实际开发中,错误处理是一个不可避免且至关重要的部分。本文将深入探讨Go语言中的错误处理机制,涵盖其原理、使用方法、最佳实践,并提供丰富的代码示例和中文注释。 一、错误处理的基本概念 在Go语言…...
C++基础知识7 list
list 1. list的介绍及使用1.1 list的介绍1.2 list的使用1.2.1 list的构造1.2.2 list iterator的使用1.2.3 list capacity1.2.4 list element access1.2.5 list modifiers1.2.6 list的迭代器失效 2.1 模拟实现list 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 l…...
Android 车联网——汽车模块介绍(附1)
汽车模块指的是车辆中独立的电子控制单元(ECUs),如发动机控制单元(ECU)、车身控制模块(BCM)等,它们负责特定的功能或系统。 一、控制类模块 这些模块主要用于控制车辆的不同系统,确保车辆各部分的正常运行。 1、ECM ECM(Electronic Control Module,电子控制模块)…...
Windows下SDL2创建最简单的一个窗口
先看运行效果 再上代码: #include <stdio.h> #include "SDL.h"int main(int argc, char* argv[]) {// 初始化SDL视频子系统if (SDL_Init(SDL_INIT_VIDEO) -1){printf("Error: %s\n", SDL_GetError());return -1;} // 创建一个窗口SDL_…...
C++ | Leetcode C++题解之第406题根据身高重建队列
题目: 题解: class Solution { public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(), people.end(), [](const vector<int>& u, const vector<int>& v) …...
【网络安全】-ssrf服务器请求伪造攻击-burp
SSRF攻击服务器请求伪造攻击 CSRF攻击跨站请求伪造攻击也称客户端请求伪造攻击 两种攻击最主要的区别是一个在服务器,一个在客户端。 文章目录 前言 什么是SSRF攻击? 1.分类: 针对服务器的 SSRF 攻击: 针对后端系统的SSRF攻击: …...
C语言 | Leetcode C语言题解之第405题数字转换为十六进制数
题目: 题解: char * toHex(int num){int i0;char *nums(char*)malloc(sizeof(char)*32);unsigned int newnum(unsigned int)num;if(num0){nums[0]0;nums[1]\0;return nums;}while(newnum>1){int flagnewnum%16;newnum/16;if(flag<9){nums[i]flag0…...
Python快速入门 —— 第一节:基础类型
Python 快速教程说明 适用人群 有其他语言编程基础,或了解过python的群体,至少需要知道变量、对象、函数等基本概念想快速通过python实现一些功能,却不想了解python的底层实现的人群想快速了解python语言框架的人群有兴趣了解python的任何人…...
新手也能懂的SSRF漏洞实战:用iwebsec靶场复现文件读取与内网探测
从零开始掌握SSRF漏洞:iwebsec靶场实战指南1. 认识SSRF漏洞的本质想象一下,你正在一家高档餐厅点餐,服务员承诺可以帮你从任何地方获取食材——包括隔壁竞争对手的厨房。SSRF(Server-Side Request Forgery)漏洞就像这个…...
放弃编码器!纯靠MPU6050和PID算法,手把手教你用TT马达实现平衡小车稳定控制(STM32F103C8T6实战)
纯MPU6050STM32F103的TT马达平衡车实战:无编码器PID控制全解析当大多数平衡小车方案都在强调编码器对速度反馈的不可或缺性时,我们决定挑战一个更极简的配置:仅用5美元的TT马达、9轴的MPU6050和STM32F103C8T6最小系统板,完全舍弃编…...
Unity发行版DLL调试实战:DnSpy无源码IL级断点指南
1. 这不是“反编译”,而是Unity游戏开发者的日常调试手段你有没有遇到过这样的情况:接手一个Unity发行版游戏,想快速验证某个功能逻辑是否按预期执行,或者排查一个偶发的崩溃,但手头只有打包后的Assembly-CSharp.dll&a…...
别再手动改代码了!用Vivado的VIO IP核实时调试你的FPGA设计(附UART实例)
实时交互式FPGA调试革命:Vivado VIO核的UART实战指南 调试FPGA设计时,你是否经历过这样的痛苦循环:修改一行代码→全编译→下载比特流→测试→发现问题→再修改...这种"石器时代"的工作流正在吞噬工程师的创造力。Xilinx Vivado中的…...
工业级SCADA革命:FUXA零代码可视化平台如何重塑工业监控决策
工业级SCADA革命:FUXA零代码可视化平台如何重塑工业监控决策 【免费下载链接】FUXA Web-based Process Visualization (SCADA/HMI/Dashboard) software 项目地址: https://gitcode.com/gh_mirrors/fu/FUXA 在工业4.0和数字化转型浪潮中,传统SCADA…...
You-Get下载视频音画不同步?可能是FFmpeg路径没配对!附Mac/Linux/Windows三平台配置指南
You-Get跨平台音视频同步解决方案:FFmpeg环境配置全指南 当你在Mac上流畅使用you-get下载合并好的视频,切换到Windows却遭遇音画分离的尴尬时,问题往往出在FFmpeg的环境配置上。本文将带你深入理解多平台下FFmpeg的配置差异,并提…...
UE4SS:解锁虚幻引擎游戏的无限可能性,让每个玩家都能成为创造者
UE4SS:解锁虚幻引擎游戏的无限可能性,让每个玩家都能成为创造者 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_m…...
Keil uVision调试器变量监视问题解析与解决方案
1. Keil uVision调试器变量监视问题解析在嵌入式开发领域,Keil uVision作为经典的集成开发环境(IDE),其调试功能是开发者排查问题的重要工具。但许多初次接触8051或C251架构的工程师都会遇到一个看似简单却令人困惑的问题——为什么在Watch窗口无法正确显…...
Windows任务栏透明美化终极指南:TranslucentTB从安装到精通
Windows任务栏透明美化终极指南:TranslucentTB从安装到精通 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB是一…...
端到端天基SAR系统设计
天基SAR是指将雷达子系统部署在轨道飞行器的合成孔径雷达,轨道飞行器包括但不限于地球卫星、其他行星的环绕器、航天飞机等。其中地球卫星星载SAR数量最多,应用最为广泛,本文主要对星载SAR系统设计进行介绍。1. SAR系统设计端到端SAR系统比一…...
