
We provide amateur radio contest administration system ATS-4 and communication logging software zLog.
autodyne nextzlog複数信号の分離、誤表示の抑制、リアルタイム性の改善が課題である。現状の方式は、その時点で強い周波数 bin を中心に処理するため、近接した信号同士で強い方に引き寄せられやすく、中心周波数が 1〜2 bin 変動しただけで別信号として扱われやすい。Track を導入することで、各信号を継続的に追跡する対象として保持できるようになり、近接した 2 局を別々に維持しやすくなり、フェージングによるわずかな周波数変動でも追尾が切れにくくなり、強い局の近傍にある弱い局も残りやすくなる。これは、強い音をその都度拾う方式から、個々の信号を継続して追う方式へ移行することを意味する。
1 bin を直接読む方式では、信号が bin 境界に乗った場合や微小な周波数ずれが生じた場合にレベル系列が不安定になりやすい。近傍 bin を合成して包絡を構成することで、ON/OFF 判定がぶれにくくなり、短点と長点の長さ推定が安定し、隣接信号やスペクトル漏れの影響も受けにくくなる。その結果、点と線の取り違えや文字間、語間の誤判定を減らすことができる。
表示の確定タイミングにも改善余地がある。従来の Trim ベースの扱いは末尾の未完成要素を隠すには有効であるが、文字が確定したかどうかを明示的に管理していない。PendingCode と CommitText を分離することで、ON が終わっただけでは表示せず、文字間 gap が十分に観測された時点で文字を確定し、語間 gap が観測された時点で空白も確定できる。これにより、未確定の文字が先に表示される問題を大きく減らすことができる。
リアルタイム性についても、未確定の内容を先に出すことで見かけ上の速さを得るのではなく、確定した内容のみを即時に表示する方向へ改める必要がある。この変更により、表示がわずかに遅れる場面はあり得るが、表示された文字の信頼性は高まり、UI の揺れも抑えられる。結果として、速さだけを優先した表示ではなく、確定ベースのリアルタイム表示に近づく。
Dit を track ごとに保持して更新することで、送信者ごとの打鍵速度の違い、やや詰まったり伸びたりする癖、運用中の微小な速度変化に追従しやすくなる。これにより、固定しきい値による判定よりも、短点と長点、要素間と文字間、語間の分類が安定する。
ヒステリシス付きの ON/OFF 判定や短すぎるパルスの除去を導入することで、一瞬のノイズで点が出る誤り、短い谷によって文字が不自然に切れる誤り、隣接局の裾で ON 扱いになる誤りを抑制できる。特に 7MHz 帯のような混雑した CW 環境では、この改善の効果が大きいと考えられる。
総じて、この提案により、アプリはスペクトル上の強い箇所を毎回読み直すデコーダから、複数の CW 信号をそれぞれ追跡し、確定した文字だけを出力するデコーダへ近づくことになる。改善が期待できる点は、複数局の分離性能、表示の安定性、誤表示の抑制、確定タイミングの明確化、混雑帯での粘り強さである。これは精度の改善にとどまらず、実運用における使いやすさの向上にも直結する。受信者の体感としては、読める文字数が増えること以上に、表示結果を信用しやすくなる変化として現れるはずである。
既存の History ベースの継続判定を見直し、内部状態として Track を導入する。これにより、周波数 bin の一致ではなく、継続的に追跡している信号そのものを単位として扱えるようにする。各 Track は中心周波数、強度、雑音床、最終観測時刻、未確定の符号列、確定済みの文字列、推定中の Dit 長などを保持し、フレームごとに更新する構造とする。
各更新では、スペクトル全体から局所ピークを抽出し、そのピークを既存の Track に割り当てる。割り当てには周波数差と強度差を用い、近傍かつ継続性の高いものを優先して対応付ける。適切な Track が存在しない場合には新規に Track を生成し、一定時間観測されなくなった Track は破棄する。この変更により、一時的な周波数揺れや強弱変動があっても、同一信号を継続して追跡しやすくする。
各 Track に対する復調入力は単一 bin から直接取得するのではなく、中心周波数の近傍数 bin を重み付きで合成した包絡を用いる。これにより、信号が bin 境界に位置する場合や微小な周波数変動がある場合でも、より安定したレベル系列を得られるようにする。結果として、ON/OFF 判定、短点と長点の推定、文字間と語間の判定を安定化させる。
従来の stateless な再判定に加えて、Track ごとに状態を持ちながら復調を進める方式を導入する。各 Track は現在の ON/OFF 状態、継続フレーム数、推定 Dit 長、文字間 gap、語間 gap を保持し、入力系列を逐次処理しながら更新する。これにより、各信号の時間的連続性を利用した判定が可能になり、単発の揺れや局所的な乱れに強い構造へ移行する。
未確定の符号列と確定済みの文字列を明確に分離する。ON 区間が終わった時点では短点または長点を PendingCode に追加するだけにとどめ、文字間 gap が十分に観測された時点で初めて CommitCode と CommitText に反映する。語間 gap が観測された場合には空白も同時に確定する。この方式により、確定前の文字が UI に出ることを防ぎ、確定した瞬間のみ表示される挙動を実現する。
Dit は固定値ではなく Track ごとに保持し、観測された ON 区間の長さに応じて徐々に更新する。短点と判断された場合はその長さを、長点と判断された場合は 3 分の 1 に正規化した長さを用いて Dit を更新し、同時に文字間 gap と語間 gap も再計算する。この方式により、送信者ごとの癖や運用中の速度変化に自然に追従できるようにする。
ON/OFF 判定にはヒステリシスを導入し、立ち上がりと立ち下がりで異なる閾値を用いる。これにより、境界付近の揺れによるチャタリングを抑制する。また、短すぎる ON パルスや短すぎる OFF ギャップはノイズとして扱うことで、一瞬の雑音による誤検出や不自然な文字分断を減らす。この変更により、混信環境やノイズの多い受信条件においても、より安定した出力を目指す。
内部では Track を中心とした状態管理へ移行する一方で、外部への出力は引き続き Message とする。Track の状態から Snapshot を生成することで、既存の Program フックや表示処理との互換性を維持する。これにより、内部実装を大きく改善しつつ、周辺コードへの影響を最小限に抑える構成とする。
JG1VPPお世話になっております。
JA1ZGP所属のJI1VHV 高田と申します。
第2回電通大VUSコンテストへの対応をお願いしたくご連絡いたしました。
規約は以下の通りです。 https://www.ja1zgp.com/uectest-vus_public_info/uectest-vus_rule/uectest-vus-2-rule/
昨年からの変更点としては、 ・2400MHz以上の得点の変更 ・総合部門にエントリーする局は、第一ラウンド or 第二ラウンドの種目にエントリーすることは不可 ・第一ラウンド、第二ラウンドにエントリーする局は、それぞれのラウンドからひとつずつ、最大計2つの種目にエントリーすることができる。ただし、SHF部門とV/UHF部門の両方にエントリーすることは不可。 になります。
どうぞよろしくお願いいたします。
ji1vhvhttps://github.com/ggerganov/ggmorse というものを発見 univradio参加者曰く、結構使えるらしい これがどういうアルゴリズムかを調べ、利用できる or それなりにいいものであれば利用する
jucky154年末年始のメンテナンスの影響で1/6より無線局等情報検索 Web-APIを判断するようになってしまいました。 User-Agentに「Mozilla/5.0 (Windows NT 10.0; Win64; x64)」があれば、APIの結果が返ります。無ければエラーページがやってきます。 これについて総合通信基盤局電波部電波政策課電波利用料企画室宛てにはUser-Agent見るのやめようよとメールを出したところです。
zLogの総務省APIを確認したところ、何故か起動しなくなってしまいました。 そちらでも動作の確認をいただきたい。
WPMを都度k-meansで推定する現在の実装では、瞬間的に異常なWPM推定値となり、デコード結果が乱れる場合がある。
デコード対象のモールス符号のWPM事前分布を仮定し、WPMをMAP推定する。
JG1VPP#225 のウェブアプリは既に https://jg1vpp.github.io/qth.zlog.org で仮運用中だが、本格的な運用は https://qth.zlog.org で行う。
機能と運用体制が固まってからJS2GGDさんに依頼。
JG1VPP無線部開発班のウェブサイトを改装し、実用的なサービスを提供する。
Volatile ATSを中核に、ATS-4系のコンテスト運営アプリを提供する。
技術記事のPDFを残す。HTML版のURLはZennに転送する。
JG1VPPATS-4は、主催者毎にVPSやDocker環境が必要。SaaS化は課金や情報管理の課題がある。WASM化できればATS-4の実行環境をブラウザで完結させることが可能。
今後Java11に対応するCheerpJを活用して、ATS-4またはQxSLをブラウザで動かす。DBは仮想ファイルシステムを通じてブラウザに保管する。
JG1VPPwincを使ってウィンドウを作り、list viewなどをdockして、その内容を更新するような場合、ウィンドウを作った画面ではないマルチディスプレイの場所で更新すると真っ白(何も表示されない)になってしまう
私の作ったアプリケーションにおいて、マルチディスプレイをして、内容を更新するとそうなる模様
適切に表示される
未定
jucky154ATS-4がJARLサマリーシートの処理に依存し過ぎている。
CabrilloやJARLサマリーシートの処理をDSLに委譲する。また、サマリーシートの内容をJSONに変換する処理は、QxSLに移植する。
JG1VPPリアルタイムコンテストDLLにおいて適切に得点計算が行われていないのではないかという問い合わせがあった 考えられる理由としては, https://github.com/nextzlog/zylo/blob/c1ea32be8642a0f878cf4328b3d4769643627c92/src/plugins/rules/rttest/rttest.cfg#L39 のようにリアルタイムコンテストのCFGにはDLLが計算をするという指定があるものの,
OnVerifyEvent
OnPointsEvent
がhttps://github.com/nextzlog/zylo/blob/c1ea32be8642a0f878cf4328b3d4769643627c92/src/plugins/rules/rttest/rttest.go#L87 の リアルタイムコンテストのプラグインのコードに含まれないため, 得点計算などが行われていない可能性がある
jucky154ATS4をよりアマチュア無線界隈に広めたいが, コンテスト主催者側から攻めるのは困難が一部存在するということがわかった そのため, 逆にコンテスト参加者側から主催者側に「なんで ATS4にしないの? あれ便利だからそっちにして欲しいんだけど」という方向の作戦もありだと思われる
それを踏まえると, コンテスターの利便性向上が求められる. 有名コンテスターはN1MMを使っていることが多いため, N1MMのログをadifにせずに, そのまま直接提出することができれば, 利便性向上につながると考えられ, 目的の一部達成につながる可能性がある.
また, 世界的にも進出させることを考えると, 世界的なロギングソフトへの対応は, 重要だと考えている
N1MMはSQLiteのs3dbなるものを使っているぽい?
jucky154現状のCW4ISRでは、クリックノイズを拾うことにより、誤ったメッセージを解読する場合がある。これを言語モデルで防ぐ。
最も単純な方法として、単純ベイズ分類器により、誤ったメッセージを除去する方法はどうか。
JG1VPPPRに対してCIを実行し、マージをブロックする。
ZyLOとCW4ISRは、go fmtの実行とgo testの正常終了を条件とする。
ATS-4は、テストを実装したCIが未整備のため、引き続き運用を検討する。
個別にPRを受け付ける運用の場合は、テストの成功をマージの条件とする。
JG1VPPCW解読機に関して、さらなる発展が求められている(ハムフェア)
そして、その中で、CW Skimmerはベイジアンを使っているという話があった
http://ag1le.blogspot.com/2013/01/towards-bayesian-morse-decoder.html 以前も上のブログは読んでいたものの、真面目に読んでいなかったが、いろんな段階でベイジアンを使っているようだ CW4ISRでも、ベイジアンを一部の段階で使ってみるのはありなのかもしれないので、調査や実験が必要だと思われる
jucky154使用したCW 動画 URL: https://www.youtube.com/watch?v=oJfdofz8O8A&t=380s https://www.youtube.com/watch?v=WPwnSe2v3Ts&t=241s 2つ試した。
特になし。急ぎません。
irukabandoCW4ISRとzLogを連携させるzLogプラグインを整備する。自動交信を支援する機能を備える。
CW4ISRとはプロセス間通信で連携する。例えば、go-winioを使用する?
cwListenerの位置付けが問題だが、不具合もあるので、コードを煩雑化させやすい解読・マイクデバイス選択・履歴表示等の機能はCW4ISRに委ね、自動交信機能に特化させる手もあり。
JG1VPPCW4ISRはJavaScript (ES5)でイベントハンドラを定義可能だが、現時点では、読み取ったメッセージの編集ができる程度。
decoder.Program = function(message) {
message.Text = message.Text.replace('5NN', '599');
message.Text = message.Text.replace('ENN', '599');
return message;
}
もっとCW4ISRの設定を細かく調節したり、デバッグ・可視化機能やRPCによる外部連携を強化したい。
Goの構造体・メソッドの形式で、JavaScriptから呼び出し可能なライブラリを充実させる。それらは、以下のように渡される。
vm := goja.New()
vm.Set("RPC", RPC{})
https://github.com/nextzlog/todo/issues/176 に関連するが…
おそらく、多くの人が求めていることはS/N比がよくない音声でもモールスを解読できることである。 求められていることを実施できるCW4ISRとしたい
現在、一般に使われているモールス信号解読機であるCW SkimmerとのS/N比の比較 および CW Skimmerと同程度の耐ノイズ性の取得 (STFTで耐ノイズ性が得られるかは微妙… 音声から波形へのアルゴリズムや波形からモールスのon/off検知アルゴリズムを真面目に考える必要がありそう) CW Skimmerも表示としてはSTFTみたいなものが出るが、どうやってそこからモールスの解読をしているのだろうか?
jucky154現在、CW4ISRは3局パイルアップ(実際の交信録音)を用いて広報を行い、好評を博している。 その中で、CW4ISRの能力に関する質問が数多くなされている。質問の回答になるような公称能力の確定する公試を行う必要がある。 そのテストデータの作成・公試の実施が必要。行う内容としては、
テストデータはzylo/encoderとかをうまく使ってwavを作ればよい?(どうencoderを使うかがわからない…) 公試は繰り返しやって何回正しく解析されるか、から判断する? 以上の観点で試験をして公表・動画化をしたい
jucky154既知の問題だが、送信が開始された瞬間には符号語として検出されず、バッファに蓄積された後に検出されると、バッファから溢れた分の符号語が消失し、例えば、JがOと解読される。
CW4ISRで何度か交信の音声を流してみれば再現する。
正しくJと解読する。
早めに。
JG1VPPZyLOで開発された中には、必ずしも常駐する必要のないプラグインもあり、不必要にzLogのパフォーマンスを低下させる。
プロセス間通信の仕組みを整備して、DLL以外の連携方法を開発する。ビルド時にDLLもしくはプロセス間通信を選択できるようにする。
JG1VPPエラーがあると出るだけでどこがエラーなのか不明。
タイトル通り
赤で示すなど一般的に行われているUIとすればよいのでは。
ATS-4の運用に必要なサーバと環境構築を行うサービスを提供するとして、採算性を検討したい。
まず、どの程度の需要があり、かつ、そのうち何割が実際に導入に漕ぎ着けるのかを把握する必要がある。コンテスト主催者でATS-4に興味のある方は、このIssueに追記していただけると助かります。
JG1VPP高校コンテストの規約が我々が作った時と変更になっているようです http://hstest.mg-sci.com/wp-content/uploads/2020/07/2020_31st_hstest_rule.pdf 2020年のルールだとHSマルチは消えないのですが、 http://hstest.mg-sci.com/wp-content/uploads/2022/06/2022_33rd_hstest_rule.pdf 2021年以降のルールだとHSマルチは削除されるようです
SSBとCWで交信した際にはHSマルチが消えるようにする
早めに
jucky154QSO.Insert,Delete,Updateメソッドを呼ぶとzLogが落ちる。
func onInsertEvent(qso *reiwa.QSO) {
qso.Insert()
}
QSOが追加・削除・更新される。
未定
JG1VPPGitHubの組織としての無線部開発班は、以下の開発に興味がある方を募集しています。主に無線従事者が対象ですが、大学社団等の所属は問いません。


可能であれば、公開メンバーとして活動いただければと思います。設定は各自でお願いします。
JG1VPP運用をなんとかすれば(ウィンドウを閉じない)問題なさそうな問題が解決されていませんが、ボチボチ見栄えのいいプラグインができましたので、広報を検討しないといけない
JA1ZLOというお約束のものだけでなく、パイルアップ・カスカスの局の解読もやらせた動画を撮ったのでそれをツイートする?
https://user-images.githubusercontent.com/58735989/197546870-6f7a6e87-83f0-4d80-8b5f-fccf498579d6.mp4
jucky154マーケットプレイスは、どれかひとつでも誤りがあると、全体の更新が停止するように構築している。その場合は、管理人は速やかに状況を修正する責任がある。ここでは、そのための連絡を行う。
JG1VPPzLogにおいてtelnetやリグコントロールの設定をするとプラグインが無効化されますがいいですかという警告が出る
zLog v2.8.3.2の日本語版(英語版は未確認)で各種設定->オプションからリグコントロールやパケットクラスターの設定(
どちらか一方でも再現されました。 過去に一度、この警告を見ると見ないこともあるようです。 再現する場合は、zlog2.8.3.2をダウンロードしてすぐにプラグインをインストールして、その直後にここの設定の部分だけしてOKを押せばできると思います)をして、OKを押すと以下のような警告が出る。しかし、自分がやった限りではこの後にも普通にプラグイン(CW解析)は動いた

このような警告は表示されない
ALL JA
jucky154CW解析プラグインがエラーによって開なかったとの報告をZLO部員からもらった マルウェアとして検知されているらしい
以下がエラーコード errormessage.txt
ウイルスとして認識されないようにする
ACAG?
jucky154CTESTWINではコンテストの対応状況が明記されている。このあたりのドキュメント化が不足している。
/contests以下にテーブルを配置して、コンテスト毎の案内を掲載する。CFGファイルで対応可能なコンテストは、単にCFGファイルの頒布サイトにリンクを貼る。プラグインで対応しているコンテストの場合は、その導入方法を別のページで明記する。
JG1VPP問題意識 ZyLOにしてもzLog 令和editionにしても機能が十分に認知されていない(この辺はJR8PPGさんと共通の見解 (https://twitter.com/jr8ppg/status/1548997253658198016 )) そのため、なんらかの周知の工夫を行う必要がある。
解決方法
ATS-4で書類提出するコンテスト参加者が遭遇するトラブルの典型例(実例)をここに自由に記していく。
JG1VPP問題意識 自分が持っているATS-4オペレータ向けの知識を広く一般に公開し、ATS-4を利用しやすい形とする
解決方法