最近、見つけた技。知らない言語でコードかくときChatGPTが神すぎる。
そのテクはなんと「プログラミングまるごとを、ChatGPTに突っ込む」というもの。
え、そんなの動くの!? と思うんですが、動くんですそんなの。直球すぎて盲点だった。
試してみよう
たとえば、下記はGoogleサービス使って、リアルタイムにマイク音声を文字起こしするサンプル。
こいつをチャットAIで音声会話をやろうと、軽く読んでみたのですが…うん、よくわからん。
Pythonだし、Streamingだし、音声の操作だし、普段つかわない技術が満載すぎてわからん。
雑にコードを突っ込むと人生が解決
こういう時は
以下のコードを、わかりやすく説明して。
<以下、上記コードをそのままコピペ>
とすると…… こうなる。
続けて
コードによるけど、Googleのサンプルや有名なオプソであれば、かなりの精度で解説してくれる。
解説してもらう
listen_print_loop という概念をしらなかったので質問。たぶんasyncioやソケット通信みたいなループでのブロックだと思うのだが…
このメインスレッドは、listen_print_loop でブロックされて、無限ループの待機になりますか?
改善案を議論する
やはり、ループ処理のブロック部分だった。普通に音声認識するならいいけど、ゲームやVTuber動かす場合は、非同期に処理させたいんですよね。
なので、非同期にするための質問をする。
ThreadならQueueを使って、別スレと通信すればいけるかな??
このストリーミングクラスをスレッドAで走らせながら、スレッドBで音声認識されたテキストを処理したいと思います。
queue.Queue を使って実装するのがよいでしょうか?
実際のコード設計を壁打ちしてもらう
なんとなくThreadでいけそうな気がしてきたので、コードのキモになりそうな、main実行周辺の書き換え方を
ストリームを別スレッドで行うためのコード改変を考えます。
main() を呼び出す部分で、というような型にすればよいでしょうか?
q = queue.Queue()
threadA = thread.threading(target=main, args=(q,))
threadB = thread.threading(target=precess_text, args=(q,))
threadA.start()
threadB.start()
雑にかいたコンセプトのコードに、必要な続きをしっかり書いてくれる(読みやすいように、ちょっと改行とか整形しました)。
わーすごい、だいたい全部なんとかしてくれた!!!!
仕事の生産性が100倍
普段つかわないPythonのストリームのコードなんて、普通にググりながら調べたら、理解するのに3日ぐらいかかりそうな代物。それが、たった30分かからず、概要と使い方と、応用までオール解決。
たまに嘘もつきますが、コード関係はだいたい合ってることが多い。(最後に自分で、走らせれば簡単に確認できる)。
これフリーランスや、インディーズでソフト開発してる人なら、年収2倍とか夢じゃないレベルの生産性アップを狙えそう。
自分は現役のActionScript職人だったころ、3000〜5000行 / 日ぐらいが限回だったのですが… これとCopilotの支援があれば1日に1万行ぐらいかけそうな気すらしてきます。
シンプルすぎる使い方で、試してなかったのだけど…ここまでできるとは思わなんだ。
大事な注意
この技法、会社のお仕事で使うときはセキュリティポリシー等を確認してつかってね。
GPT3のAPI経由での利用は、「データは学習に使われない」ことが明記されてるけど、 ChatGPTのウェブインターフェース上は、保証されてない気がします。心配な人はGPT3のAPIでやりましょう。
あと自社サービスのデータを突っ込む… というよりは、オプソやサンプルコードをぶっ込んで、教えてもらう…という使い方が安全でオススメです。(あるいは自分用の共通ライブラリで)。
その他過去の実験