当前位置: 首页 > 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(一)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue 3有哪些新特性
  • Linux5-echo,>,tail
  • 站群服务器适用于哪些场景当中?
  • 算法入门-贪心1
  • wordpress源码资源站整站打包32GB数据,含6.7W条资源数据
  • vscode中如何配置c/c++环境
  • C++ Linux多线程同步通信-信号量
  • Linux系统应用之知识补充——OpenEuler(欧拉)的安装和基础配置
  • linux-centos 设置系统时间
  • python selenium网页操作
  • GlusterFS分布式存储
  • 【OJ刷题】双指针问题6
  • pWnOS的第二种全新解法(ssh私钥破解、webmin漏洞提权)
  • C++3D迷宫
  • opencv之图像梯度
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Android框架之Volley
  • CSS 三角实现
  • css系列之关于字体的事
  • idea + plantuml 画流程图
  • JavaScript 基本功--面试宝典
  • Java读取Properties文件的六种方法
  • ng6--错误信息小结(持续更新)
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 前端之React实战:创建跨平台的项目架构
  • 嵌入式文件系统
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 数组的操作
  • 终端用户监控:真实用户监控还是模拟监控?
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​数据链路层——流量控制可靠传输机制 ​
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (分类)KNN算法- 参数调优
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .Net 知识杂记
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net(C#)中String.Format如何使用
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .net反混淆脱壳工具de4dot的使用
  • .net下的富文本编辑器FCKeditor的配置方法
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • :如何用SQL脚本保存存储过程返回的结果集
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @软考考生,这份软考高分攻略你须知道
  • [ linux ] linux 命令英文全称及解释