Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

树莓派使用porcupine进行离线唤醒,文件模型报错 #285

Open
m2474261466 opened this issue Jul 26, 2023 · 15 comments
Open

树莓派使用porcupine进行离线唤醒,文件模型报错 #285

m2474261466 opened this issue Jul 26, 2023 · 15 comments
Assignees
Labels
operation problem 用户操作问题

Comments

@m2474261466
Copy link

确认已寻找过答案

我已确认在 Github issue 页、常见问题页、文档 中都查找过,没有找到类似问题和资料。我也没有 google / bing/ 百度 / duckduckgo 到相关解答。

安装方式

手动安装

操作系统

Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux

离线唤醒相关

—— 我已确保录音、播放都正常工作才尝试 wukong-robot 。

问题描述
我使用了自定义的唤醒模型并且使用了porcupine进行唤醒,但是唤醒失败了,显示porcupine模型是英文的,语音唤醒训练的模型是中文的,
image

@m2474261466 m2474261466 added the operation problem 用户操作问题 label Jul 26, 2023
@m2474261466
Copy link
Author

已经解决,因为我的唤醒词是中文,默认的模型是en,所以不兼容,需要从官网上下载zh版本model,并在detect.py中创建实例时增加模型的路径即可

@atjason
Copy link

atjason commented Aug 26, 2023

我也遇到同样的问题,在 porcupine = pvporcupine.create() 中指定中文对应的 model,可是在运行时出现下面的错误,是 pvrecorder 不支持我的麦克风吗?同样的设备,snowboy 是能正常工作的。

Traceback (most recent call last):
File "/home/jason/audio/wukong-robot/wukong.py", line 188, in
wukong.run()
File "/home/jason/audio/wukong-robot/wukong.py", line 95, in run
detector.initDetector(self)
File "/home/jason/audio/wukong-robot/robot/detector.py", line 46, in initDetector
pcm = recorder.read()
File "/home/jason/.local/lib/python3.9/site-packages/pvrecorder/_pvrecorder.py", line 178, in read
raise self._PVRECORDER_STATUS_TO_EXCEPTION[status]("Failed to read from device.")
OSError: Failed to read from device.

@zqszqszqstvt
Copy link

请问在哪里下载的zh版本模型?

@m2474261466
Copy link
Author

m2474261466 commented Sep 7, 2023

我个人觉得可能是porcupine的问题,没有识别到麦克风的配置 ,这个问题我通过自己训练snowboy的模型替换了pvporcupine的唤醒就欧可,但是存在误唤醒的概率,可以适当的调整阈值解决。目前还有个问题我没有解决,唤醒后有时候会自动再识别一次,这个问题我目前还没有得到解决

@m2474261466
Copy link
Author

作者文档里是有的。https://console.picovoice.ai/signup

@zqszqszqstvt
Copy link

感谢

@m2474261466
Copy link
Author

客气,但是pvporcupine唤醒可能不是很好用,建议简单用snowboy唤醒,或者寻找其他替代方式进行唤醒

@zqszqszqstvt
Copy link

好的,尝试一下

@wyfaixiaoyu
Copy link

客气,但是pvporcupine唤醒可能不是很好用,建议简单用snowboy唤醒,或者寻找其他替代方式进行唤醒

snowboy好像是没办法支持Python3.10的版本了,我的Python3.10.12用snowboy报错了,好像是不能兼容了

@m2474261466
Copy link
Author

客气,但是pvporcupine唤醒可能不是很好用,建议简单用snowboy唤醒,或者寻找其他替代方式进行唤醒

snowboy好像是没办法支持Python3.10的版本了,我的Python3.10.12用snowboy报错了,好像是不能兼容了

这个项目我们目前废弃了,采用了树莓派成型的唤醒外挂,用snowboy误报率其实蛮高的,这个有时间可以再试试,不行也选择其他方案试试

@wyfaixiaoyu
Copy link

已经解决,因为我的唤醒词是中文,默认的模型是en,所以不兼容,需要从官网上下载zh版本model,并在detect.py中创建实例时增加模型的路径即可

你自定义唤醒词的时候,如果用中文,那你语言选的是什么?我看picovoice控制台,自定义唤醒词的时候,语言的下拉选项,并没有Chinese

@wyfaixiaoyu
Copy link

客气,但是pvporcupine唤醒可能不是很好用,建议简单用snowboy唤醒,或者寻找其他替代方式进行唤醒

snowboy好像是没办法支持Python3.10的版本了,我的Python3.10.12用snowboy报错了,好像是不能兼容了

这个项目我们目前废弃了,采用了树莓派成型的唤醒外挂,用snowboy误报率其实蛮高的,这个有时间可以再试试,不行也选择其他方案试试

我从bilibili上也看到了一个视频,也是成型的语音唤醒模块,Hi-Link的,就是不知道是否适用树莓派。不知道你用的是什么模块,可以推荐一下吗?

@m2474261466
Copy link
Author

客气,但是pvporcupine唤醒可能不是很好用,建议简单用snowboy唤醒,或者寻找其他替代方式进行唤醒

snowboy好像是没办法支持Python3.10的版本了,我的Python3.10.12用snowboy报错了,好像是不能兼容了

这个项目我们目前废弃了,采用了树莓派成型的唤醒外挂,用snowboy误报率其实蛮高的,这个有时间可以再试试,不行也选择其他方案试试

我从bilibili上也看到了一个视频,也是成型的语音唤醒模块,Hi-Link的,就是不知道是否适用树莓派。不知道你用的是什么模块,可以推荐一下吗?

亚博MVE01 ,但是这个是通过电平高低的形式识别的,目前还可以,但是代码需要结合你自己的业务改动下,他们官网会有对应的test code,你可以买了download下来跑一跑,我记得好像是pthon写的,不过改起来也不难

@wyfaixiaoyu
Copy link

客气,但是pvporcupine唤醒可能不是很好用,建议简单用snowboy唤醒,或者寻找其他替代方式进行唤醒

snowboy好像是没办法支持Python3.10的版本了,我的Python3.10.12用snowboy报错了,好像是不能兼容了

这个项目我们目前废弃了,采用了树莓派成型的唤醒外挂,用snowboy误报率其实蛮高的,这个有时间可以再试试,不行也选择其他方案试试

我从bilibili上也看到了一个视频,也是成型的语音唤醒模块,Hi-Link的,就是不知道是否适用树莓派。不知道你用的是什么模块,可以推荐一下吗?

亚博MVE01 ,但是这个是通过电平高低的形式识别的,目前还可以,但是代码需要结合你自己的业务改动下,他们官网会有对应的test code,你可以买了download下来跑一跑,我记得好像是pthon写的,不过改起来也不难

好的,谢谢

@m2474261466
Copy link
Author

已经解决,因为我的唤醒词是中文,默认的模型是en,所以不兼容,需要从官网上下载zh版本model,并在detect.py中创建实例时增加模型的路径即可

你自定义唤醒词的时候,如果用中文,那你语言选的是什么?我看picovoice控制台,自定义唤醒词的时候,语言的下拉选项,并没有Chinese

我们没有用picovoice,第一是模型导入后无法使用的概率较大,第二是这家公司我们无法使用对公购买定制模型,毕竟是商业用途,唤醒准确率还是很关键的。当时我们测试的时候是用的snowboy,这个训练模型成本小,可选中文,其次降低唤醒阈值可以改善误唤醒概率但是还是存在高误报率,官方默认的keyword"snowboy"倒是挺好用的,但是我们目前没法能训练出匹配多个方言的准确版本。你要是自己玩玩的话,就选择snowboy,如果你是商业用途,建议换一种唤醒方式,比如百度的解决方案尝试下,但是百度的收费好像有点贵

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
operation problem 用户操作问题
Projects
None yet
Development

No branches or pull requests

5 participants