🚒 消防デジタル無線 受信機

ARIB STD-T61 (FDMA) · π/4-DQPSK · M-CELP デコード — WebUSB + WebAssembly
未接続

1. 受信機を接続

RTL-SDR (RTL2832U + R820T/T2) を USB 接続し、ボタンを押してブラウザに許可します。
対応: Android Chrome / Edge / デスクトップ Chrome。iOS Safari は WebUSB 非対応(ファイル再生のみ可)。

2. 周波数と受信

基地局が折り返さない移動局同士の通話は上り (FL) で聞こえます。上りは下りのちょうど 9 MHz 下です。

30 dB

3. 音量

T61 モードでは復調器が同期し、かつ TCH が音声の符号語として復号できたときだけ音声を出します。 M-CELP デコーダはどんな 18 バイトからも「声っぽい」音を作ってしまうためです。

スペクトラム

同調周波数を中心に ±480 kHz。チャネルフィルタの手前で見ているので、 数 kHz ずれた電波もここに現れます。中央の縦線が同調点です。

ピーク (全域)—

ズーム ±25 kHz(同調点付近)

6 kHz 幅の T61 バーストはここに山として見えます。オレンジの破線が近傍ピーク、 緑の破線が AFC で補正中の位置です。

近傍ピーク (±12 kHz)—
—

シンボル (コンスタレーション)

差動検波後のシンボル配置。ロックしていれば ±45°/±135° の 4 点にまとまります。原点付近に固まる/全体に散らばるなら信号が無いか未同期です。

復調状態—
信号レベル—
位相誤差 RMS—
FLL 残差 (復調器内)—

フレーム解析

フレーム構造(40 ms = 384 bit)はビット列から自動で学習します。 毎フレーム同じ値の位置(プリアンブル・同期語)でフレーム位相を取り、 全国共通の無音パターンを手掛かりに TCH (256 bit) の配置(実信号では 2 か所に分かれている)とビット割当を決めます。 TCH の各チャンクがどの送信フレームに属するか(フレーム差)と、チャンク境界の候補は、音声ブロックの ビタビ経路メトリックで自動判定します。符号語として成立したブロックだけを音声として再生します。

フレーム同期—
TCH 配置 / ビット割当—
判定内訳 (音声/無音/アイドル/その他)—
直近ブロックの経路メトリック—

上: 384 ビット位置ごとの安定度(明るいほど毎フレーム同じ値)。緑=同期に使っている固定ビット、 青=TCH と判定した範囲。

受信待ち

フレーム判定(新しいものが上)

受信待ち

M-CELP フレーム (18 バイト)

受信待ち

生ビット列(直近 384 bit)

受信待ち

動作確認 / ファイル再生

ハードが無くても M-CELP デコードを確認できます。.mcelp(16進)または生18バイトフレーム。

録音した電波から復調(デバッグ用)

受信機の IF 出力や SDR で録音した音源を、ライブ受信と同じ経路 (チャネルフィルタ → RRC → π/4-DQPSK 復調 → フレーム解析 → M-CELP)に流します。実際の電波が無くても 復調とフレーム解析を試せます。WAV / FLAC などのロスレス形式を使ってください。 MP3 等の非可逆圧縮は位相を壊すので、ビットレートが低いと復調できません(320 kbps でも劣化します)。 WMA はブラウザがデコードできないため、WAV か FLAC に変換してください。 FM 復調後(ディスクリ出力)の音声では復調できません — 検波前の IF が必要です。

実信号 IF の場合のみ使用します。auto にすると録音のスペクトルから中心周波数を推定します (DJ-X100 の IF 出力を 48 kHz で録音した実例では 12.5 kHz 前後)。左右が同じ信号のステレオファイルは モノラルの実信号 IF として自動的に扱います。

詳細設定 (T61 フレーム解析)

通常は「自動」のままで動きます。5ch 復調スレで公開された解析には未確定の点が残っているため、 音声が崩れる場合はここで切り替えて試せます(docs/arib-std-t61-fdma.md §4c)。

自動は 24 通り全てを試します(上記 8 通り以外の順列も含む)

統計

IQ受信0 MB
シンボル0
フレーム0
同期検出0

ログ

不具合があったら「📨 共有」でこのログをそのまま送ってください(発生時刻・エラー詳細・受信設定が自動で含まれます)。