23wpm で文字+数字、数字だけ、文字だけ、をそれぞれ90%なんとかとったので24wpmでやりはじめてる。20wpmだと完全ランダムでだいたい90%前後がとれるようになったけど、普通文だとそれほどとれないので辛い。十分単語に慣れた人なら普通文のほうがとれるみたいだけど、単語に慣れていない場合、普通文のほうが短い符号の文字が多いので頭が追いつかない。

これが、実際に交信になると、テンパってしまって速度が遅くてもほぼ聴き覚えがある符号しかとれなくなる。599BK 式で、余計な符号がほぼ入らなければなんとか交信できる。CQ を出して、呼んでもらう場合、18〜20wpm なら2回コールしてもらえばとれる感じ…… CQ を出している局は 22〜30wpm あることが多いので4回〜6回聴かないと確定できない……

599BK で CQ を出している局を呼ぶか、自分で CQ を出して 599BK に付きあってもらうか、どっちもメリットデメリットがあってつらい。

CQ 出している局を呼ぶ場合

大抵、599BK でやっている局は JCC サービスなので、パイルになってることが多い。この場合、こちらからの電波が相手に十分届いているか、ある程度パイルが捌けるまでわからないので、非常に効率が悪い。

コールサイン、JCC などまで聴きとった状態で呼ぶので、ほぼ聴きとる必要がなくて気は楽だけど、何か想定外のことを打たれた場合、速度が早くて返せないので、その点で緊張する。

自分で CQ を出す場合

まず第一に、相手にメリットがほぼない (こちらのロケーションは政令指定都市なので別に珍しくもないし)。なおかつ、18wpm 程度で CQ を出すと、相手はラバースタンプ程度の長さを期待する (と思われる) ので、599BK で終わらせると偲びない。

ちょっとやった感じだと、相手の QTH が JCC/JCG で送られる場合、案外聴きとれるけど、それ以上に何か送られるとつらい。なのでだんだん申し分けない心持ちになってくる。

今後の予定

とにかく結構辛いんだけど、CQ 出している局を呼んで、自分のコールサインが呼ばれたとき結構嬉しいのがいい。電波届いたのも嬉しいし、「あっおれだ」っていうのが分かるのも嬉しい。

訓練は続けつつ、599BK であっても CQ を出すのに慣れるのがいいかなあとは思ってる…… けどほんとメンタルが弱すぎて聞きとれるものも聞きとれない。メンタルを強くする方法はわからないので、とにかく聞きまくって慣れるしかないかなと思う。それまで続けられるか心配。

  1. トップ
  2. ham
  3. 最近のモールス訓練
  1. トップ
  2. モールス
  3. 最近のモールス訓練

交信履歴をつけるツールにいろいろ機能をつけてる。

(というかそもそも記録するという一番大事な部分にバグがあって一部の交信が消えた感じがするけど、ようやく直ったような……)

コールサイン地域補完


コールサインのプリフィックスを入力した時点で、どのあたりの地域の人かわかるように。日本の局の場合エリアまで出すようにしてるので便利。慣れてる人は覚えているからこんなのいらなそう。

これは typeahead.js で実装してある。

JCC 補完

国内の場合、だいたいの人が JCC/JCG を送っているので、それを補完してどこかわかるようにした。JARL が提供してる .txt (クソフォーマット) をパースして JSON にしてる。取得時にソートしてインデックスを作ってるのでJS側はかなり簡単。

これは jQuery.textcomplete で実装してる。いろいろ補完できそうで夢が広がる。

  1. トップ
  2. tech
  3. ログ管理ツール
  1. トップ
  2. ham
  3. ログ管理ツール

CW 以外殆ど聞いてない。アパマンハムはやはり厳しいなあという感じ。聞こえてこないぶん、卑屈になる。

7MHz

深夜以外はだいたい聞こえる。

深夜はDXが聞こえるらしいんだけど、うちのような2m程度のアンテナの環境だと殆ど聞こえない。たまに韓国の局が聞こえてくるけど、あちらはかなりパワー入れてるみたいで、こちらから呼んでもとってくれない感じ (実際 JA の局が呼んでるけど、向こうは一切反応なし、というのを何度か見た)。

その他のDXは聞こえたことがない。

18MHz

太陽が昇ってる時間だとときどき DX が聞こえる。一方日本の局はあんまり聞こえない。バンド狭いのでちょくちょくコンディションが良さそうなときに聞いてるけど、あんまり聞こえてこない……

ビーコンも殆ど聞こえない。中国のビーコン100Wがかすかに聞こえたことがあるかな〜 程度。せめてビーコンがちゃんと聞こえるぐらいのアンテナを張りたい……

21MHz

クラスタを見てて 21MHz が多いな〜 と思ったら見る程度で、こっちも昼間たまに DX が聞こえてくる。けど基本殆ど聞こえない。結構バンド広くて、なおかつ慣習がいまいちよくわからないので、どのへんを聞いたらいいのかわからず。

こちらもビーコンがあるけど聞こえてこない。

28MHz

聞こえたことがない。バンドが広いので探すのも大変。

どこを重視すべきか

まだわからない。7MHz は賑やかなので今でもそれなりに聞いてて楽しい。ただ、夜になると全く聞こえなくてつまらない。

18MHz, 21MHz は、うちのようなショボい設備でも DX のチャンスが多そうかもしれない。もっとずっと聞いててもいいかもしれないけど、基本何も聞こえてこないので面倒くさい。アンテナが7MHzに比べたら短いので、モノバンド短縮アンテナを作ってみたら今より良くなるかもしれないし、いずれやってみたい。

まだ聞いたことがないバンド、特にローバンドの1.9MHz, 3.5MHzも聞いてみたい。マイクロバートアンテナなら効率はともかく一応送信もできるのが作って設置できそう。3.5MHz は夜・冬に使えるバンドみたいなので、次 7MHz のアンテナと交換する形で作ってみる。

ベランダなのであんまりいっぱいアンテナを設置すると怪しすぎるので避けたい。4本程度が本当に限度だと思う。なのでマルチバンドホイップ (UHV-6) は大変便利に使ってるし、割と性能もいい感じで気に入ってる。

うちのベランダは本当に狭くて、横方向にも3mぐらいしかないので、ダイポールを上げるのはどんな手を使っても不可能。しばらくは長さに自由度があるマイクロバートアンテナをバンド別に何度も作ってみたい。

  1. トップ
  2. ham
  3. バンドごとの印象

ほんと明らかに何もかもに対して度胸というか自信が足りていなくて、どうしようもない。

というのをちょっと前に作ったけど日記に書いていなかった。

デモ (音アリじゃないとよくわからない):

デフォルトだと、信号がありそうなところを適当に追跡してデコードする。上のスペクトラムをクリックで、その周辺の周波数領域のデコードだけをするようになる。一度に1つのデコーダーだけが動く。

何もハッシュをつけない場合マイク入力からになる。あと Chrome でしか見てない。

Web Audio で信号処理

Web Audio を使って、マイク入力を信号処理しようと思うといくつか躓くところがあった。

  • サンプリング周波数を指定できない
  • AnalyserNode を任意のサンプリングタイミングで呼ぶことができない?
    • あとサンプリング周波数が指定できないので分解能に限界がある

モールスのデコードに高いサンプリング周波数は必要ない。しかしサンプリング周波数は Web Audio 側で固定になっているので、自力でダウンサンプリングしている。これは ScriptProcessorNode の onaudioprocess を使い、Float32Array にリングバッファ状に落としこんでる。なんかもっといい方法ありそうだけど、わからなかった。

まだ onaudioprocess の挙動が不安定で、データがこなくなったりすることがある。毎回 onaudioprocess に対してコールバックを代入しなおしたりいろいろやったけど、最近直ったような気がしないでもない。

FFT も AnalyserNode のを使うのではなく、このダウンサンプリングした信号に対し、JS レベルで実行してる。これは dsp.js を使ってる。

モールスデコード部

それなりに工夫して作った。最初のころ Description of RSCW's algorithms というのを見つけてよく読んでみたけどよくわからないことも多くて、僕でも実装できる程度に落としこんで結局以下のようになってる。

  • 適当にデコードしたい周波数を決める
    • 直近で信号強度が強い周波数
    • または手動 (スペクトラムをクリック)
  • その周波数に対し、2位相ロックインアンプ相当の処理をする
    • 本当に単純にその周波数の矩形波を90°ずらして合成してローパスフィルタにかけて、、というのをナイーブにやってる
  • 適当に閾値を決めて2値化する (むずかしい……)
    • ここまでで 0/1 になる
  • 0 の連続または 1 の連続のうち、最小の長さを見つける (モールスの符号単位)
  • 符号単位の2倍以上なら長点、そうでなければ短点として表から符号をデコードする

デモのようなホワイトノイズ + それなりの強さの信号でかつ、機械的に綺麗な符号なら、結構いい感じにデコードできるけど、実際の交信だと思ったより厳しい。

  • SN比がもっと悪い。フェージングで信号強度がよく変化する
  • 符号が綺麗なことが少ない

なので、なんらかの統計的な、機械学習のような要素を入れこんで (隠れマルコフモデルとか?) やりたいけど、そのような技術力がない。あと、別に全域常時 FFT して全チャンネル同時デコードとかも、ギジュツリョクがあればできるだろうけど、できてない。

  1. トップ
  2. tech
  3. HTML5 Web Audio でモールスを解読する
  1. トップ
  2. html5
  3. HTML5 Web Audio でモールスを解読する
  1. トップ
  2. audio
  3. HTML5 Web Audio でモールスを解読する
  1. トップ
  2. dsp
  3. HTML5 Web Audio でモールスを解読する
  1. トップ
  2. ham
  3. HTML5 Web Audio でモールスを解読する
  1. トップ
  2. モールス
  3. HTML5 Web Audio でモールスを解読する