目的
wavファイルの音声データのテキスト化
文字おこしをしなければならない状況になっため、めんどくさいのでどうにか機械でできないかと思いgoogle speech apiの利用を考えました。
実際使えるようになるのに1週間かかってしまいましたが・・・・
この内容は他の記事とは違った部分だけ書きますので、準備段階はほかの記事をご参照ください。
#準備
・GCPでアカウント作成
・Speech apiの有効化
・storageでバケット作成(音声データアップロード)
・サービスアカウントの作成(jsonファイルの用意)
・音声ファイルの用意(自分はサンプルのFLACファイルとWAVを使用しました)
※音声ファイルはビットレートを16,000もしくは44100にして使用しています。
※音声ファイルはモノラルにしておいてください。
参照記事
Google Cloud Speech API を使った音声の文字起こし手順
超初心者でもgoogle-cloud-speechを使えるが、つまずいた所はある。
Google Cloud Speech APIで音声の自動文字起こし
Cloud Speech API の基本
手順
基本は参照指示に沿って作業を行ったのだが、異なる部分が出てきた。
google.api_core.exceptions.PermissionDenied: 403 The caller does not have permission
これは@hanlioさんとは違うかな?と考えてしまった。また日をまたいで何回かサービスアカウントを作成しなおしたり
していたので問題ないかと思っていた。
なので同じくteratailで質問をすると、
403 The caller does not have permission
前の記事と同じですよ!と回答をいただく。(ごめんなさい!)
一度上記のエラーが出た後に、サービスアカウントを作り直したら、このエラーは出なくなりました。
さぁ次のエラーです
google.api_core.exceptions.InvalidArgument: 400 sample_rate_hertz (16000) in RecognitionConfig must either be unspecified or match the value in the FLAC header (44100).
これは文字通りサンプリングレートをチェックしてほしいとのことで、このときはまだ音声ファイルの調整はしてなかったので
音声ファイルのサンプリングレートを確認の上、作成したpythonファイルと合わせます。
さぁ、サンプルレートを合わせました!
そしたら次のエラーです(泣)
google.api_core.exceptions.InvalidArgument: 400 Invalid audio channel count.
channel count ということでチャンネルの数が違いますとのこと
音声ファイルがステレオでとられていたのでモノラルに変更しました。
さぁ今度こそ!
Waiting for operation to complete... :~$
・・・何もおこらないぞ?
もう一回だ!
Waiting for operation to complete... :~$
(※注 shell未経験者)
何も起こらない・・・でもほかの人は直下にデータが出ているといっている。
shellにファイル一覧するコマンドがあったようなと探してみる。
現在のディレクトリの一覧は** ls
** ということなので
打ってみると、あった!ありました!output.txtが!
次は表示です!どうやるんだ!ローカルに保存はどうするんだ! 調べてみると・・・
dl 【ファイル名.txt】
でダウンロードできました!
変換されてる!やったね!
さてここまででサンプルのFLACは読み込めたぞ!
実際は自分が使いたかったのはwavファイルなので修正します。
pythonファイルの
encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
を
encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
に変更
さて8分で20MBのwavファイルを使用して、実行する。
無事ファイル生成完了です。
感想
参考記事を書いてくださった皆様、助かりました。ありがとうございます。
音声認識も期待通りの精度でしたので、うれしいですね。
久々にやり切った感がありました。