Google Cloud Speech APIを利用して音声ファイルからテキストファイルへ変換したときのメモ。
今回はGCP:Google Cloud Plarform内で全て作業した。
Shellでの作業はGoogle Cloud Shellを用いた。
GCPの設定
APIサービスの有効化
GCPのナビゲーションメニューから、「APIとサービス」>「ダッシュボード」>「APIとサービスの有効化」から以下のAPIを有効化。
- Cloud Speech API
- Cloud Text-to-Speech API
API認証の設定
GCPのナビゲーションメニューから、[APIとサービス] > [認証情報] > [認証情報を作成] > [サービスアカウントキー]を選択し、適当な[サービスアカウント名](今回はデフォルト)を設定し、作成ボタンを押してJSONファイルをダウンロード。
続いてShellにJSONファイルをアップロードする。
$ export GOOGLE_APPLICATION_CREDENTIALS=[JSONファイル]
音声ファイルの準備
音声ファイルはGCS:Google Cloud Strageへ保存する。
画面左上の[ツールとサービス] > [Storage] > [ブラウザ] を選択し、[バケットの作成]でバケットを作成し、その作成したバケットをダブルクリックして、[ファイルのアップロード]から音声ファイルをアップロード。
Pythonスクリプトの準備
必要に応じてアップデートしておく。※念のため
sudo pip install --upgrade google-cloud-speech
スクリプト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(
sample_rate_hertz=16000,
encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
language_code='en-US')
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', 'utf-8')
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://[mypacket]/speach.flac
Google Cloud Consoleのカレントディレクトリにoutput*.txtgが実行結果になる。
まとめ
GCPのストレージにある音声ファイルに対してテキスト変換を行った。
音声ファイルをGCSへアップロードしないで他レンタルサーバーの公開URLにおいてRecognitionAudioのuriへセットしたがエラーとなったのでこのままでは使えないようだ。
またCloud Speach APIは60分以降は料金が発生するので注意。
コメント