2019年11月19日火曜日

録音ファイルを自動で文字起こしする方法


長時間の録音ファイルを効率よく文字起こししたかったのでメモ
Google Cloud Speech-to-Textを使う自動文字起こしだが、結論から言うと、少なくとも日本語の長時間音声に関して現段階では精度が低く、文字エンコードを正しく出力ができないので(私のスキル不足かも)実用上難しいと思う。
ただ、なんとか方法としては分かったので方法を記載する。2019年11月19日超下書き記事

GoogleCloudPlatformを有効にしてプロジェクトを作成する
APIでCloud Speech APIを有効化する
メニュー→ストレージ→バゲットの作成で外部公開のバゲットを作る。(外部公開しないとFlacファイルへのアクセスエラーになる)
外部公開するには一旦バゲットを作った後、メンバーの追加でallUsersを追加し、ストレージ→オブジェクト閲覧者に設定する
バゲットにFLAC音声ファイルをアップロードする。モノラルFLAC形式限定。
形式変換はこのサイトを使うと手軽。

https://audio.online-convert.com/convert-to-flac
コンソールから下記のように入力する
gcloud ml speech recognize-long-running 'gs://バケット名/音声.flac' --language-code='ja-JP' --async
処理が開始すると固有の16桁が出てくるので、進捗状況はこれで確認する。
gcloud ml speech operations describe 16桁の番号
完了すると、JSON形式で表示される。
これをテキスト化して保存したかったが、コンソールから直接コピペする以外にうまくいく方法が見当たらなかった。2019年11月19日現在
ここで表示されたJSON形式の文字列をコピーし、下記サイトに貼り付けてCSVでダウンロードする。
https://konklone.io/json/
ダウンロードしたCSVをメモ帳で開いてANSI形式でエンコードして保存→Excelで開く。

本来ならば、
gcloud ml speech operations describe 16桁の番号 > speech.json
gsutil cp speech.json gs://バケット名/
でバケットに出力し、それをダウンロードすれば良いはずだが、うまく行かなかった。(どうやってもjsonで出力される段階で日本語が正しくエンコードされない。バイナリエディタで開いても明らかにダメだった)
うまく変換できる方法を見つけた人コメント頂けると有り難いです。


参考
https://gigazine.net/news/20180824-speech-to-text-gcp-cloud-mojiokoshi/