皮科维奇演示。

picovoicedemo的Python项目详细描述


Picovoice演示

加拿大温哥华制造

此软件包包含用于处理实时音频(即麦克风)和音频文件的演示和命令行实用程序 使用Picovoice平台。在

皮科沃伊斯

Picovoice是一个端到端的平台,用于根据您的条件构建语音产品。它可以创造语音体验 类似于Alexa和Google。但它完全在设备上运行。皮科沃伊斯

  • Private:所有内容都是脱机处理的。本质上符合HIPAA和GDPR。在
  • Reliable:无需持续连接即可运行。在
  • Zero Latency:边缘优先架构消除了不可预测的网络延迟。在
  • 准确:对噪音和混响有弹性。它的性能远远超过基于云的替代产品 *。在
  • 跨平台:设计一次,部署到任何地方。使用熟悉的语言和框架构建。在

兼容性

  • Python3
  • 可在Linux(x86_64)、Mac(x86_64)、Windows(x86_64)、Raspberry Pi(所有变体)和BeagleBone上运行。在

安装

麦克风演示使用PyAudio录制输入音频。咨询 安装指南位于PyAudio。在

sudo pip3 install picovoicedemo

使用

文件演示

它允许在音频文件的语料库上测试picovice。演示主要用于量化性能 标杆管理。它接受16kHz的音频文件。如果立体声文件 前提是它只处理第一个(左)通道。下面处理一个文件来查找唤醒实例 在位于${PATH_TO_PORCUPINE_KEYWORD_FILE}的文件中定义的短语,然后推断后续的口语命令 使用位于${PATH_TO_RHINO_CONTEXT_FILE)}的文件定义的上下文:

^{pr2}$

EHMIC演示>

它打开麦克风的音频流并检测某个特定唤醒词的声音。以下流程 从位于的文件中定义的唤醒短语实例的麦克风传入音频 ${PATH_TO_PORCUPINE_KEYWORD_FILE},然后使用文件定义的上下文推断后续的口语命令 位于${PATH_TO_RHINO_CONTEXT_FILE)}。在完成口头命令推理后,它恢复唤醒词 检测。在

picovoice_demo_mic \
--keyword_path ${PATH_TO_PORCUPINE_KEYWORD_FILE}\
--context_path ${PATH_TO_RHINO_CONTEXT_FILE)}

PyAudio识别的默认音频输入设备可能不是正在使用的设备。有一对 为了解决这个问题,在演示应用程序中加入了调试工具。首先,在控制台中输入以下内容

picovoice_demo_mic --show_audio_devices

它提供有关盒子上各种音频输入设备的信息。在Linux机器上,这是控制台输出

'index': '0', 'name': 'HDA Intel PCH: ALC892 Analog (hw:0,0)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '2'
'index': '1', 'name': 'HDA Intel PCH: ALC892 Alt Analog (hw:0,2)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '2'
'index': '2', 'name': 'HDA NVidia: HDMI 0 (hw:1,3)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '3', 'name': 'HDA NVidia: HDMI 1 (hw:1,7)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '4', 'name': 'HDA NVidia: HDMI 2 (hw:1,8)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '5', 'name': 'HDA NVidia: HDMI 3 (hw:1,9)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '6', 'name': 'HDA NVidia: HDMI 0 (hw:2,3)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '7', 'name': 'HDA NVidia: HDMI 1 (hw:2,7)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '8', 'name': 'HDA NVidia: HDMI 2 (hw:2,8)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '9', 'name': 'HDA NVidia: HDMI 3 (hw:2,9)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '10', 'name': 'Logitech USB Headset: Audio (hw:3,0)', 'defaultSampleRate': '44100.0', 'maxInputChannels': '1'
'index': '11', 'name': 'sysdefault', 'defaultSampleRate': '48000.0', 'maxInputChannels': '128'
'index': '12', 'name': 'front', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '13', 'name': 'surround21', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '14', 'name': 'surround40', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '15', 'name': 'surround41', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '16', 'name': 'surround50', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '17', 'name': 'surround51', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '18', 'name': 'surround71', 'defaultSampleRate': '44100.0', 'maxInputChannels': '0'
'index': '19', 'name': 'pulse', 'defaultSampleRate': '44100.0', 'maxInputChannels': '32'
'index': '20', 'name': 'dmix', 'defaultSampleRate': '48000.0', 'maxInputChannels': '0'
'index': '21', 'name': 'default', 'defaultSampleRate': '44100.0', 'maxInputChannels': '32'

可以看出,最后一个设备(索引21)被认为是默认的。但在这台机器上,耳机被用作 索引为10的输入设备。找到正确的索引后,可以按如下方式调用演示应用程序

picovoice_demo_mic \
--keyword_path ${PATH_TO_PORCUPINE_KEYWORD_FILE}\
--context_path ${PATH_TO_RHINO_CONTEXT_FILE)}\
--audio_device_index 10

如果问题仍然存在,我们建议将录制的音频存储到文件中以供检查。这可以通过

picovoice_demo_mic \
--keyword_path ${PATH_TO_PORCUPINE_KEYWORD_FILE}\
--context_path ${PATH_TO_RHINO_CONTEXT_FILE)}\
--audio_device_index 10\
--output_path ~/test.wav

如果在收听存储的文件后没有检测到明显的问题,请打开问题。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从IBM MQ的JMSException检测可恢复错误   java Lucene6。4.2:找不到类,尝试添加查询。   Java Pdf差异库   在Java中多线程处理我的线程   java将字符串传递给Uri。下载中的parse()   java在列表中查找原语位置   java JPA条件从另一个查询中选择   java中的强制转换和转换   java如何在没有上下文的情况下获取SOAP Web服务(Apache Axis 1.4)的调用客户端的IP地址   java Android IllegalBlockSizeException:解密中最后一个块未完成   java Jersey是否要自定义无效资源路径的错误处理?   如何将JavaCVS web项目转换为基于maven的web项目?   java如何检查通用列表是否与jUnit相等?   arraylist java。util。尝试使用迭代器时发生ConcurrentModificationException错误   使用springsecurity,jsp上的java${u csrf.token}始终为空   sql使用java从临时表中选择数据   spring验证中的java@Notnull和@Pattern无效   java如何使用jQuery将包含对象数组的对象数组传递给Spring MVC控制器?