放大メモ

無職10年目が放送大学で学生やる話

なあ、放送大学の文字起こしして全文検索したくないか?(リンク集

先に言っておく

優しいチュートリアル記事ではない

技術的な事を書いてるいつものブログに書こうとも思ったが大本のデータソースは放送大学のBSTVとBSラジオなのでこっちに書く

 

Windows11とVScodeで作ったコメントと無駄な記述がやたら多いリポジトリはここへ置いておく

GitHub - NEXTAltair/PT3Movie2Txt: 録画ファイルとかをwhisperで一気に文字起こしするやつ

 

音声から自動で文字起こししてくれるOpenAIがただ*1で配ってるwhisperってAIモデルがすごいぞって話を聞いたので試そうといろいろGoogle検索やChatGPTで調べた事

 

最終的にはPT3で録画しまくった放送大学フォルダに入ってるファイルを全部検索して文字起こしさせたい*2

 

参考にしたサイトはあるが自分の環境ではそのままでいけるわけもなく

Whisper│動画から日本語の文字起しをする方法│Mac | CGメソッド

無料でOpenAIの「Whisper」を使って録音ファイルから音声認識で文字おこしする方法まとめ - GIGAZINE

 

Pythonインストール

既にSD*3WebUIのためにVer3.10.6は入ってるんだがリリースの最新版は3.11になってるのでそれを入れて複数をVerのPythonを使い分けようと思ったらwhisperは3.10でないと動かなかった

ここは3.10動くんでそのままにしておこう

 

仮想環境の構築

仮想環境なしで上の記事は入れてるがなるべくならそうしたほうがいいと思う

具体的に何故?と問われるとPythonはバージョンごとの依存関係が複雑だからと応えられるがそれより細かいことはわからない

 

仮想環境: Python環境構築ガイド - python.jp

Python のまとめ

そのやり方についてはここで知る

カレントディレクトリでコマンド実行

うちの場合"PT3Movie2Txt"をターミナルで開いて実行

python -m venv venv

コマンドで3.10.6の仮想環境が構築されたが、3.11も入ってても常に新しいバージョンが優先されて仮想環境が構築されるわけでもないみたいだ

 

バージョンを指定して仮想環境を構築する場合

python -v 3.11 -m venv venv

3.11のバージョンしていの場合whisperが動かなかった

コレについては後で詳しく書くが3.11でも動作するかもしれない

 

 

whisperのインストール

ちょっと難航した部分

pip install -U openai-whisper

 

最新版が入ってwhisperは使えるはず

しかし、CUDAコアデバイスが見つかりません系のエラー

いろいろ調べた結果"torch"は入ってるがそれにCUDAドライバが追加された"1.13.1+cu117"となってなかった

 

PyTorch単体でインストールすればいいかと考えて公式からインストールコマンドを調べてた

pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cu117

コレで大丈夫だろうと思ったら駄目

 

+cu117にしたければ一度インストールしたPytotchをアンインストールする必要があるみたいだ

 

pip uninstall torch
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117

これで行けたpipとpip3何が違うの?

そう思ってChatGPTに聞いたらpipはPython2用、pip3はpython3用と言われた

どっちでも動くからどっちでもいいんじゃない?

知らんけど

 

2023-02-14 追記

pip3は古いので通常はpipを使う*4

min117.hatenablog.com追記終わり

 

pip uninstall torchからの再インストールをやればPython3.11環境でも動くんじゃないかとお思うが試してはない

 

 

CUDAのインストール

Gigazineの記事にはインストールしようと有るがどっかのタイミング*5で入ってるため不要だった

 nvidia-smi


CUDA version : 12.0とあるのでCUDAドライバが入ってるのはわかる

PyTorchで11.7までしかないのはおかしいとは思うが、互換性は確保されてるみたいなので動く

バグが出るかもしれないが動く

 

 

文字起こし

【Whisper】Pythonで音声ファイルを書き出ししてみよう! | AI Academy Media

 

import whisper model = whisper.load_model("base")

# result = model.transcribe("準備したファイル名を指定")

# 今回の記事ではtest.m4aを用います。

result = model.transcribe("/content/test.m4a")

print(result["text"])

 

これでターミナルに動画からの文字起こしされたものが表示される

大変なのはここから先

 

 

.tsファイルは文字起こしでエラーが出る時もある

処理していくとエラーで時々停止する

ChatGPTいわく「.tsはコンテナなので映像に使われているコーデックが動画を処理するためのffmpegに対応してないんじゃない? それかファイル自体が破損してるか」とのこと

この問題については完全に理解していない

 

それでも動かしたいので.tsは一度mp4に変換する事にした

 

それでもエラーだ

 

whisperはpipでインストールすると依存関係としてffmpeg-pythonはインストールされているので不要

しかし、ffmpegの本体は別途インストールでpathを通す*6

 

pip3 install ffmpeg

要るのか要らないのかは知らんが

  多分要る

 

ffmpeg-pythonで動画編集する - Qiita

ffmpeg-pythonを使ってみた - Qiita

 

 

 

映像を音声にする処理と音声を文字にする処理の.pyは分けよう

 

一緒にしてもいいんだけどコードが長くなってPythonなにそれ?って人間には分かりにくいので別の.pyを作る事にした

 

重複するファイルを作成する時はスキップするみたいな処理も追加した

俺のリポジトリからコード読んでもらうとわかるが

 

音声を.txtに保存する

コレが一番大変だった

詳しくはコードのコメントを読んでもらうとして

ざっくり説明

 

そもそも保存されない

whisperで文字起こしされたデータはdict(辞書)型でtxtファイルに保存するにはstr(文字列)型に変換する必要があって"import json"で"json.dumps"で変換処理が必要だった

 

txtに保存できても文字コードのまま

utf-8で文字をエンコードする必要があった

 

改行がなくて一行に全データが保存されてめちゃくちゃ読みづらい

文字起こしの結果はsegments単位で保存されてるのでそれごとに改行処理を入れる必要があった

 

OpenAIがリリースした音声認識モデル”Whisper”の使い方をまとめてみた | DevelopersIO

OpenAI Whisper のコマンドオプション - Qiita

 

 

 

終わり

終わりとはいえないんだが学習データとして食わせるには悪くない

人間がそのまま読んでも読めるものが出てきた

 

クロス討論「人工知能(AI)の未来は?前編」2020-02-01-15:45-2.txt*7

id:0 me
id:1 今日の天気を教えて今日の横浜は予想最高気温20度 最低気温話しかけるだけで様々な操作をしてくれるスマートスピーカー
id:2 今人工知能 ai を使った商品が身近なものになり ブームが巻き起こっています
id:3 ビッグデータの解析技術の進化 そして脳のシステムの解明などによって
id:4 ai は加速度的な進化を続けています
id:5 一方このまま ai が進化し続けると人間の知能を超える日が来るという予測もあります
id:6 ai の進歩は私たちの未来に何をもたらすのか
id:7 専門家たちが徹底討論します
id:8 まああの今回の部分は今までと違ってですね大人の部分と子ども分の両方が揃った ai と
id:9 いうことに向かって進んでいるので続いていくのではないかというふうに思っています 人間が置いてけぼりにされるんじゃないのかなっていうそういうふうな
id:10 ちょっとダークなイメージを抱いています もうどんどん人がこう ai を搭載したスピーカーだと意識せずに今のスマートフォンみたいにもう
id:11 普通に日常生活にあるものになっていくんじゃないかなと思っています 私たちは ai とどう付き合っていけばいいのか
id:12 ai 人工知能の最前線に迫ります
id:13 放送大学の秋水俊夫です 様々な分野の専門家をお招きし語り合うクロス討論
id:14 今回のテーマは人工知能 ai の未来についてです 司会を務めます石井真彦です今日は気になる ai について様々な角度から勉強していきたい
id:15 と思います さて秋水さんあの ai 話題ですよねそうですねあの
id:16 スマートスピーカーだとかその人と語られるロボットだとか まああの自動運転だとかですね様々な技術がまあ私たち触れ合うようになって注目されて
id:17 ますよね 単にその社会で注目されているというだけではなくて
id:18 国の方でもですねその人工知能というのは非常に注目されていると a
id:19 文部科学省で定めた2018年定めた 第3次教育振興基本計画というのがあるんですけどもちょっと読みますがそこの前文にですね
id:20 今はが国は人生100年時代を迎えようとしており 超スマート社会の実現に向けて人工知能かっこ aia ビッグデータの活動活用などの技術革新が急速に進んで
id:21 いる こうした大転換期を乗り越えすべての人が豊かな人生を生き抜くために必要な力を
id:22 身につけて活躍できるようにする上で教育の果たす力大きいというふうに言われている わけですね
id:23 このようにまあ人の寿命も増えてきたその中で技術も変化している 社会自体が第一点環境を迎えているというふうになっている
id:24 まあその第一点環境を迎える主役になっているとも言えるのがこの ai と言えると思うんですよね とはいえ
id:25 ai によってすごく便利になってきたけどじゃあ映画具体的に何やってるのかっていうのは わからないなかなかねはいまあそういった
id:26 ai に対する疑問とかそれをやっぱりあの細田役としてもその皆さんに知っていただいて 考えていただくきっかけになってもらいたいというのがまあこの
id:27 とクロス討論のまって今ということになりますそうですねそこで今日はそうした不安や疑問誤解 など
id:28 論者の方々とともに語り合っていきながら ai の未来像を探ってまいりたいと思います それでは出演者の皆さんご紹介しましょう
id:29 まずは ai の最先端の研究を行っているドワンゴ人工知能研究所所長 山川博さんですよろしくお願いしますよろしくお願いします
id:30 今日の意気込みを一言 いや今日はですねあの
id:31 皆様と一緒にですね ai の未来について まあいいあの結論に導けるように頑張っていきたいとおもいますよろしくお願いします
id:32 山川さんには ai の専門家の立場からお話しいただきます 続きまして情報社会論情報コミュニケーション論が専門の哲学者
id:33 明治大学教授大国武彦さんですよろしくお願いしますよろしくお願いします 今日の意気込みを
id:34 a ですね先ほどあの ai のわからなさっていう言葉が出ましたけれども そのわからなさが ai に対する誤解を生んでると思うんですね
id:35 でその誤解に基づいて過剰な期待が抱かれたりですね でまぁいらぬ不安が抱かれたりする方が多いと思うんですよ
id:36 なのでまあ今日はの 哲学ないしあの社会科学に基づきながらできるだけその誤解を解いていければなぁと思って
id:37 ます 大国さんには ai と人間との関わりについて哲学者の立場からお話しいただきます
id:38 さあそして現役のコンピュータープログラマーで ai に興味津々のマルチタレント池澤彩香さんですよろしくお願いします
id:39 お願いします はい意気込みですよねえっと私普段からあのソフトウェアエンジニアとして働いているんです
id:40 けれども あのプロジェクト内で ai を実際に活用したりしながら仕事をしているんですが
id:41 まだまだわからないこととかあと未来はどうなるんだみたいな疑問もあるので今回は どんどんぶつけてねあの
id:42 いきたいなと思っています池澤さんには未来を担う若い世代を代表してお話しいただきます それでは早速討論に参りましょう
id:43 クロス討論を行うにあたってテーマを用意しました最初のテーマは今の人工知能 ai ブームをどう捉えるかです
id:44 討論を始める前にまずは人工知能技術開発の歴史を見てみます 人工知能 ai が生まれてからこれまで3回のブームが起こっています
id:45 第1次ブームは1950年代から60年代に起こったとされています 迷路の解き方や数学の定理の証明
id:46 人間の言葉で対話するシステムの開発が行われました

こんな出力

 

RTX3080-10GBでVRAMとCUDAコアの消費70%って一番精度の高いlarge-v2でもそんなに食わない

SDの時はちょっと処理速度は落ちるけど省エネ意識して60%のパワーリミットかけて動かしてる

whisperの場合は100%でも60%でもパワーリミットで体感速度があまり変わらない気がする

 

 

4090だともっともっと速いんだろうな~

*1:ただで配ってるのは有料のAPIで提供してるGPTの餌にするテキストファルルを増やすためだと予想

*2:めっちゃ時間かかるな

*3:stable deffidion

*4:今更Python2環境に依存したコードを書く人は居ないので

*5:多分SD関係でガチャガチャしてる時

*6:コレの解決に2時間ぐらいかかったしChatGPTは役立たずだった

*7:AIにやらせた仕事なのでAIの話の回例示した