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的任何人…...
安规标准考核题库-2(IEC 62477-1:2012+AMD1:2022 )
本题库严格对标 IEC 62477-1:2012《电力电子变换器系统和设备安全要求 第 1 部分:总则》AMD1:2022 修订版,贴合储能双向 PCS 的设计、测试、认证全流程场景,分为判断题、单选题、多选题三类,所有题目均附标准条款依据与详细解答。…...
2026AI大模型入门学习教程(建议收藏),大模型入门学习路线,非常详细看这一篇就够了!
一、LLM Fundamentals 基础 1. 机器学习的数学基础 在掌握机器学习之前,理解支撑这些算法的基本数学概念非常重要。 线性代数:这是理解许多算法(特别是深度学习算法)的关键。主要概念包括向量、矩阵、行列式、特征值和特征向量、…...
企微私域工具数据安全与合规:5个必查项
某公司用了半年企微私域工具,突然发现客户手机号被工具厂商用来发营销短信。法务一查,原来是协议里写了“数据可用于优化产品”。选【企微私域工具】,数据安全比功能更重要。今天列出5个必须检查的安全合规点。企微工具选择要把安全放第一位&…...
NaViL-9B创意设计辅助:UI截图理解+改进建议与文案优化生成
NaViL-9B创意设计辅助:UI截图理解改进建议与文案优化生成 1. 平台简介 NaViL-9B是上海人工智能实验室推出的原生多模态大语言模型,具备强大的文本理解和图像分析能力。这款模型特别适合设计师、产品经理和营销人员使用,能够帮助用户快速理解…...
记录一次线上问题排查:JDK序列化问题
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
实战应用:基于快马平台开发类似ahflt.sys的文件操作监控工具
实战应用:基于快马平台开发类似ahflt.sys的文件操作监控工具 最近在研究Windows内核驱动开发时,发现ahflt.sys这类文件系统过滤驱动特别有意思。它能够在系统底层监控文件操作,实现各种高级功能。作为一个开发者,我决定在InsCode…...
ai赋能开发:让快马平台智能助手教你如何用最新jdk特性重构旧代码
今天在维护一个老项目时,发现了一段基于JDK 8的用户过滤排序代码。作为一个持续关注Java新特性的开发者,我决定用最新JDK 17的特性来重构这段代码。正好最近在用InsCode(快马)平台做项目,发现它的AI辅助功能特别适合用来做这种代码现代化改造…...
3D Face HRN场景应用:为教育课件快速创建解剖学面部3D模型
3D Face HRN场景应用:为教育课件快速创建解剖学面部3D模型 1. 解剖学教学的数字化革命 传统解剖学教学面临一个根本性挑战:如何让学生直观理解面部复杂的三维结构?教科书上的平面插图无法展示肌肉层次,实体模型又昂贵且无法个性…...
如何快速掌握GBFR Logs:终极《碧蓝幻想:Relink》战斗数据监控指南
如何快速掌握GBFR Logs:终极《碧蓝幻想:Relink》战斗数据监控指南 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/…...
千问3.5-2B部署案例:RTX 4090 D单卡开箱即用,免配置镜像快速上手
千问3.5-2B部署案例:RTX 4090 D单卡开箱即用,免配置镜像快速上手 1. 千问3.5-2B模型简介 千问3.5-2B是Qwen系列中的小型视觉语言模型,它能够同时理解图片内容和处理自然语言。这个模型特别适合需要结合视觉和语言理解的任务场景。 1.1 核心…...
