[英]Segmentation fault when running "assistant_library_demo.py" using the AIY voice kit and Raspberry Pi
我是一个非常新的程序员,想尝试使用 Google Assistant API 的 AIY 语音套件。 我有一个分步指南,它几乎告诉我如何设置它,但现在当它启动并运行时,指南告诉我运行“assistant_library_demo.py”,以确保谷歌助手理解你。 我已经完成了麦克风检查和声音检查,效果很好。
但是,当我运行它时,我只会得到
pi@raspberrypi:~/AIY-projects-python $ src/examples/voice/assistant_library_demo.py
Segmentation fault
我试过谷歌,但只发现分段错误意味着程序崩溃了。 我不知道从这里开始做什么,因为我不太擅长编程。 如果我需要提供更多信息,请告诉我。
这是我试图运行的代码
import logging
import platform
import sys
from google.assistant.library.event import EventType
from aiy.assistant import auth_helpers
from aiy.assistant.library import Assistant
from aiy.board import Board, Led
def process_event(led, event):
logging.info(event)
if event.type == EventType.ON_START_FINISHED:
led.state = Led.BEACON_DARK # Ready.
logging.info('Say "OK, Google" then speak, or press Ctrl+C to quit...')
elif event.type == EventType.ON_CONVERSATION_TURN_STARTED:
led.state = Led.ON # Listening.
elif event.type == EventType.ON_END_OF_UTTERANCE:
led.state = Led.PULSE_QUICK # Thinking.
elif (event.type == EventType.ON_CONVERSATION_TURN_FINISHED
or event.type == EventType.ON_CONVERSATION_TURN_TIMEOUT
or event.type == EventType.ON_NO_RESPONSE):
led.state = Led.BEACON_DARK
elif event.type == EventType.ON_ASSISTANT_ERROR and event.args and event.args['is_fatal']:
sys.exit(1)
def main():
logging.basicConfig(level=logging.INFO)
credentials = auth_helpers.get_assistant_credentials()
with Board() as board, Assistant(credentials) as assistant:
for event in assistant.start():
process_event(board.led, event)
if __name__ == '__main__':
main()
看来您需要加载旧版本的库才能使 V1 AIY Voice 工作。 尝试 pip3 install google-assistant-library==1.0.0
我也遇到了同样的问题。 这是我用谷歌搜索的修复程序。
从参考链接修复:
--- env/lib/python3.7/site-packages/google/assistant/library/assistant.py~ 2019-12-18 08:07:00.039021501 +0000
+++ env/lib/python3.7/site-packages/google/assistant/library/assistant.py 2019-12-18 08:31:35.365685657 +0000
@@ -100,8 +100,7 @@
self._inst = c_void_p(
self._lib.assistant_new(
self._event_callback,
- device_model_id.encode('ASCII')))
+ device_model_id.encode('ASCII'), None))
self._credentials_refresher = CredentialsRefresher(
credentials, self._set_credentials)
@@ -278,7 +277,7 @@
# void* assistant_new(EventCallback listener, const char*
# device_model_id);
- self._lib.assistant_new.argtypes = [EVENT_CALLBACK, c_char_p]
+ self._lib.assistant_new.argtypes = [EVENT_CALLBACK, c_char_p, c_char_p]
self._lib.assistant_new.restype = c_void_p
# void assistant_free(void* instance);
这可能没有帮助,但我在让我的运行时遇到了同样的问题。 在页面https://lb.raspberrypi.org/forums/viewtopic.php?t=249368 上,我发现了关于同一问题的评论:
回复:google-assistant-demo 和 googlesamples-assistant-hotword 分段错误 Quote Sun Nov 10, 2019 1:52 pm 这是由于已弃用的 google-assistant-library。 Google 助理服务不再支持启动指令检测。 不再支持“Ok Google”和“Hey Google”。 仍然可以选择使用该库。 查看 github 上的 aiyprojects-raspbian。
第二种选择是使用另一个库将语音转换为文本并将其传递给助手服务 api。 Snowboy 看起来是一个可行的选择,配置似乎相当多。
我还没有尝试过 Snowboy,但似乎有很多贴在上面,我认识的人都用过它。 此页面链接了他说适用于 Snowboy 的代码(我还没有尝试过) https://cyber-renegade.org/2017/12/21/aiy-voice-kit-voice-vad-or-hotword-activation/ Hope这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.