
はじめまして。
イノベーション本部の田中です。
ここ最近、お仕事では画像認識をやっておりますが、
今回は音声認識のお話です。
皆さん、議事録書くの面倒ではないですか?
楽をしたいなーと思い、
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を有効にする
-
Google Sheets APIを有効にする
-
-
認証キーを取得する
メニューの「APIとサービス」から「認証情報」画面を開き、
「認証情報を作成」から「サービスアカウントキー」を作成します。
※キーのタイプはJSONを選択します。
-
-
スプレッドシートの作成と共有設定
テキスト化した内容をスプレッドシートに書き込むために、
事前にスプレッドシートを作成して共有設定をする必要があります。
共有するアドレスは、上記で取得した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])
実行してみた結果
私の自己紹介を音声認識してみました。
普段会話するスピードで喋りましたが、リアルタイムで音声をテキスト化し、
スプレッドシートに保存することができました。
出力されたテキストは、漢字変換も自動で行ってくれます。
流石に名前は、人それぞれですので誤変換されています。
(誤)田中優介
↓
(正)田中佑典
まとめ
リアルタイムで音声のテキスト化を行い、
スプレッドシートに保存することができました。
認識の精度も高いため、簡単な議事メモとして使うことができそうです。
今後は、話者識別や専門用語を認識するようにチャレンジしてみたいです。