名古屋市科学館で使う音声入力コミュニケーションツール This software is released under the MIT License, see LICENSE.txt.
- ファイルを直接見ている人へ
このREADME.mdにはいくつか画像が添付されています.添付画像はGithub上でしか見られないので,下記リンクからGithubの画面を見てもらうのがわかりやすいでしょう. https://github.com/erikka-22/ncsm
音声認識APIを操作するメインプログラム.
このプログラムを実行するときには,以下の手順を踏む必要があります.
- Google Cloud Platform の設定 (初回のみ)
- python仮想環境のアクティベート
- websocketサーバ側プログラム(Processingのプログラム)の立ち上げ
本プログラムはGCPで提供されているCloud Speech-to-Text APIを利用しています.$300を上限に,1年間無料で利用できるので,よっぽど課金されることはありません.
読者として入学当初の右も左もわからなかった私を想定して書いており,かなり丁寧な説明になっています.既にGCPを利用したことがある人はやらなくてもいい手順があるでしょう.必要に応じて飛ばしてください.
また,これは2020年3月13日時点の情報です.それ以降に,ページのUIや設定方法が変更されていたり,はたまたサービスが終了していたりすることは十分あり得るので,つまづく所があれば最新の情報を確認してください.
- GCP無料トライアルの登録
まずはGCPのページにアクセス.下記リンクにアクセスしてください.
https://console.cloud.google.com/
すると,Googleアカウントのログイン画面が出てきます.ログインしてください.
ログインしたら,こんな画面が出てきます.
国は日本のまま,2箇所にチェックを入れ,左下の「同意して続行」をクリック.
国は日本のまま,利用規約にチェックを入れて,「続行」をクリック.
次の画面でも,必要事項を記入して,「無料トライアルを開始」をクリック.内容は正しいものをいれなくても,適当で問題ありません.
「APIとサービスを検索」と書かれた検索窓で,「Cloud Speech-to-Text API」と検索し,結果を選択.
「有効にする」をクリック.
その後,「課金を有効にする」をクリック.ここで課金を有効にしても,1年間は$300の無料クレジットが消費されるので,$300を超えない限り費用を請求されることはありません.ただし1年を超えると自動更新されて課金が始まるので,試し終わったらAPIを無効にすることをお勧めします.
(念のため料金設定について.60分まで無料・60分を超える分は15秒あたり$0.006という料金設定です.無料クレジット利用期間が終了した後でも,高額な請求が行くことはよっぽど無いでしょう.)
- 認証情報の作成 Cloud Speech-to-Text APIを利用するためには認証が必要です.認証とは,ユーザを識別することです.Cloud Speech-to-Text APIは従量課金制のAPIで,ユーザAが利用した分の請求がユーザBに届くことや,フリーライダー(お金を払わずに使う人)が発生することを防ぐ必要があります.そのための仕組みが認証です.
プルダウンから「Cloud Speech-to-Text API」を選択.下のラジオボタンについては,本プログラムを動かすだけならば「いいえ,使用していません」を選択.
ちなみに,Google Compute Engine はGCPで提供している仮想コンピュータ(VM),Google App Engine はウェブ/モバイルアプリ運営のためのサーバ管理等を代替するサービスです.例えば,「科学館モバイルガイドが大好評でアクセス数激増!サーバを増強しないと対応できないけど,新しいコンピュータは買えない...」的な時に利用できそうな感じのサービスですね.
そして,「必要な認証情報」をクリック.
サービスアカウント名の欄は適当に埋めてください.何でもいいです.
役割はProject>オーナーを選択してください.キーのタイプはJSONを選択してください.
そして「次へ」をクリック.
すると,「サービスアカウントとキーが作成されました」と表示されるので,表示を閉じてください.
ここからは,自分のパソコンの設定を変更する作業を行います. 「My F 7AC2 irst Project-(英数字羅列).json」というファイルがダウンロードされていることを確認してください. 確認できたら,「My First Project-(英数字羅列).json」を安全な任意のディレクトリに移動してください.重要な情報が入ったファイルなので,うっかり消してしまったり,うっかりGithubで公開してしまったりする危険性の無いディレクトリに置いてください.
そしたら,環境変数GOOGLE_APPLICATION_CREDENTIALSを設定して,「My First Project-(英数字羅列).json」を指定します.詳しくは下記URLを見てください. https://cloud.google.com/docs/authentication/getting-started?hl=ja
ちなみにfishだと,config.fishに
set -x GOOGLE_APPLICATION_CREDENTIALS '/path/to/the/directory/My First Project-(英数字羅列).json'
と追記すればOKです.
本プログラムを実行する際は,仮想環境で実行してください. 仮想環境でないと,モジュールenums,typesがインポートエラーになってしまいます.
一応,必要なモジュールをインストールした環境を用意したので,それを利用して実行してみてください.(venvというディレクトリが,仮想環境のディレクトリです.)
下記のコマンドで仮想環境をアクティベートできます.
筆者はfishを利用していたので,bashの場合のやつは確認できてないです.zsh等その他のシェルを利用している場合は各自調べてください.
(bashの場合) $ source path/to/ncsm/venv/bin/activate
(fishの場合) $ source path/to/ncsm/venv/bin/activate.fish
requirements.txtも用意しました.自身で作成した環境に必要なモジュールをインストールして実行しても大丈夫です.もしトラブルが起きた時は,
- Google Cloud SDKのインストール
- Cloud SDK ツールの承認 辺りが原因として考えられる気がするので,ググって対応してください.
google_cloud_speech_v1.pyはaftertaste(Processingのプログラム)と対になっています. websocketという規格で通信を行っており,aftertasteがサーバ側,google_cloud_speech_v1.pyがクライアント側になっています. 2つのプログラムを動かすことで,アプリケーションを実行できます.この際,必ずサーバ側(aftertaste)から立ち上げてください.クライアント側(google_cloud_speech_v1.py)から立ち上げると,通信エラーでプログラムが止まってしまいます.
文字列 | 内容 |
---|---|
connected | 音声文字起こしを始めるフラグ |
end | 音声文字起こしを終わるフラグ |
done | 文字起こし結果をJSONファイル書き込むフラグ |
z + 数字 | 展示物のユニークID(aftertasteに一覧表があります) |
数字のみ | 似顔絵風顔アイコンのユニークID |
aftertaste(Processing)とwebsokcetで通信して,数字列を送るプログラム. Processing側プログラムを変更して,動作確認したいけども,声は出しづらい状況...っていうときに使ってください.
google_cloud_speech_v1.pyで利用されている自作モジュールがあるディレクトリ.
実行のための仮想環境のディレクトリ.