Google assistant service with custom wake word detection #2

이 글은 내 로봇에 음성인식 서비스를 적용하는 과정에 대해 설명한다.

나는 Google assistant service와 custom wake word detection를 활용하여 음성인식 모듈을 만들고 있다.

이 서비스를 활용하여 나만의 키워드로 Google assistant를 호출할 수 있다.


Google Assistant는 2가지의 라이브러리를 제공한다.

Google assistant library와 Google assistant service

두 라이브러리의 차이점은 얼마나 아래 레벨까지 접근할 수 있는지 정도이다.

라이브러리는 쉽게 사용할 수 있고, 딱 필요한 기능들만 제공한다면

서비스는 Google assistant의 기능들을 하나하나 컨트롤 할 수 있다.

라이브러리로는 내가 원하는 기능들 (custom wake word detection, get answer text, get speech_text)이 어려울 것 같아서 서비스를 사용하기로 했다.


Google assistant service에 대한 설명은 아래를 참고한다.

The Google Assistant Service gives you full control over the integration with the Assistant by providing a streaming endpoint. Stream a user audio query to this endpoint to receive a Google Assistant audio response. You can generate bindings for this API from a variety of languages (for example, Go, Node.js, C++, and Java) on all platforms supported by gRPC.

여러 언어로 google assistant service를 연동할 수 있다.


Google assistant service 튜토리얼 자체는 아래와 같다.

  1. Google console에서 등록
  2. 디바이스에서 인증 파일 다운로드
  3. 샘플 예제 돌리기

그대로 따라서 동작시켜 봤다.


예제 소스 코드

이 코드는 내가 참고한 코드이다. 구글에서 제공하는 예제 코드이다.

https://github.com/googlesamples/assistant-sdk-python/tree/master/google-assistant-sdk/googlesamples/assistant/grpc

실제 서비스에 적용하기 위해서는 코드레벨에서 접근해야 한다.

이 코드는 Enter 를 누르고 음성인식을 하는 코드이다.

https://github.com/googlesamples/assistant-sdk-python/blob/master/google-assistant-sdk/googlesamples/assistant/grpc/pushtotalk.py#L455-L461

continue_conversation = assistant.assist()

위의 코드가 Enter 키를 누르면 동작하는 코드이다.

이 때 음성을 녹음하고, Assistant 대답을 만들어내는 곳이다.


나는 이 코드에다가 Custom wake word detection 라이브러리를 적용하여

내가 원하는 이름을 부를 때, Google assistant가 동작하도록 하였다.

사용한 Custom wake word detection은 snowboy 라는 라이브러리다.

https://github.com/Kitt-AI/snowboy

이 코드를 google assistant에 적용하기 위해서 python3로 다시 빌드를 하여서 적용하였다.

또 내가 원하는 키워드를 디텍션하기 위해서는 키워드를 트레이닝한 모델이 필요하다고 하다.

이것은 snowboy에서 제공을 한다.

스노우보이 키워드 학습

https://snowboy.kitt.ai/dashboard

위에 사이트에 가서 원하는 키워드로 학습을 한다.


코드

내 코드는 그래서 snowboy의 hot word detection과 google assistant service를 적용한 것이다.

이제는 이 코드에서 특정 명령이 들어올 때, 로봇으로 신호를 보내는 것은 연결할 것이다.

https://github.com/passionbull/gAssistant_with_custom-wakeword

라즈베리파이에서는 아래 깃헙 코드에서 시작하는게 좋다.

https://github.com/senyoltw/custom-hotword-for-aiy-voicekit


동영상

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다