私は学生の頃、CW交信で、コンピュータが文字を解読し、解読結果から、更に自動応答するようなシステムを考えたことがありました。当時(30年以上前)、Unixマシン上で、簡単なニューラルネットワークモデルを使って、簡単な判定ができるようになった時代でしたが、将来、CW解読が可能となり、IF-ELSEのようなAI機能で対応できるようになるのではないかと思っていました。
あれから、月日が経過し、生成AIの登場により、当時のまさに夢のようなシステムが現実化できる時代となりました。
生成AIのプログラミング技術を用いて、これまでいくつかのCW解読システムにチャレンジしてきました。オーソドックスなモールス符号を切り出し、短点と長点の比率、パターンマッチングによって解読することも試みましたが、あまり良い結果が得られず、TとE(長点と短点)だけが認識されるというものでした。2026年春にClaude Fable5という、まさに博士レベルの知能を持つ生成AIが登場し、改めて、CW解読方法について検討してみました。
すなわち、短点と長点の分析をするのでなく、モールス信号を解読する人々が普段実施しているような音で聞き分ける方法を検討することにしました。
そこで提案されたのは、信号音声を前処理し、それをニューラルネットワーク(NN)にて学習した情報と照らし合わせ、その結果から該当するモールスコードを得るという仕組みです。
以下がその概要:

このことにより、CW符号の速度、音、またノイズ、ゆらぎ(短点と長点の比率や間隔)に対して、ある程度の許容可能な解読が可能となります。
ノイズについては、多すぎると解読率が低下しますが、無ノイズでも解読率が低下するようです。
符号の学習には、夜間の7MHz帯でのバックグランドノイズを録音し、それに生成したモールス音声を重奏させました。また、IC7100にダミーロードをつけて、CWを送信、IC7610で録音して学習データを作りました。欧文、和文のそれぞれの学習データを用いて、25時間程度の間、GPUを用いた学習の末、現在の学習モデルを作成しています。
学習モデルの結果は、欧文、和文共、WAVファイルでの静的データで高い解読率を得ることができました。ただし、ストリーミング音声では、一定時間のチャンクデータを処理するために解読率が低下しました。現在は、3段階に分けて解読を行い、静的データに近い解読率まで向上させています。
CWデコーダのメイン画面は以下の通りです:

プログラムを起動するとメイン画面が表示され、入力デバイス(音声)を選択します。開始ボタンを押せば、音声入力が行われます。デコード開始ボタンを押すことで、デコードが行われます。CW音声は600Hzという少し高めの音を中心にしており、一番、解読率が高い周波数です。モードには、自動、欧文、和文があり、自動だとホレ/ラタで切り替えるようになっていますが、欧文解読できない符号があると自動的に和文モードに切り替わるため、今後の改善が必要です。対応可能な速度は、仕様では10~50WPMとしていますが、実際は16~25WPM(80~125文字/分)程度と思われます。信号のS/Nについてはあまり低すぎると解読不能(?文字)が多くなります。バグキーで打つ、短点が短く、長点が非常に長い符号は解読率が低下します。和文では、() 括弧の符号を学習させることを忘れていました。この括弧符号は解読できません。確信度閾値は、0.5で使用し、S/Nが低い信号や短点/長点比が1:3から極端に外れている場合は、確信度閾値を下げてデコードできる場合もあります。
和文デコードは、カタカナで出力され、生成AIを用いれば、そのデコード文字を日本語文字に清書することができます。ローカルLLMを用いる場合は、GPUが必要です。もっとも応答性と清書出力が良いモデルは、gemma4:e4bでした。有料になりますが、OpenAIのGPT-5.6lunaを用いると、最も日本語らしい情報が得られます。OpenAIとClaudeの生成AIのAPIを得て登録することで清書が出来ます。
このCWデコーダには送信機能があります。送信サーバープログラムとCWデコーダプログラムを別々のPCに割り当てることができ、CWデコーダ側から、送信サーバープログラムに接続して情報を送ることができます(受信も同様で、受信送信プログラムをCWデコーダで接続できます)。これにより、無線機と直結されたPCからLANで接続されたCWデコーダを用いることで遠隔にて交信ができるようになります(なお、私の場合、GPU付きPCと無線機用PCが別々であり、LANによってRDP状態としているために、このような構成にしたまでです)。
送信ダイアログは以下の通りです:

無線機PCのURLを設定し接続ボタンを押せば、送信サーバーと接続できます。送信サーバー側では、シリアルポートとDTR/RTSの設定が出来ます。
送信速度は、「受信にあわせる」ボタンを押せば、現在、受信中の相手の速度に合わせた速度に設定できます。相手コールサイン、名前、RST、天気、気温を入れることで、一般的な会話内容を構成することが出来ます。
また、返信の型が設定でき、欧文・和文のそれぞれで、定型文を作成することが出来ます。
和文定型文は通常の日本語で作成でき、送信ダイアログで、カタカナの電文に自動変換されます。確認ボタンを押して、問題なければ、送信が行えます。送信中であっても、中止ボタンで中止ができます。
型は、追加・編集が出来ます。ここで、予め、経歴(自局コール、QTH,アンテナ、リグ)を設定しておくと、この定型文で組み込まれて生成されます。
まだ、試験運用中ですので、不具合等がありますが、受信用として一度、試してみて下さい。また、送信に用いる場合は、十分に取り扱いにご注意下さい。
以下のところで公開をしています。









