![見出し画像](https://assets.st-note.com/production/uploads/images/120638751/rectangle_large_type_2_b3063a82d7a0cc04107ef18b5e0065e7.jpeg?width=1200)
OpenAiのWhisperで聞きおこしをしよう!
聞きおこしの特集メモをまとめた際、writeout.aiが無料、と書きましたが、有料化していました。
おっとこれは?!
いま手に持っている、本日実施したシンポジウムのファイルが、ホールでの録音のためあまり音声状況がよくなくて、ちゃんと聞き起こせるのか成果物の品質がわからない状況で、1ファイルUS5ドルの課金はちょっと不安。円安だし。
![](https://assets.st-note.com/img/1698956275537-zh8o2aijEC.png?width=1200)
Whisper頑張ってみましょうか。
以下では、トライアル&エラーの過程を含めて説明した後、Whisperでの聞きおこしのコードを備忘録します。
課題1:iPadで録音したので、ファイルがMP3ではなくm4a形式。
課題2:シンポジウムの休憩時間含めて通しで録音したから、3時間超。107MBという大きなファイル。
課題3:音質が悪い。ホールでiPadで録音。(ノイズキャンセラーがついていない。)
トライアル1
色々頑張った結果、ファイルが大きくてGoogle Colabが止まってしまいました。かなり待っていたのに!
2度頑張って、ファイルが大きすぎて無理だと推測。
トライアル2
m4a形式のファイルを分割して小さなサイズにすればいいんじゃないか?と考えた。
→CAP CUTで編集してみようか。。。(動画編集ソフトで編集しろと書いているHPがあった。)
→動画形式だと、Whisperが使えず、編集したファイルを再度音声形式に変換しなければならない。(やろうと思えば、Pythonで出来るけれど。)
トライアル3
オンラインで音声ファイルを分割できるサイトがあるんじゃないか?
→VEEDというオンラインツールが使いやすいと書いているHPがあった。
→使ってみると、トライアルで1ファイルの切り出しのみ無料。
トライアル4
Mac付属のGarage Bandが使えると書いてあるHPがあった。
→複雑でよくわからない。。。習熟すれば多分これがベストアンサー。
着地点
最終的に、Online MP3 Cutterというオンラインツールで必要な部分のみいくつかのファイルに分けて切り出し。
→成功。
→オンラインツールにアップロードする必要があるので、セキュリティの問題は残ります。
D1Cの小林オーナーが、1年間に200−300のアプリを試してみる、とおっしゃっていましたが、今夜だけで10以上のいろんなサービスを使ってみました。
Macユーザーには他にはAudacityというアプリも便利そうでした。今回の実験では使っていませんが、次回の作業のときに実験したいと思います。
下記リンクはダウンロードと使い方含めて説明しているサイトです。
Whisperの使い方
ファイルのmp3化ができ、23MBくらいのファイルとして最初の講演者の話している内容を切り出して準備できました。
Whisperは、Google Colabで以下の順序で聞きおこしをすることができます。
1. 環境設定
ColabノートブックでGPUを有効にするためには、Colabのメニューバーから「ランタイム」→「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」にて「GPU」を選択します。
2. 必要なパッケージのインストール
Whisperモデルを使うために、必要なパッケージをインストールします。
!pip install git+https://github.com/openai/whisper.git
3. ファイルアップロード
以下のコードを実行して、アップロードする音声ファイルを選択します。
from google.colab import files
uploaded = files.upload()
実行するとアップロードボタンが表示されますのでコードにファイルを指示しなくてよくて便利。このボタンをクリックして、変換したい音声ファイルを選択してアップロードしてください。
4. モデルのロード
Whisperモデルをロードします。以下のコードを使って適切なモデルサイズを選択できます。
import whisper
# ここで 'base' の代わりに 'small', 'medium', 'large', 'tiny' を選ぶことができます
model = whisper.load_model("base")
普通はbaseでスタートして、結果を見てからLLMを調整するのがいいと思います。
5. 音声ファイルをテキストに変換
アップロードした音声ファイルをテキストに変換するためのコードです。
# アップロードしたファイル名に置き換えてください
audio_file = list(uploaded.keys())[0]
result = model.transcribe(audio_file)
print(result["text"])
このコードを実行すると、Whisperモデルが音声ファイルを処理し、結果をテキストとして出力します。
注意点
WhisperはGitHubから直接インストールします。GitHubのアカウントやOpenAIのAPIキーは必要ありません。
アップロードするファイルサイズによっては、処理にかなりの時間がかかる場合があります。また、Colabの利用規約によっては、あまりに大きなファイルの処理が許可されていない場合もありますので注意してください。
KeyboardInterruptはユーザーがプロセスを中断したことを示します。意図せずにこのエラーが発生した場合は、Colabのランタイムを再起動し、プロセスを再開してください。
APIを利用すると、課金ですが、日本語の聞きおこしをしてそのまま英語に翻訳する事もできるようです。
それについてはまた別に挑戦します。
動画ファイルを音声ファイルに変換する方法
なお、上記の動画ファイルを変換するためには、別の前工程が必要になります。
Whisperは基本的に音声ファイルをテキストに変換するためのモデルであり、.movなどの動画ファイルを直接扱うことはできません。
動画ファイルから音声トラックを抽出し、その音声データをWhisperで処理することは可能です。
Google Colabで.movファイルから音声を抽出してテキストに変換する手順は以下の通りです。
1. 必要なライブラリのインストール
まず、動画から音声を抽出するために`ffmpeg`をインストールします。
!apt-get install ffmpeg
2. ファイルのアップロード
Google Colabでファイルをアップロードするには以下のコードを使用します。
from google.colab import files
uploaded = files.upload()
3. 音声の抽出
アップロードされた.movファイルから音声を抽出します。
!ffmpeg -i your_video_file.mov -ab 160k -ar 44100 -vn audio_output.wav
`your_video_file.mov`はアップロードした動画ファイルの名前に、`audio_output.wav`は抽出される音声ファイルの名前に置き換えてください。
ファイル名は日本語ではなく、英語でつけておくほうがいいです。日本語はエラーの確率が高まります。
4. Whisperでのテキスト変換
抽出した音声ファイルをWhisperで処理してテキストに変換します。
import whisper
model = whisper.load_model("base")
result = model.transcribe("audio_output.wav")
print(result["text"])
動画ファイルからの音声抽出と変換はリソースを多く使用するため、ファイルのサイズや処理能力に応じて時間がかかることがあります。
(結構止まります。)
このように、習っていないことも試行錯誤しながら自力でPythonの処理ができるようになった、というのは、キャンプに参加した大きな成果です。
今のところWhisperは無料。
結果は、音声さえクリアならある程度きれいに書き出せます。
Whisper vs Notta
比較したところ、今回の音声の品質では、Nottaのほうがマシでした(それでもそのままでは使い物になりませんが。。。)
その他の新技術
ChatGPTを使って、録音から直接聞きおこしや要約作成をしてくれる機器。
現在クラファン中の中華製技術。
こういう新技術が中華製でどんどん出てきて、日本からは出てこなくなってしまっています。
この手の製品は、これらのAI技術の便利さ+マイク性能が重要なので、どうでしょうね。
ボイスレコーダーは店頭で使ってみてもよく分からなくて、結局使っている人のオススメが一番役立つと思います。
いい!けど電池のもちが悪い、とか、よさそう!だけど実は聞こえにくかった、とか色々あります。
私の用途だと、指向性マイク+ノイズキャンセラー機能は重要です。
そしてデジタル修行は続く。。。