Raspberry Pi에서 Google Cloud Speech API 사용
소개
Google Cloud Speech API 은 Google이 2016년 3월 23일(현지 시간)에 클라우드 관련 이벤트 'GCP Next 2016'에서 발표한 기계 학습에 의한 음성 인식 기능입니다. 2017년 2월 10일 현재 회사의 클라우드 플랫폼 'Google Cloud Platform'의 일부로 베타 버전을 사용할 수 있습니다.
Google Cloud Speech API 데모 동영상
Raspberry Pi로 움직여보세요
준비
먼저 Google Cloud SDK 문서의 '데비안 / 우분투 용 빠른 시작'에 따라 설정합니다. 마지막 단계에서 Cloud SDK를 설치하려고 하는 단계에서 apt-transport-https
가 부족하다고 하면 sudo apt-get install apt-transport-https
로 설치합니다.
gcloud init
명령을 사용하여 SDK 초기화가 끝나면 Google Cloud Speech API Python Samples의 설명에 따라 설정을 진행합니다. 이 때 virtualenv
가 설치되어 있지 않은 경우에는 sudo apt-get install virtualenv
로 설치합니다.
GitHub에서 다운로드 (또는 복제)하면 Python의 모든 샘플이 다운로드되므로 speech/grpc
로 이동하여 실행합니다.
여기서, GOOGLE_APPLICATION_CREDENTIALS
에 관해서, 디폴트의 유저인 pi
의 경우에는 이하와 같이 지정합니다.
$ export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/.config/gcloud/application_default_credentials.json
마지막 pip install -r requirements.txt
는 상당히 시간이 걸리지만 잠시 기다리면 끝납니다.
$ pip install -r requirements.txt
Downloading/unpacking grpcio==1.1.0 (from -r requirements.txt (line 1))
Downloading grpcio-1.1.0.tar.gz (7.2MB): 7.2MB downloaded
Running setup.py (path:/tmp/pip-build-Jx8iQk/grpcio/setup.py) egg_info for package grpcio
…
Successfully installed grpcio PyAudio grpc-google-cloud-speech-v1beta1 six requests google-auth enum34 protobuf futures oauth2client googleapis-common-protos pyasn1 rsa pyasn1-modules httplib2
Cleaning up...
한 번에 다운로드가 끝나면 스트리밍 샘플을 이동해보십시오. 샘플 언어는 영어(미국)로 설정되어 있으므로 먼저 영어로 말합니다. 잘 인식되면 다음과 같이 인식 결과가 표시됩니다.
$ python transcribe_streaming.py
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
...
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
This is a pen
그런 다음 언어 설정을 변경하고 다시 시도해 봅니다. nano
와 같은 텍스트 편집기에서 transcribe_streaming.py
를 열고 request_stream
에서 언어를 설정하는 부분을 변경합니다. Google Cloud Speech API가 지원하는 언어는 문서의 '언어 지원'에 나열되어 있으므로 그 중에서 일본어를 나타내는 ja-JP
를 설정합니다.
변경 전def request_stream(data_stream, rate, interim_results=True):
...
recognition_config = cloud_speech_pb2.RecognitionConfig(
...
language_code='en-US', # a BCP-47 language tag
)
...
변경 후def request_stream(data_stream, rate, interim_results=True):
...
recognition_config = cloud_speech_pb2.RecognitionConfig(
...
language_code='ja-JP', # a BCP-47 language tag
)
...
이제 일본어로 인식됩니다.
$ python transcribe_streaming.py
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
...
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
東京特許許可局
특정 단어나 힌트 지정
Google Cloud Speech API에서는 특정 단어나 힌트를 지정하여 컨텍스트에 맞게 음성 인식을 조정할 수 있다고 합니다. 시도하면 "라즈베리 파이"와 일본어로 발음하면 "raspberry pi"로 인식됩니다. 그러나, 「Arduino(아르두이노)」라고 「알디노」등을 해석되어 버립니다. 그래서 일본어에 특정 단어를 추가하기 위해 스크립트의 시작 부분에 인코딩 설정을 추가합니다.
#!/usr/bin/python
# coding=utf-8
또는
#!/usr/bin/python
# -*- coding: utf-8 -*-
특정 단어나 힌트는 다음과 같이 제공됩니다. 힌트로서 주어지는 구에는 제한 이 있습니다만, 그 범위내에서 주는 것으로 고유명사등이 정확하게 인식되게 됩니다.
hints = cloud_speech_pb2.SpeechContext(
phrases=['アルドゥイーノ']
)
recognition_config = cloud_speech_pb2.RecognitionConfig(
encoding='LINEAR16',
sample_rate=rate,
language_code='ja-JP',
speech_context=hints
)
결론
클라우드 기반 음성 인식 엔진은 Cloud Speech API에도 몇 가지 있습니다만, 일본어를 포함한 많은 언어를 지원하는 것은 큰 매력일 것입니다. 또, 향후 Raspberry Pi 용 도구의 충실에 힘을 쏟는다는 보도 도 있어, 향후 한층 더 사용하기 쉽게 될 것을 기대할 수 있을 것 같습니다.
참조
준비
먼저 Google Cloud SDK 문서의 '데비안 / 우분투 용 빠른 시작'에 따라 설정합니다. 마지막 단계에서 Cloud SDK를 설치하려고 하는 단계에서
apt-transport-https
가 부족하다고 하면 sudo apt-get install apt-transport-https
로 설치합니다.gcloud init
명령을 사용하여 SDK 초기화가 끝나면 Google Cloud Speech API Python Samples의 설명에 따라 설정을 진행합니다. 이 때 virtualenv
가 설치되어 있지 않은 경우에는 sudo apt-get install virtualenv
로 설치합니다.GitHub에서 다운로드 (또는 복제)하면 Python의 모든 샘플이 다운로드되므로
speech/grpc
로 이동하여 실행합니다.여기서,
GOOGLE_APPLICATION_CREDENTIALS
에 관해서, 디폴트의 유저인 pi
의 경우에는 이하와 같이 지정합니다.$ export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/.config/gcloud/application_default_credentials.json
마지막
pip install -r requirements.txt
는 상당히 시간이 걸리지만 잠시 기다리면 끝납니다.$ pip install -r requirements.txt
Downloading/unpacking grpcio==1.1.0 (from -r requirements.txt (line 1))
Downloading grpcio-1.1.0.tar.gz (7.2MB): 7.2MB downloaded
Running setup.py (path:/tmp/pip-build-Jx8iQk/grpcio/setup.py) egg_info for package grpcio
…
Successfully installed grpcio PyAudio grpc-google-cloud-speech-v1beta1 six requests google-auth enum34 protobuf futures oauth2client googleapis-common-protos pyasn1 rsa pyasn1-modules httplib2
Cleaning up...
한 번에 다운로드가 끝나면 스트리밍 샘플을 이동해보십시오. 샘플 언어는 영어(미국)로 설정되어 있으므로 먼저 영어로 말합니다. 잘 인식되면 다음과 같이 인식 결과가 표시됩니다.
$ python transcribe_streaming.py
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
...
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
This is a pen
그런 다음 언어 설정을 변경하고 다시 시도해 봅니다.
nano
와 같은 텍스트 편집기에서 transcribe_streaming.py
를 열고 request_stream
에서 언어를 설정하는 부분을 변경합니다. Google Cloud Speech API가 지원하는 언어는 문서의 '언어 지원'에 나열되어 있으므로 그 중에서 일본어를 나타내는 ja-JP
를 설정합니다.변경 전
def request_stream(data_stream, rate, interim_results=True):
...
recognition_config = cloud_speech_pb2.RecognitionConfig(
...
language_code='en-US', # a BCP-47 language tag
)
...
변경 후
def request_stream(data_stream, rate, interim_results=True):
...
recognition_config = cloud_speech_pb2.RecognitionConfig(
...
language_code='ja-JP', # a BCP-47 language tag
)
...
이제 일본어로 인식됩니다.
$ python transcribe_streaming.py
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
...
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
東京特許許可局
특정 단어나 힌트 지정
Google Cloud Speech API에서는 특정 단어나 힌트를 지정하여 컨텍스트에 맞게 음성 인식을 조정할 수 있다고 합니다. 시도하면 "라즈베리 파이"와 일본어로 발음하면 "raspberry pi"로 인식됩니다. 그러나, 「Arduino(아르두이노)」라고 「알디노」등을 해석되어 버립니다. 그래서 일본어에 특정 단어를 추가하기 위해 스크립트의 시작 부분에 인코딩 설정을 추가합니다.
#!/usr/bin/python
# coding=utf-8
또는
#!/usr/bin/python
# -*- coding: utf-8 -*-
특정 단어나 힌트는 다음과 같이 제공됩니다. 힌트로서 주어지는 구에는 제한 이 있습니다만, 그 범위내에서 주는 것으로 고유명사등이 정확하게 인식되게 됩니다.
hints = cloud_speech_pb2.SpeechContext(
phrases=['アルドゥイーノ']
)
recognition_config = cloud_speech_pb2.RecognitionConfig(
encoding='LINEAR16',
sample_rate=rate,
language_code='ja-JP',
speech_context=hints
)
결론
클라우드 기반 음성 인식 엔진은 Cloud Speech API에도 몇 가지 있습니다만, 일본어를 포함한 많은 언어를 지원하는 것은 큰 매력일 것입니다. 또, 향후 Raspberry Pi 용 도구의 충실에 힘을 쏟는다는 보도 도 있어, 향후 한층 더 사용하기 쉽게 될 것을 기대할 수 있을 것 같습니다.
참조
관련 기사
Reference
이 문제에 관하여(Raspberry Pi에서 Google Cloud Speech API 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mayfair/items/92ae1d4d7c93a1355b02텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)