ENGINEER BLOG

ENGINEER BLOG

議事録担当なんてなくそうよ。Google Cloud Speech -to-Textを使ってみた

はじめまして。
イノベーション本部の田中です。

ここ最近、お仕事では画像認識をやっておりますが、
今回は音声認識のお話です。

皆さん、議事録書くの面倒ではないですか?
楽をしたいなーと思い、
Googleの音声認識(Cloud Speech-to-Text)を試してみたのでご紹介します。

Cloud Speech-to-Textについて

機械学習を活用して音声をテキストに変換してくれる、GoogleのAPIサービスです。
音声認識の精度が高く、多くの言語にも対応しているということで評判が良いAPIです。

詳しくは、公式サイトをご確認ください。
(https://cloud.google.com/speech-to-text/?hl=ja)

取り組み内容

今回試した内容は大きく2つです。

  • PCのマイクから認識した音声をリアルタイムでテキストに変換
  • 変換したテキストは、Googleスプレッドシートに保存

1. 環境

  • windows10
  • python3.7

2. 事前準備

いくつか事前準備が必要です。

  • Google Cloud Platform(以降、GCP)のアカウント登録と事前準備

    • プロジェクトを作成する

    • ライブラリから必要なAPIを有効にする

      • Cloud Speech-to-Text APIを有効にする
        API_speech

      • Google Sheets APIを有効にする
        API_sheet

    • 認証キーを取得する
      メニューの「APIとサービス」から「認証情報」画面を開き、
      「認証情報を作成」から「サービスアカウントキー」を作成します。
      ※キーのタイプはJSONを選択します。

      Key

      Key2

  • スプレッドシートの作成と共有設定
    テキスト化した内容をスプレッドシートに書き込むために、
    事前にスプレッドシートを作成して共有設定をする必要があります。
    共有するアドレスは、上記で取得したJSONファイルのclient_emailに記載されているアドレスを設定します。

  • 必要なパッケージのインストール

    • pyaudio(音声を録音するために必要)
      「pip install」でインストールされるpyaudioはpython3.7に対応していないようです。
      今回は以下のサイトから.whl ファイルをダウンロードして、インストールしました。
      https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio

    • google.cloud(Cloud Speech-to-Textを使うために必要)

    • gspread(スプレッドシートを使うために必要)

3. 実装

音声認識の部分は公式サイトにサンプルコードがあるので利用させて頂きます。
https://cloud.google.com/speech-to-text/docs/streaming-recognize?hl=ja#speech-streaming-recognize-python

■音声認識する言語の設定
今回は日本語の音声認識を行いたいので、サンプルコードの「language_code」を変更します。

#変更前
language_code = 'en-US'  
#変更後
language_code = 'ja-JP'  

■認証情報の設定
今回はosモジュールのos.environ()を使って認証情報の設定を行ったため、コードに以下を追加しました。

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '取得した認証キー(.json)'

■スプレッドシートに保存するためのコード

from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
import gspread

scopes = ['https://www.googleapis.com/auth/spreadsheets']
json_file = '取得した認証キー(.json)' 
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file, scopes=scopes)
http_auth = credentials.authorize(Http())

doc_id = 'ここにはスプレッドシートのidを記載(URLのhttps://docs.google.com/spreadsheets/d/以下の部分)'
client = gspread.authorize(credentials)
googlefile   = client.open_by_key(doc_id)
worksheet  = googlefile.sheet1

def gSheetEdit(text):
    worksheet.append_row([text])

実行してみた結果

私の自己紹介を音声認識してみました。
普段会話するスピードで喋りましたが、リアルタイムで音声をテキスト化し、
スプレッドシートに保存することができました。
出力されたテキストは、漢字変換も自動で行ってくれます。
流石に名前は、人それぞれですので誤変換されています。

(誤)田中優介

(正)田中佑典

output

まとめ

リアルタイムで音声のテキスト化を行い、
スプレッドシートに保存することができました。
認識の精度も高いため、簡単な議事メモとして使うことができそうです。
今後は、話者識別や専門用語を認識するようにチャレンジしてみたいです。