GoogleCloud Speech-to-Textをつかって音声を文字に変換する処理をおこないます。いまではYouTubeをみるとおすすめでPython関連の動画ばっかり出てきます。周りの人がPythonサイコーといっているかのような錯覚に陥ってしまいます。みなさんはどんな感じでしょうか?

C#で文字起こしアプリをつくる

Pythonをつかって文字起こしアプリの作成できるという動画をみたのでC#でも同じことができないかとやってみました。

まずはクイックスタート: クライアント ライブラリの使用にアクセスしてプロジェクトをつくります。そしてAPIサービスの有効化で「Speech-to-Text API」を検索して、これを有効化させます。有効化させたらサービスアカウントを作成して認証情報が書かれたJSONファイルをダウンロードします。

1ヵ月に60分までなら無料

このサービスは無制限に無料で使えるわけではありません。1ヵ月に60分までなら無料ですが、それを超えると課金の対象となります。といっても法外な金額を要求されるわけではありません。15秒超過するごとに0.006ドルなのでめちゃくちゃな使い方をしなければ気にする必要はないと思います。このようなものをつくると公開したくなるのですが、この場合はユーザーがめちゃくちゃな使い方をするかもしれないので、今回は完成品をwebで公開することはしません。デスクトップアプリとして作成します。

最近はTypeScriptやGASなどもネタにして記事を書くことが多かったのですが、久々にC#でデスクトップの作成です。

といっても情報が少ない。Python関連はよく引っかかるんだけどなあ。以下の動画を参考にやってみました。

文字が小さい。これではよく見えないけどこれまでに得たC#の知識を動員してなんとか動くものができました。

Google.Cloud.Speech.V1をインストール

まずNuGetで「Google.Cloud.Speech.V1」をインストールします。そして認証情報が書かれたJSONファイルを実行ファイルが生成されるフォルダと同じ場所にコピーします。プロジェクトに参加させてプロパティで[出力ディレクトリに常にコピーする]としておけばよいでしょう。

それではコードを書いていきましょう。文字起こしができるのはwavファイルだけです。

環境変数の設定

まず最初に認証情報が書かれたJsonファイルのパスを環境変数に設定しなければなりません。これを忘れるとエラーとなります。以下のコードではEnvironment.SetEnvironmentVariableメソッドをつかって環境変数を設定しています。環境変数はEnvironmentVariableTarget.Processで設定しているのでプロセスが終わったら無効になります。

言語の設定

それから音声はどの言語なのかも指定しなければなりません。日本語なら”ja-JP”、英語なら”en-US”です。

できるのはwavファイルだけ

さて文字起こしができるのはwavファイルだけでは使いにくいです。他のファイル形式の場合はいったんwavファイルに変換してから処理をおこなうことにします。

ffmpegでwavに変換

他の形式のファイルをwavファイルに変換するためにここではffmpegを使います。ここからダウンロードしてください。

Zipファイルを解凍したらbinフォルダのなかにあるffmpeg.exeを実行ファイルがあるフォルダにコピーします。または任意の場所に保存してパスを通しておいてください。

ボタンをクリックするとダイアログが出現してファイルを選択し、選択されたファイルの音声が文字に変換されます。対応しているのはwavファイルとmp4ファイルだけです。

ためしにどうなるかやってみましたが、普通に話をしているのであればだいたい文字として取得できます。歌を歌っている動画の歌詞を文字起こしできるかもやってみましたが、これはうまくいきませんでした。