📞 日本語ドキュメント
English →

📞Layer 1: Voice Edge

電話の入口(HGW / Asterisk / bridge)。現状運用と Phase C v2 の違い。

電話の物理的な入口(Voice Edge)。ひかり電話 HGW で着信を受け、Asterisk から AudioSocket で bridge.py に渡し、OpenAI Realtime で判定します。

構成図

Raspberry Pi 3B(1階・宅内) HGW(ひかり電話) SIP REGISTER 内線 Asterisk 22 (chan_pjsip) dialplan / chan_audiosocket bridge.py AudioSocket :9092 / μlaw↔PCM OpenAI Realtime classify_call 移植予定(32bit→64bit) 残課題参照 RTS RDS Arrowfone AMI :5039 Status逆引き→Hangup 対象チャンネル AEGIS_UUID で特定 spam → Hangup(21) fail-safe allow → Dial(ALLOW_DESTINATION) 正常転送 unknown/空 → Dial(HUMAN_PEER) fail-open(C-2(b))
図: 実線=音声経路(μlaw 8k ↔ PCM 24k)。破線=判定→切断(B案・本線): AI の should_terminate を受け bridge が AMI Status で対象チャンネルを逆引きし Hangup。spam は遮断(fail-safe)、allow/unknown は dialplan へ(fail-open)。実線の紫枠 = Raspberry Pi 3B(宅内)の機器境界で、HGW と OpenAI は枠外(最下段は Pi の dialplan が実行する通話の行き先)。※移行中: 旧 A案(AstDB verdict 経由)は退避。点線=64bit移植後に同居予定の既存Rhodium機能。

現状運用 と Phase C v2 の違い

現状運用(v1) voice-edge A22(実機テスト前)
ハード 既存機材 新品 Raspberry Pi 3B
OS Raspbian 9 Raspberry Pi OS Bookworm 64-bit
Asterisk Asterisk 11 Asterisk 22
SIP chan_sip chan_pjsip
音声連携 (旧経路) AudioSocket → bridge.py
設置 ChatVoice 経由 deploy.sh / verify.sh / systemd
fail の倒し方(重要)

spam は Hangup(fail-safe=遮断)、判定不能・障害は 人へ取次(fail-open=業務継続)。 全切断(fail-closed)は採用していません(C-2(b) で廃止)。詳細は用語集へ。

主要パラメータ

  • AudioSocket: 127.0.0.1:9092(μlaw 8kHz ↔ PCM16 24kHz リサンプル。GA の audio/pcmu 直送にも対応し、その場合はリサンプルをバイパス=下記)
  • AMI: 127.0.0.1:5039(B案・本線: Status で対象チャンネルを逆引きし Hangup。旧 A案の DBPut / AstDB verdict は退避)
  • OpenAI Realtime: gpt-realtime(GA)。接続は /v1/realtime
  • dialplan placeholder: <ALLOW_DESTINATION>(allow 転送先) / <HUMAN_PEER>(fail-open 取次先)
OpenAI Realtime は GA へ移行済み

OpenAI Realtime の Beta API は 2026-05-12 に廃止されました。bridge.pyGA(gpt-realtime)へ移行済みで、 実 OpenAI に対し live 検証済みです(接続 / session.update 受理 / classify_call 発火 / 分類 → 締めの一言 → AMI Hangup の通し)。 旧 Beta 前提のヘッダ・記述は残していません。

ℹ️音声フォーマット:μlaw 直送に対応(opt-in・デフォルトは pcm)

GA は入出力とも audio/pcmu(μlaw)を受理します。bridge.pyμlaw 直送に対応し、この場合 8kHz μlaw ↔ 24kHz PCM のリサンプルをバイパスします(環境変数 AUDIO_FORMAT=ulaw で opt-in)。 **デフォルトは pcm16(現行のリサンプル経路)**のままで、pcm16 と μlaw で 判定一致を実測済み。 実機 HGW での確認後にデフォルト化を検討します。

ℹ️第2関門の実装:移行中(A案 → B案)

判定→切断の実装は B案(function calling + AMI Hangup)が本線です。AI が should_terminate を返し、 締めの一言の後に bridge.py が AMI 経由で対象チャンネルを切ります。旧 A案(AstDB verdict 経由)は退避し、 実機での B案 動作確認後に旧経路を撤去予定です。