我在 picovoice 网站上训练了自定义唤醒词并下载了 ZIP 文件。然后我将其解压并复制文件路径。这是我的代码:
import struct
import pyaudio
import pvporcupine
porcupine=None
paud=None
audio_stream=None
try:
porcupine=pvporcupine.create(access_key="blahblah", keywords=["C:\\Users\\maste\\Downloads\\Jarvis_en_windows_v3_0_0.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()
但是我收到此错误:
ValueError: One or more keywords are not available by default. Available default keywords are:\njarvis, hey barista, bumblebee, americano, ok google, terminator, blueberry, hey siri, grasshopper, alexa, porcupine, hey google, computer, pico clock, picovoice, grapefruit
我做错了什么?它与内置唤醒词配合得很好。我猜我的文件路径格式有问题。
遇到的错误与文件路径无关。Picovoice Porcupine 引擎在错误消息中明确指出的自定义唤醒词 Jarvis 不可用。
问题在于尝试在仅支持默认唤醒词的 Picovoice Porcupine 引擎的免费层中使用自定义唤醒词。自定义唤醒词训练和使用是付费功能。
可以执行以下操作之一来解决此问题:
-
使用默认唤醒词:
从
pvporcupine.create()
函数中移除keywords
参数,或使用受支持的默认唤醒词列表中的一个,例如“jarvis”或“bumblebee”。
python
porcupine = pvporcupine.create(access_key="blahblah")
或
python
porcupine = pvporcupine.create(access_key="blahblah", keywords=["bumblebee"])
-
订阅 Picovoice:
如果需要使用自定义唤醒词,则需要订阅 Picovoice。订阅后,将获得一个允许使用自定义
.ppn
模型文件的访问密钥。
python
porcupine = pvporcupine.create(access_key="your_picovoice_access_key", keywords=["C:\\Users\\maste\\Downloads\\Jarvis_en_windows_v3_0_0.ppn"])
确保替换
your_picovoice_access_key
为的实际访问密钥。
完成上述更改之一后,的代码应能正常运行,并能使用默认或自定义唤醒词检测唤醒词。
标签:python From: 78773550