티스토리 뷰

개발/Cloud (GCP)

speech api 사용해보기

Jaeyeon Baek 2017.08.17 08:50

Google Cloud Platform (GCP) 가 막강한 이유중에 하나가 이미 잘 만들어진 API 를 기반으로 제2, 제3의 서비스를 손쉽게 만들 수 있기 때문이겠다. 많은 전문가들의 이야기처럼 지금 세상은 유용한 API 에 대해 실제 내부 동작을 몰라도 그 서비스를 wrapping 하는 모듈을 만들어 장사를 하는 세상이다. 이렇듯 누구나 쉽게 사용할 수 있도록 소프트웨어를 API 형태로 배포해서 서비스하는 것을 보통 SaaS (Software as a Service) 형태라고 칭하는데, 이번에는 GCP 에서 제공하는 대표적인 SaaS 중 하나인 speech api 에 대해 살펴보고 사용해보도록 하겠다. - 앞서 이야기한 SaaS 에 대해 설명하는 재미있는 링크를 여기 첨부하도록 한다. 개념을 잡는데 큰 도움이 될 것이다.


speech api 를 사용을 위해서는 우선 GCP 콘솔로 접속하고 아래처럼 APIs & services 라이브러리로 이동하면 되겠다.


그럼 아래와 같이 사용할 수 있는 서비스 목록을 확인할 수 있는데 여기서 Google Cloud 기계 학습 쪽에 Speech API 를 선택하도록 하자.


링크로 들어오면 브라우저에서 바로 테스트해 볼 수 있는 APIs Explorer에서 사용해 보기 메뉴도 있지만 여기서는 바로 코드를 활용해보도록 하겠다. API  를 활용하는 방법은 문서를 클릭하면 되겠다.  


위에 링크를 타고 들어가면 VIEW DOCUMENTATION 이라는 메뉴를 확인할 수 있는데 APIs 에 대한 다양한 레퍼런스를 제공해주기 때문에 어렵지 않게 실습할 수 있을 것이다. 혹시 이 과정을 따라가기 어려운 분들을 위해 참고할 수 있는 파이썬 코드를 GitHub 을 통해 제공하도록 하겠다. 코드 내용의 대부분은 GCP 에서 제공해주는 예제와 크게 다르지 않기 때문에 무엇을 참고해도 상관 없다. (GitHub 에는 개인 음성 파일까지 함께 제공 함)

https://github.com/jybaek/gcp_speech_api/


모든 작업은 mac 을 통해서 진행되었는데, 음성 파일을 만드는 부분에서 조금 해맸던 것 같다. 누군가 유사한 작업을 할 때 도움이 될 수 있도록 여기 음성 파일 제작에 대한 팁을 공유하도록 한다.


1. QuickTime Player 를 통해 음성 녹음 (m4a 확장자로 떨어짐)

2. iTunes 를 통해 m4awav 로 변환

3. 터미널에서 sox 커맨드를 통해 raw 로 변환


API 문서에는 wav 파일도 지원을 하는 것 처럼 나와있지만 실제로 사용해봤을 때 뭔가 알 수 없는 에러가 발생했다. 관심 있으신 분들은 아래 더보기를 클릭하고 로그를 확인해보시면 되겠다.

더보기


이제 실행 결과를 확인해볼 차례인데 놀랍게도(?) 정확한 결과를 얻을 수 있었다. 

결과를 얻어오는데 다소 긴 시간 (2.95 sec) 이 소요되어 아쉬움은 남지만 짧은 문장에 대해서 정확한 결과를 출력하는 점에서 높은 점수를 주고 싶다. 긴 문장일 때는 어떤 결과가 나올지 알 수 없지만 그 부분도 기대가 된다. 또한 한글로 결과를 출력 하다보니 문자열 인코딩 문제로 python 2 에서는 정상적인 결과를 얻을 수 없었다. 코드를 약간 수정하면 해결될 부분이지만 당장 서비스로 무엇을 할게 아니기 때문에 넘어가도록 하고, 사용자는 API 를 가지고 앞으로 무엇을 할 수 있을지 고민만 하면 되겠다.


개인적으로는 실시간 음성을 처리하는 로직을 만들어서 붙여보면 재미있을 것 같은데 이건 클라우드와 별개로 공부가 필요한 부분인 듯 하다. 이게 가능하면 집안에 개인 비서를 두는 것도 어렵지 않겠는데 정작 비서한테 무슨 말을 시켜야하지? (...) 결국은 아이디어 싸움인 듯.


Update

mic 로 음성을 입력 받고 실시간으로 화면에 출력해주는 것도 구글에서 예제가 제공된다. 언어를 한국어로 변경하고 python3 에서 정상 동작하는 예제를 위에서 언급된 GitHub 에 업로드 해뒀으니 참고하실 분들은 참고하면 좋다. 이제 정말 음성에서 확인된 Text 를 파싱해서 처리하는 아이디어만 있으면 상품화가 가능하다.





댓글
  • 프로필사진 비밀댓글입니다 2017.09.07 10:14
  • 프로필사진 BlogIcon Jaeyeon Baek 결론부터 말씀드리면 어렵습니다. 별도의 구조로
    mic 대기하는 모듈을 만들고 google speech를 wrapping 해야 합니다. 또한 내부에서 일정시간 간격으로 google speech를 갱신해줘야 하겠네요. 도움이 되셨기를 바랍니다.

    https://cloud.google.com/speech/limits#content
    2017.09.07 12:08 신고
  • 프로필사진 hr 도움 됐어요ㅠㅠㅠ! 답변 감사합니다:) 2017.09.11 01:29 신고
  • 프로필사진 BlogIcon Jaeyeon Baek 도움이 되셨다니 다행이네요. :-) 2017.09.11 06:51 신고
  • 프로필사진 초보 주신 소스코드를 실행시켜보았습니다

    하지만 Error speech import error 라는 에러가 발생하며 정상적으로 실행이 되지 않습니다 이 경우 어떻게 해야할까요...?
    2018.06.14 05:25 신고
  • 프로필사진 BlogIcon Jaeyeon Baek pip로 스피치 모듈 설치하는 부분을 누락하신 듯 한데 전체 에러를 복붙해서 올려주시면 도움 드릴 수 있겠습니다. :-) 2018.06.14 06:44 신고
댓글쓰기 폼