Google cloud speech APIとマイクで実現する、音声入力によるストリーム文字起こし

はじめに

会議をしていて、音声をすぐに文字にできたらいいのに。と思うことがあり、マイクからストリーミング形式で音声認識を行い、テキスト化までできるwebサービスは無いかを色々探していたのですが、途中で止まってしまったり、認識率が悪かったりするので、一番評判のいいGoogle Cloud Speech API を試してみることにしました。

参考にしたのは、以下のサイトです。

基本設定は、この先にあるリンクを追いかけながら設定すればできます。

こちらは、ストリーミング形式でマイクから認識させる設定が参考になりました。

環境準備

#Debian / Ubuntu 用のクイックスタート
#https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu
#Create environment variable for correct distribution export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
#Add the Cloud SDK distribution URI as a package source echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
#Import the Google Cloud Platform public key curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
#Update the package list and install the Cloud SDK sudo apt-get update && sudo apt-get install google-cloud-sdk
gcloud init
1 選択 1 選択 1 選択 #(私の場合2でした)
gcloud auth list gcloud config list gcloud info
# 選択した内容が出ればOK

Google Cloud Speech API Python Sampleセットアップ

<参考>
#https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/speech/cloud-client
#https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/cloud-client/README.rst

#音声認識に必要なライブラリを入れる
mkdir /home/username/myShell/ cd /home/username/myShell/ git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

#環境構築の手順でjsonをダウンロードしているはずなので、実施サーバへへ送信。ローカルの場合は、cpでOK。 scp /home/username/ダウンロード/our-spanner-xxxxxx-xxxxxxxxx.json 192.168.10.16:/home/username/ダウンロード/

python virtualenvの環境設定

このあと、pipでツールをいれたりしますが、virtualenv を使えば、仮想のpython環境ができるので、うまくいかないときにすぐ消したり、作り直したりできます。プロンプトに(env)とかなっていれば、その環境で動いていることになります。

<参考>
https://cloud.google.com/python/setup

sudo apt install python-pip
sudo apt install virtualenv
cd /home/username/myShell/python-docs-samples/speech/cloud-client/
virtualenv env   # ここで配下にenvディレクトリができる
source env/bin/activate # プロンプトが(env)になればOK

deactivate #(env) から抜ける場合 rm -r env/ # 環境を消す場合。また、virtualenv env からやり直せる。他の名称の環境をつくるもよし

Google Cloud Speech API Python Samples を試してみる

#環境準備
virtualenv env source env/bin/activate pip install -r requirements.txt # ここで必要なツールが入る。

#サンプルの実行
cd /home/username/myShell/python-docs-samples/speech/cloud-client/
python quickstart.py python transcribe.py resources/audio.raw python transcribe_async.py resources/audio.raw python transcribe_word_time_offsets.py resources/audio.raw python transcribe_streaming.py resources/audio.raw

ここで、ちゃんと動けば、Google Cloud Speech API に繋がっていることが確認できます。参照先に記載のないサンプルに、マイクっぽいのがあったので起動したら動きました。

python transcribe_streaming_mic.py

#pyaudio などのツールが無いと言われたら、
#pip install <ツール名> で入れてから動かせばOK

ストリーミング形式での音声テキスト化

こちらのサイトを参考に、
cd /home/username/myShell/python-docs-samples/speech/cloud-client/
に「loopbak.py」と「mic.py」を保存します。

サンプルで導入した「requirements.txt」の中にあるツールが原因で、mic.pyを実行したときにimportがうまくいかないので、一度環境を消します。

deactivate #(env) から抜ける
rm -r env/ # 環境を消す

その後、環境を作り直します。
私が失敗したのは、(env)を作らずローカルでいろんなもpipしまくったり、「 requirements.txt」 で入れたものからさらに追加で作ってしまったので、全然うまく動かず、しばらく試行錯誤しました。

virtualenv env
source env/bin/activate
pip install google gcloud google-auth google-cloud-speech grpc-google-cloud-speech-v1beta1
sudo apt-get install portaudio19-dev sudo apt install python3-pip
pip install pyaudio pip install pyalsaaudio

次は、マイクのテストに入ります。

python loopback.py
pavucontrol #別の端末エミュレータから実行

#GUI画面で
#<録音>に「python3.xxx」があることと、
#<入力>に自分のマイクデバイスがあることを確認する

これでうまくいけば、晴れて「mic.py」起動できます。

python3 mic.py

これをテキストに吐き出すツールなどがあれば、さらにいいのですが、
まずはログ出力すればOKかなと思います。

 

コメント

%d人のブロガーが「いいね」をつけました。