43
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Google Cloud Speech-to-Text APIでマイク入力からストリーミング音声認識をする

はじめに

2018年に以下の記事を投稿しました。

おかげさまで結構なアクセス数や「いいね」をいただいたのですが、先日「同じ手順を踏んでもエラーが出て動作しない」とコメントいただきました。
調べてみたところ、コードでインポートしているライブラリ(grpc-google-cloud-speech-v1beta1)が2019年4月ごろにサポート終了していることが原因なようです。
ということで、マイク入力でストリーミング音声認識を行う方法を再度記事としてまとめました。

動作環境

以下の環境で試しています

GCPでプロジェクトを作成したり、gcloudの初期設定をしたり、Pythonのセットアップしたり、必要なパッケージをpipでインストールしたりは、前述の記事とほぼ変わりませんので参考にしてください。

Speech APIとCloud Speech-to-Textは別物??

GCPのコンソールから「speech」で検索すると、以下のように3種類のAPIが見つかります。

WS000000.JPG

以前は「Speech API」を使っていたのですが、どうやら現在は非公開になっているようで、「Cloud Speech-to-Text API」に名称も機能も変わっているようです。
今回はこちらを使うのでこれを有効化します。
もう1つの「Cloud Text-to-Speech API」は文字を音声にするAPIなので今回は説明しません。

公式のサンプルコードで試す

公式サイトに Pythonでストリーミング音声認識するためのサンプルコード があります
まずはこれをコピペして適当な名前(この記事ではtranscribe_streaming_mic.py)と名前をつけてしてローカル(この記事ではCドライブ直下)に保存します。
このままだと英語用になってますので、途中の

language_code = 'en-US'

となっている部分を

language_code = 'ja-JP'

と日本語を認識する設定になるように書き換えます。

これでコマンドプロンプトからstreamオプションをつけて実行してみます。

console
c:\>transcribe_streaming_mic.py stream

Traceback (most recent call last):
  File "C:\transcribe_streaming_mic.py", line 7, in <module>
    from google.cloud.speech import enums
ImportError: cannot import name 'enums'

enumsがインポートできないというエラーが出てしまいました(汗・・

speech-v1を使うように変更

pipでgrpc.google.cloud.speech-v1を追加インストールします。

pip install grpc.google.cloud.speech-v1

そして、サンプルコードで以下のようにライブラリをインポートしている部分があります。

from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types

これを以下のようにspeech_v1をインポートするように書き換えます。

from google.cloud import speech_v1 as speech
from google.cloud.speech_v1 import enums
from google.cloud.speech_v1 import types

これで準備が整ったので再度実行してます。

console
c:\>transcribe_streaming_mic.py stream
(中略)
warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)

今度は認証のエラーが出てしまいました(汗・・

サービスアカウントキーの作成

GCPコンソールの「APIとサービス > 認証情報」からサービスアカウントキーを作成します。

WS000001.JPG

サービスアカウントキーに適当な名前(この記事ではspeech-to-text)をつけます。
役割は何が最低限必要かよくわからなかったのですが、Projectの「閲覧者」を与えれば結果的に動作しました。

WS000002.JPG

これでjsonファイルを作成します。(この記事ではcredential.jsonとしてCドライブ直下に保存します)

そしてコマンドプロンプトから、環境変数としてこのjsonを指定します。

set GOOGLE_APPLICATION_CREDENTIALS=C:\credential.json

準備完了

こんどこそ準備が整ったので実行します。
PCのマイクに向かって喋ると認識された文字が出てくるはずです。

WS000003.JPG

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
43
Help us understand the problem. What are the problem?