AzureのSpeech to Text APIを使う時、いろいろ方法がありますが、簡単に自動化するにはspxコマンドを使うのがお手軽です。
REST APIをcurlコマンド経由で行う場合 → 制限あり
REST APIは単発で実行するために、長時間に渡る処理は苦手です。
また、ファイルをアップロードするAPIは小さなファイルでしか対応できません。
大きなファイルを処理しようとすると、AzureBlobストレージにアップロードしないといけません。(Azureでなくても公開Webサーバーに置く方法もあるが、いずれにしても直接ファイルを処理できない)。
ということで、やりたいことに対して、やるべきステップが多いです。
一見、curlコマンド一発でできそうに見えてその後に「あれ?短いファイルしかできないぞ」というステップで後輩が数時間空転するのも無意味な時間なので、「RESTではやめとけ」というのが初弾のアドバイスになります。
そこでspxコマンド
Azure上では文字起こしの一番お手軽な方法として紹介されていながらも、Qiita上ではタグとして存在さえしないspxコマンド。マイナーだけど手軽です。
とはいえAPIを利用する面倒さは残る
キーとIDの違い
BingChatもまともに説明できないくらい、サブスクリプションキーとサブスクリプションIDと読んだり表記ブレが激しい。
speech to text と呼んだり音声変換と呼んだり表記ブレが激しいということに関しては人間もAIも間違えます。
途中で名前を変えると大混乱という教訓。
spxコマンドのつらみ
spxコマンドもインストールは面倒です。
単なるAPIのラッパースクリプトかと思いきや、.NETのアプリケーションです。したがってUbuntuやMacにspxコマンドをインストールする場合にも、.NETフレームワークが必要です。私の手元のUbuntu20上でもLinux向け.NETはインストールできるのですが、最新版の.NET7がインストールされます。その状態でspxを動かそうとすると、spxは.NET5で動くんだけどあなたの環境は.NET7だからダメだよね。というエラーメッセージが出ます。ところが、.NET5はサポート停止されいてます。回避策としては、.NET7をアンインストールして、.NET6にダウングレードすることでspxコマンドが使えます。
spxコマンドはdockerでも配布されているので、依存関係を気にしたくない人や.NETのバージョンをコマンド一つのために変えたくない人はdockerバージョンを使うといいでしょう。この手の依存関係の激しさをみると、本気でクロスコンパイルしたかったらgo言語が一番バランスの良さが際立ちます。