(legacy-170720) Google Speech API quick start

2020. 7. 14. 02:14실천해본것들

Google Speech API를 사용해 보았다. 

 

본 demonstration은 

 

https://cloud.google.com/speech/docs/getting-started

 

https://brunch.co.kr/@sunghyunlim/24

 

https://cloud.google.com/docs/authentication/getting-started?authuser=0#creating_the_service_account

 

을 베끼고 window 10에서 수행했다.

 

0. 준비 사항

 

google cloud sdk - https://cloud.google.com/sdk/

 

gcloud 명령어로 authentication key를 받아야 함

 

git - https://git-scm.com/

 

git bash 로 실행할 때 한국어가 안깨져서 나온다.

audacity - http://www.audacityteam.org/

 

음성을 녹음할 때 필요하다.

 

녹음할때 sampleRate를 알아야 하며

 

형식은 flac으로 한다. 

 

※ Stereo 가 아니라 꼭 Mono로 해야한다! 안그러면 

 

Invalid audio channel count 가 뜬다. 

 

자세한 사항은 하단 링크 참조.

 

https://github.com/GoogleCloudPlatform/google-cloud-php/issues/424 

 

1. Google cloud platform 등록 및 환경설정

 

 

 

Google cloud platform에 try it free로 시작한다. 

 

 

과금체계는 존재하지만 처음 사용자한테는 1년, 300달러의 무료 크레딧이 제공된다. 

 

참고한 블로그에서는 60 days free trial이라 되어있었는데 더 후하게 준 듯 싶다. 

 

사용자 정보가 더 필요해서인가... 

 

기간 만료후 자동으로 요금부과가 되지 않으니 편하게 쓰자.

 

다만 카드 등록을 해야하므로 VISA나 Mastercard가 되는 카드를 미리 준비하는게 좋다.

 

그리고 과금체계는 CPU(GPU), 저장공간, 네트워크 등등 세분화 되어있다. price list 참조.

시작하면 우측 바에서 제공하는 instruction을 따라해보며 개요를 파악할 수 있다. 

 

SpeechToText로 프로젝트 생성.

 

혹은 google cloud sdk 를 설치한 상태에서 CLI로 gcloud init을 이용하여 프로젝트를 생성 할 수 있다.

 

 

2. Speech API 추가

 

 

 

https://cloud.google.com/speech/

 

document를 확인 할 수 도 있고, 

 

위 사진과 같이 즉석에서 녹음한 것을 원하는 언어의 텍스트로 변환 해 볼 수도 있다. 

 

 

 

https://console.cloud.google.com/flows/enableapi?apiid=speech.googleapis.com

 

다음 링크로 speech api를 등록하자.

 

 

 

등록 하는 과정에서 사용자 인증정보를 요구한다. 추가해주자. 

 

 

서비스 계정키를 만들어서 원하는 곳에 저장해주자

 

 

 

환경변수 GOOGLE_APPLICATION_CREDENTIALS 에 서비스 계정키를 추가해주자

 

set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>

set GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>

 

cmd에서 간단히 할수도 있다. 

 

 

 

3. 음성 파일 추가 

 

음성파일을 올려둘 버킷(클라우드 저장소) 를 만들자. 좌측 대시보드에서 Storage를 찾으면 된다. 

 

 

버킷을 만든다.

 

 

audio-speech-storage로 만들었다.

 

 

 

만든뒤에는 음성파일을 버킷에 올렸다. 이 때 사용할 파일은 공개링크 체크를 해야한다. 

 

4. sync-request.json 작성 

 

 

 

 

Request에 관련된 정보를 담은 sync-request.json 을 만든다. 음성파일 만들때 설정한 sampleRate를 적고,

 

audio 부분에서는 "uri":gs://<bucket>/<audio file>" 로 기입하자

 

저장위치는 컴퓨터 어디든 상관없다. 하지만 나중에 curl 명령을 할 때 같은 위치에 있어야한다. 

 

 

5. 인증 및 접근 토큰 얻기 

 

 

gcloud auth activate-service-account --key-file=service-account-key-file
 
gcloud auth application-default print-access-token
access_token

첫번째 코드 - 서비스 계정키로 인증 

 

두번째 코드 - 접근 토큰 GET

 

 

 

 

위처럼 한다. 

 

print-access-token 으로 나온 토큰은 복사해둔다. 

 

6. Request 및 결과 얻기

 

git bash 에서 다음과 같이 요청한다. 

curl -s -H "Content-Type: application/json" \
   
-H "Authorization: Bearer access_token" \
    https
://speech.googleapis.com/v1/speech:recognize \
   
-d @sync-request.jsoncurl -s -H "Content-Type: application/json" \
   
-H "Authorization: Bearer access_token" \
    https
://speech.googleapis.com/v1/speech:recognize \
   
-d @sync-request.json
 
curl -s -H "Content-Type: application/json" \
   
-H "Authorization: Bearer access_token" \
    https
://speech.googleapis.com/v1/speech:recognize \
   
-d @sync-request.json
 
curl -s -H "Content-Type: application/json" \
   
-H "Authorization: Bearer access_token" \
    https
://speech.googleapis.com/v1/speech:recognize \
   
-d @sync-request.json
 

 

https://storage.googleapis.com/audio-speech-storage/sample_start_school.flac

 

음성파일은 위 링크의 것을 썼다. 

 

 

 

결과는 다음과 같다. 

 

 

7. 결론

 

- 구두점이 붙지 않는다 -> 문장 간 구분 필요

 

- 생각보다 성능이 좋다

 

- 대화의 turn은 충분히 간격을 둬야만 인식이 된다

 

- python으로 추후에 연동해볼 수도.