You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pvporcupine加载自定义关键词文件遇IO_ERROR问题求助

问题分析与解决方案

错误核心原因

你遇到的PorcupineIOError由两个关键问题导致:

  1. 路径解析异常:Windows路径中的反斜杠未正确处理,转义字符干扰了程序对路径的识别
  2. 文件格式不匹配:你指向的是未解压的zip压缩包(或文件名错误),Porcupine仅支持加载.ppn格式的关键词模型文件

分步解决办法

1. 修正路径写法

Windows路径有两种可靠写法,任选其一即可:

  • 用双反斜杠\\转义:'C:\\Users\\Priyam\\Desktop\\hey_keya.ppn'
  • 用原始字符串(推荐),在路径前加r:r'C:\Users\Priyam\Desktop\hey_keya.ppn'

2. 处理关键词文件

从Picovoice平台下载的关键词文件是zip包,必须先解压,找到里面的.ppn格式文件,再将路径指向这个文件。比如你下载的hey keya.zip解压后会得到对应名称的.ppn文件。

3. 优化代码参数

指定keyword_paths后无需重复设置keywords参数——Porcupine会自动从ppn文件中识别关键词,同时设置两个参数可能引发冲突。修正后的核心代码片段:

porcupine = pvporcupine.create(
    access_key='你的实际access_key',
    keyword_paths=[r'C:\Users\Priyam\Desktop\hey_keya.ppn']
)

4. 检查文件权限

确保当前用户对目标ppn文件有读取权限:右键文件 → 属性 → 安全选项卡,确认当前账号拥有读取权限。

完整修正代码示例

porcupine = None
paud = None
audio_stream = None

try:
    access_key = "你的实际access_key" 
    porcupine = pvporcupine.create(
        access_key=access_key,
        keyword_paths=[r'C:\Users\Priyam\Desktop\hey_keya.ppn']
    )
    paud = pyaudio.PyAudio()
    audio_stream = paud.open(
        rate=porcupine.sample_rate,
        channels=1,
        format=pyaudio.paInt16,
        input=True,
        frames_per_buffer=porcupine.frame_length
    )
    while True:
        keyword = audio_stream.read(porcupine.frame_length)
        keyword = struct.unpack_from("h" * porcupine.frame_length, keyword)
        keyword_index = porcupine.process(keyword)
        if keyword_index >= 0:
            print("hotword detected")
            
finally:
    if porcupine is not None:
        porcupine.delete()
    if audio_stream is not None:
        audio_stream.close()
    if paud is not None:
        paud.terminate()

内容的提问来源于stack exchange,提问作者aryaamin_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:35:27