2025年12月24日水曜日

OpenAIのwhisperで、処理した音声認識テキストを表示するアプリ

https://github.com/gh6141/QtMp3Srt.git 

OpenAIのwhisperで音声認識処理すると.srtというファイルができますが。これと音声ファイル(mp3)を一緒のフォルダに置いて使えるようにしてみました。ちょうど、映画の字幕のような感じで表示できます。-smallのオプションで、処理したものだと、たまに認識が間違って、若干ずれることもありますが、日本語以外等でいろいろ使えそうです。

2025年12月22日月曜日

灯油残量 WIFI OLEDで表示

 ewp32-c3を表示用に使ってみた、センサーからのデータを蓄積しているraspiからWIFIで読み出すようにした。

 とりあえず、補正計算(最小二乗法で近似していますが、はたしてこの式が正しいかどうかはまだ様子見る必要ありますが。)した残量に加えて、気温・気圧表示し、気圧変化のグラフも表示させてみた。スイッチオンで手軽に見ることができて便利。
 DC-DCコンバータが容量大きすぎて(今時は、小型の小容量のものもあるけれど、未使用でしまっていたので有効活用しようかと)、ケースの場所をふさいでしまった。たまたま、9V積層電池が余っていたので、コンバータを使うことにしたため、このようなアンバランスな組み合わせになってしまった。(OLEDの写真画像が一部かけて写っていた。たぶん、シャッター速度が速かったため?)


2025年12月21日日曜日

pic16f628AによるDFplayer改良

 EPROMで、どの番号まで再生したか、不揮発メモリに記録できるようにした。フォルダは01のみとした。以前のフォルダ番号用スイッチを制御用(1回タッチで番号を進める、2回タッチで番号を減らす)とし、ファイル番号用スイッチは、1回目の連続タッチで10の位、2回目の連続タッチで1の位を指定して入力できるようにした。(ただし、10未満は、1回目のタッチを10回タッチすると0になるようにした。)

dfPlayer、しかもPIC利用だとやはり、かなり制限があって、コーディングも難しかった。

2025年12月19日金曜日

OpenAIのWhisperがローカル実行でかなりの認識率

 最近は、音声認識が、無料でしかもローカル実行で正確に認識できるのには驚きました。コマンドラインで実行できるので、アプリの中で活用できてとても便利だと思います。

バッチファイルです。途中のパスを通すところは、ffmpegのあるパスです。

radio2text.bat

.m4aなど、いったん.wavに変換してから処理しています。
LANGはenが英語、jaが日本語 --languageないとどちらも出します
--output_format srt で時間付き字幕

Qt使えば
if (line.contains(QRegularExpression("[ぁ-んァ-ン一-龯]"))) {
    // 日本語
} else {
    // 英語
}
のように分けたりもできそうです。

※なお、準備としては ffmpeg以外に、python3.9以上で
pip install -U openai-whisper
をインストールするだけで動くようです。

2025年12月17日水曜日

ESP32灯油残量センサー 実験

まだ、測定値が安定しないので、新たに容量カウント補正用のセンサ(タンク入口までの短い線)を追加して、しばらくデータをとってみることにした。追加PINはGPIO15。esp32から外に出ている線がぬれるだけで、測定値に影響するので、補正できないか試す予定。 

2025年12月15日月曜日

Qtで最下行へスクロールする方法について

 Qtでは、行数が多くなると最下行へのスクロールが難しい仕様?のようです。

 実際のWigetの行サイズとかもあり、すべてを反映して正確なスクロール量を割り出すのが難しいという問題もある?ちょうど、エクセルなどで印刷イメージと編集画面で微妙にずれたりするのと同じ困難さかもしれませんが。

 こういうときは、泥臭い方法で、実際に繰り返し試しながらスクロール量を割り出すしかないのかもしれません。その旨、ChatGPTに伝えたところ、以下のコードを作ってくれました。なんとか、うまくいきました。

void KakeiboTable::scrollDown(){
    QScrollBar* bar = view->verticalScrollBar();
    if (!bar) return;
    int lastMax = -1;
    QTimer* timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, [=]() mutable {
        int curMax = bar->maximum();
        bar->setValue(curMax);
        if (curMax == lastMax) {
            timer->stop();
            timer->deleteLater();
        }
        lastMax = curMax;
    });
    timer->start(0);
}

2025年12月11日木曜日

Unityで縦列駐車シミュレーションをつくってみた

 WebGLで縦列駐車のシミュレーションできるようにしてみた。実車の運転前に、シミュレーションでコツをつかんでおくと役立つかもしれません。

https://github.com/gh6141/Parking.git(source code)

https://gh6141.github.io/WebGL-Parking/(シミュレーション)

上下左右の矢印で操作し、Spaceでブレーキです

※Github PageでWebGLを使うには、zip圧縮はしないほうがいいようです。パフォーマンスレベルはできるだけLow側にするとうまく動作するようです。

2025年12月10日水曜日

釣り竿アンテナの接触不良対策

 釣り竿アンテナ(カーボン)に銅箔テープを貼ったものをアンテナとして使っていましたが、接続部がどうしても接触不良起こしやすく、SWRも安定しにくくなってきたので、試しに金属クリップを使ったら比較的調子がよくなり59+レポートもらえるようになりました。境目よりなるべくぎりぎり上のほうをはさむとうまくいくようです。

関数解析(宮寺功著)

 文庫本で関数解析が読めるということで購入してみました。早速、壁にぶつかりましたが。

P40 定理2.2で、(x,y)=||(x+y)/2||^2-||(x-y)/2||^2+i||(x+iy)/2||^2-i||(x-iy)/2||^2の定義で(x,y)=(y,x)の共役 が言えるのかどうか? ||x+y||^2+||x-y||^2=2||x||^2+2||y||^2を使うとうまくできるようです。

注意が必要なのは、(x,y)=||(x+y)/2||^2-||(x-y)/2||^2+i||(x+iy)/2||^2-i||(x-iy)/2||^2の共役をとるとき、|| ||のなかにあるiの符号は変えてはいけないということ?うっかりけてしまいそうですが、外側のiは符号変えてもいいですが、ここがたぶん注意点?

Unityを久しぶり少し使ってみました

基本的なことを忘れていて思い出すの時間はかかりましたが、以前作りかけていたものを少しだけ手を加えてみました。文字式の計算を動物キャラクタで、できないか、試しに作ってみたものです。導入等に使えないかと。 使う機会もないので、まだ中途半端の状態ですが。同類項=同じ種類の動物を重ねて計算します。+ーゼロだと爆発して消えるようにしています。

https://github.com/gh6141/WebGL_MathBoxSrc2.git(code)

https://gh6141.github.io/WebGL_mathBox/(WebGL)

こういうゲームでも誰か作ってくれれば、文字式や方程式の抽象概念も多少は理解促進の助けになるのでないかと思っていますが。

2025年12月6日土曜日

ESP32+BME280 bottleコードの調整

 ESP32からのデータをbottleで表示するコードを少し調整。スマホでの表示が見ずらいので少し調整してみたのがこちら


2025年12月3日水曜日

ESP32にBME280追加

 キャパシティのカウントに、温度影響などあれば、補正の可能性もあるかと思い、温度等もロギングすることにしてみた。ついでも、気圧、湿度も計測できるセンサが安く入手できたのでつないでみた。ロギングはbottleサーバで行い、PCから確認できるようにした。esp32のコードもそれに合わせて書き換えた。

補足:容量カウントのピンはGPIO4からノイズが少なめのGPIO12に変更した。また、容量カウントは、WIFIやBME280の起動前に行い、ノイズの影響を除くようにコードを修正。シリアル通信も同様の理由で削除(2025.12.5)(ChatGPTのよると、GPIO12,GPIO33,GPIO32,GPIO13,GPIO15の順でノイズが少ないらしい)

SparkFunBME280というライブラリを追加する必要があります。

BME280のI2C接続図

 アクリルだと、紫外線で脆くなるだろうと考え、塩ビパイプをヒートガンで平面にしたものを加工して作ってみた。

Web確認すると推移グラフもチェックできるようにした(2025.12.6)
(12/7)湿度が容量に影響しているような様子も見られ、もう少し分析が必要と思われる。
(12/8)湿度との相関もはっきりしないところもある。タンク内と外では湿度が同じでないことも影響しているかもしれないので、補正も難しさがありそう。