当前位置: 首页 > news >正文

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 in Action


语言支持

  • 阿拉伯语、荷兰语、英语、波斯语、法语、德语、印地语、意大利语、日语、韩语、普通话、波兰语、葡萄牙语、俄语、西班牙语、瑞典语和越南语
  • 商业客户可根据具体情况支持其他语言。

性能

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题最长回文串

题目&#xff1a; 题解&#xff1a; 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&#xff0c;我们之前浅浅提过&#xff1a;这里 另外对于栈&#xff0c;这里有更加详尽的介绍&#xff1a;CSTL常用数据结构1详解---栈&#xff08;stack&#xff09;-CSDN博客 这个系列将会更加深入地从函数原型开始用详细的例子解释用法 首先这一篇介绍的是一个非常…...

阿里云 Quick BI使用介绍

Quick BI使用介绍 文章目录 阿里云 Quick BI使用介绍1. 创建自己的quick bi服务器2. 新建数据源3. 上传文件和 使用4. 开始分析 -选仪表盘5. 提供的图表6. 一个图表的设置使用小结 阿里云 Quick BI使用介绍 Quick BI是一款全场景数据消费式的BI平台&#xff0c;秉承全场景消费…...

LLMs之SuperPrompt:SuperPrompt的简介、使用方法、案例应用之详细攻略

LLMs之SuperPrompt&#xff1a;SuperPrompt的简介、使用方法、案例应用之详细攻略 目录 SuperPrompt的简介 SuperPrompt的使用方法 1、prompt SuperPrompt的案例应用 SuperPrompt的简介 SuperPrompt项目是一个开源项目&#xff0c;旨在通过设计特定的提示词来帮助我们更好…...

Java中的Web服务开发:RESTful API的最佳实践

Java中的Web服务开发&#xff1a;RESTful API的最佳实践 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代Web应用开发中&#xff0c;RESTful API是构建可伸缩、易于维护的Web服务的关键。…...

Linux创建虚拟磁盘并分区格式化

快速创建一个虚拟磁盘 你可以通过以下步骤在Linux上虚拟一个磁盘&#xff0c;并将其挂载到 /mnt/ 目录下&#xff1a; 步骤 1: 创建一个虚拟磁盘文件 使用 dd 命令创建一个虚拟磁盘文件&#xff08;例如大小为1GB&#xff09;&#xff1a; dd if/dev/zero of/root/virtual_…...

面试经典150题——最后一个单词的长度

目录 题目链接&#xff1a;58. 最后一个单词的长度 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;反向遍历 Java写法&#xff1a; C写法&#xff1a; 解法二&#xff1a;逆天解法 思路 存在的问题 总结 题目链接&…...

【C++】入门基础(上)

Hi&#xff0c;好久不见&#xff01; 目录 1、C入门小基础 1.1 祖师爷--Bjarne Stroustrup&#xff08;本贾尼斯特劳斯特卢普&#xff09; 1.2 C参考文献 1.3 书籍推荐 2、C的第一个程序 3、命名空间 3.1 namespace的价值 3.2 namespace的定义 3.3 命名空间的使…...

Mac中Twig模版安装与SSTI漏洞学习

感谢大佬的文章参考学习。 SSTI&#xff1a;https://www.cnblogs.com/bmjoker/p/13508538.html Homebrew&#xff1a;快速开始 - Homebrew 中文网 Homebrew安装 一键快捷安装&#xff1a;默认使用中科大的源 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homeb…...

【20.5 python中的FastAPI】

python中的FastAPI FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;基于 Python 3.6 的类型提示。它利用了 Python 3.7 的新特性&#xff0c;如类型提示&#xff08;Type Hints&#xff09;&#xff0c;来自动生成 A…...

研1日记13

正态分布&#xff1a; toTenor&#xff1a;转数字变为0-1 加载模型&#xff1a; model youmodel() model.load("路径") 测试单个样本&#xff1a;...

Go语言错误处理详解

Go语言以其简洁、高效和并发能力著称。在实际开发中&#xff0c;错误处理是一个不可避免且至关重要的部分。本文将深入探讨Go语言中的错误处理机制&#xff0c;涵盖其原理、使用方法、最佳实践&#xff0c;并提供丰富的代码示例和中文注释。 一、错误处理的基本概念 在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创建最简单的一个窗口

先看运行效果 再上代码&#xff1a; #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题根据身高重建队列

题目&#xff1a; 题解&#xff1a; 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攻击跨站请求伪造攻击也称客户端请求伪造攻击 两种攻击最主要的区别是一个在服务器&#xff0c;一个在客户端。 文章目录 前言 什么是SSRF攻击? 1.分类&#xff1a; 针对服务器的 SSRF 攻击&#xff1a; 针对后端系统的SSRF攻击&#xff1a; …...

C语言 | Leetcode C语言题解之第405题数字转换为十六进制数

题目&#xff1a; 题解&#xff1a; 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 快速教程说明 适用人群 有其他语言编程基础&#xff0c;或了解过python的群体&#xff0c;至少需要知道变量、对象、函数等基本概念想快速通过python实现一些功能&#xff0c;却不想了解python的底层实现的人群想快速了解python语言框架的人群有兴趣了解python的任何人…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...