Python
GoogleCloudPlatform
音声認識
GoogleSpeechAPI
Vtuber

Python + Google Cloud Speech APIで電脳少女シロの発言をテキスト化したい

概要

前回の記事でVTuber月ノ美兎さんの発言を手動で集めていましたが、これをなるべく自動化できないか?というのをガチで検証した結果になります。
今回は電脳少女シロちゃんの音声で試してみます。いくぜいくぜいくぜー!
siro.jpg

やり方

VTuberの動画音声を抜き出す

Speech to Textサービスに通す

あーくまのちから、みにつーけたー

使用したもの

手順説明

下記の記事で基本的なやり方が書いてあります。
Google Cloud Speech API を使った音声の文字起こし手順
今回はこちらをベースに、ローカル環境で実行する手順を整理します。

事前準備

※Mac環境を想定
事前にPythonのインストールや、virtualenvのインストールをしておきましょう。

コマンド
# virtualenvインストール
$ pip install --upgrade virtualenv

1. Google Cloud Speech APIを有効化

Google Cloud PlatformからCloud Launcherから検索して有効化しましょう。

cloudspeechapi2.png

cloudspeechapi3.png

2. APIキー(JSON)を取得

認証情報から"サービスアカウントキー"を作成します。

cloudspeechapi6.png

下記のように作成します。作成後、JSONがダウンロードされるので、失くさないように気をつけましょう。

cloudspeechapi7.png

3. 音声データの準備

3.1 動画音声をダウンロードする。

動画のダウンロードなどをして準備します。
本当は公式に許可取ったほうがよさそう。今回は個人的利用なのでゆるして。

3.2 動画音声を変換する。

下記に変換します。
- FLAC
- mono
- 16kHz
- 16bit
変換サイトAudacityなどで変換。
もしくはsoxを使いましょう。

コマンド
brew install lame
brew install sox
sox **.mp3 --rate 16k --bits 16 --channels 1 siro_killer.flac

3.3 Google Cloud Storageにupする。

1分以上の長い動画の場合はuri指定でないと通りません。
現在はCloud Storageのみ対応らしいので、適当にバケット作ってupしましょう。

cloudstorage3.png

4. 変換プロジェクト作成

元々のPythonのサンプルでもできますが、
ローカル用に弄ったものをGithubにupしておきました。

先ほどダウンロードしたJSONファイルで認証する必要があるので、上記を使う場合はJSONファイルの場所を記載してください。

コマンド
# 適当にプロジェクトフォルダ作成
$ mkdir VTuberSpeechToText
$ cd VTuberSpeechToText/

# virtualenvを使用
$ virtualenv --python python3 env
$ source env/bin/activate

# speech to textのライブラリインストール
# 事前にファイルをダウンロードしておくこと
$ pip3 install -r requirements.txt

# 環境変数の登録が必要だが、Python内に記載済

実行

準備が完了したら、早速実行してみます。

コマンド
$ python3 transcribe_async_jp_local.py gs://バケット名/siro_killer.flac

音声が長い場合、結果が返ってくるまでそこそこ時間がかかります。シロちゃんの最新動画を見て暇つぶしします。

結果

Transcript: こんにちはしろデッドバイデイライト実況始めていきたいと思います今ねあの城に殺される予定の方が違うの一人だけでかなり目確定しましたねことで今回も右が見て分かりかと思うんですがやっぱりするの大好きなこの世界の裏の地図を切り取ってきますこちらヒルビリーですねはいヒルビリー dbd ヒルビリーかなどうでもいいですねとりあえずこのゲームで大事なことは自動車を脱出させないこと命の音流れさせないこととりあえず今回は本当にご確認と女騎士の極みになりたいと思っていますお酒は良くないということに反応頑張ります
Confidence: 0.946415364742279
Transcript: 女子チャットスイッチを切り替えました本気で行くぞ
Confidence: 0.9222100377082825
Transcript: あの結構コメントで出た何でしたっけそんなかおしで色々できるよとか教えていただいて本当によかってなかったんだな勉強になりました
Confidence: 0.9106197357177734
Transcript: クリスマスがありますよね
Confidence: 0.8669179677963257
...

全文はGithubにもupしてます。
シロちゃんのカオス発言がさらにカオスになってる件。
SpeechAPIは謀反マンだった..?

感想

話し言葉を聞き取るのはさすがにきついようですね。そもそも、ところどころ日本語が聞き取れていない部分があるので、うまく音声を加工したりすればもう少し精度良くなるかも。
IBMのSpeech to Text APIも試してみようかな。

料金について

Google Speech to Textは下記の料金体系となっています。1ヶ月単位です。

機能 0~60 分 60 分超、100 万分まで
音声認識 無料 $0.006 米ドル/15 秒(切り上げ)

意識せずに変換しまくっていると莫大なお金が請求されることになります。ご注意ください!
今回のシロちゃんの動画は20分なので、無料分を超過すると1回0.5ドル程度の料金が必要です。やりすぎて財布がぱいーんされないように気をつけなければ...

参考情報まとめ

電脳少女シロ (公式)
Google Cloud Speech API
Google Cloud Speech API ドキュメント
Pythonサンプル
Google Cloud Speech API を使った音声の文字起こし手順