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/
환경, 언어 등
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 등을 직접 사용할 수 없어 대응하는 형태로 전환해야 한다.저는 많은 시도를 해 봤습니다. 아래의 설정을 추천합니다.
Google Cloud Shell을 시작하고 인증용 JSON 파일을 오른쪽 위부터 업로드합니다.
업로드 후 JSON 파일로 인증합니다.
$ export GOOGLE_APPLICATION_CREDENTIALS=hogehoge.json
사운드 파일 만들기
mp3와 AAC 등을 직접 사용할 수 없어 대응하는 형태로 전환해야 한다.저는 많은 시도를 해 봤습니다. 아래의 설정을 추천합니다.
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
주의
# !/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
config = types.RecognitionConfig(
encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
sample_rate_hertz=16000, #この行を追加
language_code='ja-JP')
sudo pip install --upgrade google-cloud-speech
정밀도(감각)
정밀도와는 무관하다
정밀도와 관련된 물건
Reference
이 문제에 관하여(Google Cloud Speech API로 자동 음소거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kokky/items/659bde4cdc8ce5c78e29텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)