たったこれだけで
晴れてはいたけれど、空は霞んでいた。
どうやら、PM2.5の影響のようだ。
気温は、18.8度と、かなり高くなった。
AIサービスで、Bing Search(Bing AIチャット)とPerplexity AIで、基本こと足りているけれど、ChatGPTがAPIを公開したということで、興味を持った。
(Perplexity AIの返答がやけに速くなったと思ったら、ChatGPT APIに切り替えたのだそうだ。)
これを使えば、何年も前にインストールして使った、Windows上でのGoogle Assistantと同じようなことが出来るのでは?と思った。
文字入力だけではなく、音声入力をし、返答を文字出力、音声出力させられる。
基本的には、Pythonを使ってコーディングするのがいいらしい。
でも、Pythonは、今まで触ったことがなかった。
Google Assistantの時は、インストールと設定作業だったからね。
Bing Searchの初期の頃の長編チャットが出来た時、Pythonについて会話したんだよね。
その時に、あらかたの概要を聞いていたので、それが今回役に立った。
Pythonには、if文やfor文の時の{}のような閉じる処理がない。
その代わり、スペース4つを使って、インデントするのだそうだ。
あの時の会話がなかったら、きっと、わからないことだらけだったことだろう。
まずは、音声入力、テキスト入力、テキスト出力、音声出力のPythonを作ろうと思って、Bing SearchやPerplexity AIの力を借りて作ってみた。
以前であれば、ネットで検索して、あちこち探していたけれど、これらAIを使えば、あっという間にコーディングしてくれるから、めっちゃ便利!
本当にすごい時代になった。
手直ししながら、出来たものを動かしたけれど、どういう訳か、音声入力が出来ない。(泣)
設定やらの問題ではないと思う。
現に、他のソフトウェアでは、音声入力は問題ないから。
Pythonのマイク入力のパラメータを変更して、PC本体のマイクは問題ないのだけれど、USB DACに接続している、使いたいマイクがダメ。
Google Assistantの時は問題なかったのになぁ...
そういう状態になったため、ChatGPT導入は断念、というか、気が萎えてしまったのである。(苦笑)
その代わり、ふと思ったことがあった。
ChatGPT API公開時、Whisperなるものも使える、ということを。
Whisperは、音声データをテキスト出力してくれるAI。
試しにやってみるか、と思って、取り掛かった。
もちろん、Bing Searchのお世話になることに。
が、これが出してきた情報はダメだったので、Perplexity AIの方で確認すると、こちらの方が正確だった。
但し、注意事項が。
GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
で公開されているものは、Pythonのバージョンが「3.10.X」以下でないとダメらしい。
インストールしたPythonは、「3.11.2」。
これだと、インストール時にエラーになったので、仕方なしに、「3.10.10」もインストールして、そちらで、Gitのコマンドは導入していなかったので、
「pip install -U openai-whisper」
を実行して、無事インストール出来た。
Gitを入れているなら、直接、GitHubから導入も出来る。
処理時間を計測する処理を入れているので、行数は増えているけれど、Whisperで必要な処理は、たったの「7行」!
たったこれだけで、音声をテキスト出力してくれるのである!
まぁ、ライブラリの恩恵なんだけれど。(苦笑)
import datetime
import whisper
start = datetime.datetime.now()
model = whisper.load_model("base")
result = model.transcribe(infile.opus, verbose=True, fp16=False, language="ja")
file = open(outfile.txt, "w")
for i in result['segments']:
file.write(f"{i['start']}" + "\t" + f"{i['end']}" + "\t" + f"{i['text']}" + "\n")
end = datetime.datetime.now()
elapsed_time = end - start
file.write("\n" + "\n" + f"処理時間: {elapsed_time}秒")
print("\n" + "\n" + f"処理時間: {elapsed_time}秒")
file.close()
「infile.opus」が、音声ファイル、「outfile.txt」が、出力するファイル。
これらを、希望のものにしよう。
別の場所にあるなら、フルパスで書く。
OPUSでも読み取ってくれるのだから、ほとんどの音声ファイルに対応しているのではないだろうか?
タブで区切りをしているので、拡張子を「csv」にして、Excelで開いて、出力結果の見直しを掛けてもいいだろう。
区切り文字や拡張子は、お好みで。
処理中、リアルタイムで、テキスト化される様子が見られる。
左側が、そのテキストの再生されている時間、右側が、テキスト。
テキスト化されたものをみて、ちょっと感動である。
何度も言うけれど、すごい時代になったものだ。
「whisper.load_model("base")」について。
このパラメータを変更することによって、認識の精度が変わるようだ。
「large」「medium」「small」「base」「tiny」とかがある。
一般用途では、「base」で十分のようで、より精度を高めたいなら、左側のパラメータを使えばいい。
但し、初期実行時に、「Whisperのモデルファイルと、音声認識に必要なライブラリやツール」をダウンロードするよう。
そのファイル、どこにあるの?と思って、「AppData」とかを探してみたけれど、そこにはなく、「C:\Users\ACCOUNT\.cache\whisper」にあった。
もし、不要なら、この下を覗いて、削除するといい。
それぞれのパラメータがダウンロードしたファイルのサイズは、大雑把に書くと、large=3GB, small=480MB, base=150MB, tiny=80MBであった。
この中に、色んな情報が詰まっているらしい。
変換精度に関して言うと、音源次第だと思うけれど、完全ではなかった。
が、small、base、tinyで試した結果、左に行くほど、精度が上がっていたのは確かだ。
その代わり、変換に時間は掛かるけれど。
この変換速度は、CPU次第だろうから、最新のCPUであれば、それなりに速いのではないだろうか?
どうせ見直しはしないといけないのだから、バランスを考えると、「base」で変換するのがよさそう。
現時点では、自分にはこういう作業はないけれど、何かのために、この仕組みを作ることが出来てよかったと思う。
あと、調べていて、そんなに前からあったの?というAIサービス。
同じく、OpenAIが、数年前から、プログラミング言語に特化したAIサービスを提供していたのだそうだ。
(OpenAIって、立ち上げ時に、イーロン・マスクが関わっていたんだってね。へー、と思った。)
OpenAI Codexというもの。
Pythonが得意らしく、他には、C#、JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、SQL、Shell等があるそうだ。
VB.NETがないのは残念。
まぁ、終わりの言語だから、仕方ないか。(苦笑)
このサービスのすごいところは、喋り言葉で、こういう処理、と条件を出すと、それに沿ってコーディングしてくれるところ。
90年代に夢見ていたことが、まさしく、ここに実現している!
まだ使ってはいないけれど、本当にすごい!
プログラマーなら、ここは必須なのではないだろうか?
と、去年末あたりから、急速にAI関連が盛り上がっていて、とても面白い。
珍しく、Googleは乗り遅れているし、最近、AIに関しては音沙汰がないけれど、どう出るか?
自分に関しては、ChatGPT API、どうするか、だな。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- foobar2000 ver. 2.26(2026.10.06)
- なんでも丸めればいい、という風潮(2026.10.03)
- バージョンを知りたい(2026.09.29)
- 翻訳機能(2026.09.26)
- そろそろ(2026.09.09)


コメント