【发布时间】:2021-04-19 20:54:37
【问题描述】:
我正在尝试在 python 中实现 porcupine wakeword,并已按照 here 的说明进行操作
我有以下代码:
import pvporcupine
### Porcupine wakeword
handle = pvporcupine.create(keywords=['computer', 'jarvis'])
def get_next_audio_frame():
pass
while True:
keyword_index = handle.process(get_next_audio_frame())
if keyword_index >= 0:
# Insert detection event callback here
print('Yes sir?')
pass
但我收到以下错误:
❯ python3 porcupine.py Traceback (most recent call last): File "porcupine.py", line 10, in <module>
keyword_index = handle.process(get_next_audio_frame()) File "/home/rupstar/Computer/lib/python3.8/site-packages/pvporcupine/porcupine.py", line 129, in process
if len(pcm) != self.frame_length: TypeError: object of type 'NoneType' has no len()
【问题讨论】:
-
您将
get_next_audio_frame定义为只是pass,这意味着None被返回。那么为什么你期望handle.process(None)工作呢?根据source code,pcm参数应该是“一帧音频样本”,而不是None。该示例在get_next_audio_frame中有pass的原因仅仅是因为它是一个示例。你应该真正做点什么,而不仅仅是pass。 -
谢谢@RandomDavis...我对此很陌生,所以您的评论对我学习非常有用。所以基本上我必须告诉它听一段时间的声音然后重复直到它听到唤醒词?然后我必须让我的语音助手听命令……我想我可以轻松地整合第二位,但我会在第一位上挣扎……至少我现在有方向了。再次感谢!
-
这根本不是我要说的。我不知道
pvporcupine究竟做了什么或它是如何工作的。我只是说get_next_audio_frame必须返回音频,这意味着您必须从某个地方捕获它。网上可能有关于如何将pvporcupine与其他捕获音频的库结合使用的示例。 -
@RandomDavis 感谢您的指导,这正是我所需要的!我现在已经捕获了音频并将其成功应用到我的语音助手中,所以当我说“Jarvis”或“计算机”时,现在没有 pvporcupine(这是一个唤醒词检测器)听到我的声音,然后我可以给它发出命令来做事我的 Windows 10 电脑;例如打开应用程序,返回 wikipedia 条目,告诉我时间、日期、基于位置的天气、笑话等,等等……所有这些都来自在 WSL2 上运行的 ubuntu 命令行!
-
酷,很高兴有帮助。您可以发布您的解决方案作为答案,如果需要,可以接受。
标签: python python-3.x ubuntu-20.04