音声認識APIとして知られるAmiVoice Cloud Platform(https://acp.amivoice.com/main/)。音声認識の精度が高く、価格もリーズナブル。文字起こしにおすすめのサービスです。
しかしAmiVoice Cloud Platformを使うには、Java、Python、PHPといった言語を使ってコードを書く必要があるため、使えるようになるまでのハードルが高いのが難点。
curlコマンドを使って実行すればコードを書く必要がないため、比較的ハードルは低くなるのですが、16MB以内のサイズでなければ使えないという制限があり、とても短い音声ファイルしか文字起こしできません。
そこで、いくつかのツールを組み合わせて工夫してみることにしました。試行錯誤の結果、AmiVoice Cloud Platformを使って文字起こしできるようになったので、その方法を解説します。
【準備】ツールのセットアップをしておく
まず準備として下記のツールを使えるようにセットアップします。
・ffmpeg
【windows】FFmpegをインストールする手順
https://fukatsu.tech/windows-ffmpeg
・jq
Windowsでjqコマンドを導入してJSONレスポンスを整形・抽出する
https://zenn.dev/unsoluble_sugar/articles/e47b37b04dd1153d5b29
※バッチファイルでは、このサイトにあるようにjq-win64.exeをjq.exeにリネームしたものを使っています。リネームしない場合には、バッチファイルの該当箇所を書き換えてください。
これらのサイトでも説明していますが、実行ファイルを置いたフォルダに必ずPATHを通す設定をしておいてください。
【環境変数を設定】
あと、これはとても重要なのですが、Windowsの環境変数の設定で、「AppKey」という環境変数を作り、そこに、AmiVoice Cloud Platformの「マイページ」→「接続情報」から確認できる「APPKEY」の情報をあらかじめ登録しておいてください。
環境変数の作り方などは、上記のPATHの通し方などが参考になると思います。上記では「PATH」という環境変数に、フォルダ情報を登録していますが、ここでは、「APPKEY」という環境変数にAmiVoiceのAPPKEY情報を登録することになります。
これで準備は終了です。
【バッチファイル】バッチファイルを作る
そして、これがバッチファイルの本体となります。このバッチファイルは、どこに設置してもいいのですが、とりあえずデスクトップなどにおくと使いやすいでしょう。ファイル名は特に何でもいいのですが、「MP3AmiVoice.bat」といったわかりやすい名前をつけておきます。
echo off
rem MP3作成
ffmpeg -i "%~f1" -vn -ac 1 -ar 44100 -ab 128k -acodec libmp3lame -f mp3 "output.mp3"
rem MP3を15分ごとに分割
ffmpeg -i "output.mp3" -f segment -segment_time 900 -c copy out%%03d.mp3
rem 作業ファイルを削除
del output.mp3
rem 出力先のテキストファイルを新規作成
echo %date:~0,4%%date:~5,2%%date:~8,2% >%date:~0,4%%date:~5,2%%date:~8,2%.txt
rem 分割したファイルをamivoiceにかけ、出力先ファイルに追記
set /a counter=0
for %%A in (out*.mp3) do (
if exist %%A (
echo %%A >>%date:~0,4%%date:~5,2%%date:~8,2%.txt
curl -X POST -F a=@%%A "https://acp-api.amivoice.com/v1/recognize?d=-a-general&u=%AppKey%" | jq -r .text >>%date:~0,4%%date:~5,2%%date:~8,2%.txt
del %%A
set /a counter=counter+1
)
)
なお、コピペがめんどくさいという人のため、バッチファイル本体を公開します。このバッチファイルに、音声ファイルをドラッグアンドドロップすると、文字起こしされたテキストファイルが出力されます。ちょっと時間がかかりますが、テキストが出力されるまで気長に待ちましょう。
【バッチの解説】
バッチファイルの動作としては
・音声ファイルをMP3化する
・音声ファイルを16MB以下になるように分割
・文字起こしするためのテキストファイルを作成
・順次文字起こしして、テキストファイルに追記
という動作をしています。
なお、テキストファイルには、文字起こしに使った分割したファイル名についても記載するようにしています。
こうすることで、バッチが途中でこけている場合や、順番通りに文字起こしされていない場合にも対策をとることができるからです。
【読みやすくする】 テキストを読みやすくするにはエディタを使う
出力されるテキストファイルは改行などが入っていないため、読みにくいと感じるかもしれません。その場合、エディタなどで「。」を「。<改行>」のように置換すると読みやすくなります。
<改行>ですが、僕の場合、秀丸エディタの正規表現というものを使って置換しています。
ちなみに、サクラエディタの場合、こんな感じで置換できるようです
改行・タブ・空白行の置換や削除にも便利なサクラエディタで使える正規表現とは?
https://proengineer.internous.co.jp/content/columnfeature/5432
AmiVoice Cloud Platformにはデモもあるので、使えるかどうか、一度試してみてはいかがでしょうか。
また、このバッチで動かないという場合には、同じAmiVoiceのエンジンを使ったVoXT(https://voxt.jp/)などのサービスを試すのもアリだと思います。
音声データからの文字起こしが面倒だと感じている方は、この方法を試してみてください。
コメント