Google Cloud Speech API로 자동 음소거

회의와 인터뷰 음원이 자동으로 글을 만드는 꿈.


2017년 8월 API 업데이트, 최대 3시간 사운드 사용 가능
사운드 데이터 → txt 파일 변환에 도전해 봤습니다.
인터뷰 중 바로 자동 전송이 가능하도록 환경은 외출 시에도 사용할 수 있는 GCP의 클라우드 콘솔을 사용했다.
※ 참고
http://jp.techcrunch.com/2017/08/15/20170814google-updates-its-cloud-speech-api-with-support-for-more-languages-word-level-timestamps/

환경, 언어 등

  • Google Cloud Speech API
  • Google Cloud Storage
  • python
  • Speech API 사용


    다음 URL을 참조하여 Speech API를 활성화합니다.
    음성은 60분 전에는 무료이며 이후 15초당 0.6센트를 받는다. 구글 클라우드 플레이어폼을 처음 이용하면 1년간 유효 300달러(2017년 8월까지)
    https://cloud.google.com/speech/docs/getting-started
    인증 정보는 서비스 계정 키 파일(JSON 형식)으로 작성됩니다.

    Google Cloud Shell을 통한 API 인증


    Google Cloud Shell을 시작하고 인증용 JSON 파일을 오른쪽 위부터 업로드합니다.

    업로드 후 JSON 파일로 인증합니다.
    $ export GOOGLE_APPLICATION_CREDENTIALS=hogehoge.json
    

    사운드 파일 만들기


    mp3와 AAC 등을 직접 사용할 수 없어 대응하는 형태로 전환해야 한다.저는 많은 시도를 해 봤습니다. 아래의 설정을 추천합니다.
  • FLAC
  • 모노
  • 16000Hz
  • 16bit
  • (참조: 온라인 변환 서비스)
    https://audio.online-convert.com/convert-to-flac

    바꾸다


    FLAC 파일을 Google Cloud Strage에 업로드합니다.
    Google Cloud Strage 제작 방법은 다음과 같습니다.
    https://cloud.google.com/storage/docs/quickstart-console?hl=ja
    python 파일이 케이스에 직접 업로드되었습니다.본업 엔지니어가 아니라서 튜토리얼을 보면서 얘기를...
    transcribe.py
    # !/usr/bin/env python
    # coding: utf-8
    import argparse
    import io
    import sys
    import codecs
    import datetime
    import locale
    
    def transcribe_gcs(gcs_uri):
        from google.cloud import speech
        from google.cloud.speech import enums
        from google.cloud.speech import types
        client = speech.SpeechClient()
    
        audio = types.RecognitionAudio(uri=gcs_uri)
        config = types.RecognitionConfig(
            encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
            language_code='ja-JP')
    
        operation = client.long_running_recognize(config, audio)
    
        print('Waiting for operation to complete...')
        operationResult = operation.result()
    
        d = datetime.datetime.today()
        today = d.strftime("%Y%m%d-%H%M%S")
        fout = codecs.open('output{}.txt'.format(today), 'a', 'shift_jis')
    
        for result in operationResult.results:
          for alternative in result.alternatives:
              fout.write(u'{}\n'.format(alternative.transcript))
        fout.close()
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(
            description=__doc__,
            formatter_class=argparse.RawDescriptionHelpFormatter)
        parser.add_argument(
            'path', help='GCS path for audio file to be recognized')
        args = parser.parse_args()
        transcribe_gcs(args.path)
    
    마지막으로 다음 동작을 실행하고 일정 시간을 기다린 후에 전환이 끝납니다.
    $ python transcribe.py gs://バケット名/testmusic.flac
    

    주의

  • 최장 3시간
  • 음성사서함으로 1시간 정도 소요
  • 구어라 문장부호가 전혀 없다(영문판에 문장부호가 자동으로 붙을 것 같아 일본어판 발매가 기대된다)
  • 가끔'헤르츠 설정이 다르다'는 오류가 발생하기 때문에python 파일에 샘플링 값을 설정합니다
  • config = types.RecognitionConfig(
            encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
            sample_rate_hertz=16000, #この行を追加
            language_code='ja-JP')
    
  • 오랜만에 Import Error:cannot import name speech가 생겨서 업데이트
  • sudo pip install --upgrade google-cloud-speech
    

    정밀도(감각)


    정밀도와는 무관하다

  • 마이크 감도
  • 말하는 속도
  • 소음
  • 정밀도와 관련된 물건

  • 말하는 사람의 말투(명확한지 여부)
  • 방 반응
  • 의외로 방의 반향이 상당히 높은 정밀도에 영향을 줄 수 있다.에어컨의 소음 등 소음은 시끄러워도 정밀도에 영향을 주지 않는다.어쩌면 쉽게 헤어질지도 몰라요.

    좋은 웹페이지 즐겨찾기