WebRTC時報 (web117) の仕組み
WebRTC時報 (web117) は、WebRTC技術を用いて音声ストリームを配信することで、利用者に時報を提供しています。
特徴
本サービスには以下のような特徴があります。
- 事前に録音した音声をサーバ側にて合成し、クライアントへストリーミング配信している
- WebRTCのリアルタイム通信機能を活用することで低遅延を実現
- 時刻同期はサーバ側で動作しているntpdによって行われる。WebRTC時報 (web117) は、ntpdにより同期されたシステム時刻を利用して動作する
事前収録した音声
類似のサービスではクライアント側での音声合成が行われることが一般的ですが、本サービスでは事前収録した音声をサーバ側で合成する方式を採用しています。 合成音声のチューニングを事前に行っておくことができるため、電話回線にて提供される時報サービスと可能な限り口調を合わせられるようにしています。
WebRTCの活用
音声配信にはWebRTCを使用しています。一般的にWebRTCと言うとクライアント数に応じて負荷が高まりそうなイメージがありますが、本システムではサーバ側で話者ごとに合成した音声パケットを、接続してきたクライアントに対して同報的に送出しているため、接続が増えても負荷はあまり増大しません。
音声コーデックにはG.711uを使用しています。Opusと比較して音の合成処理を楽に記述できること、音質が悪いので電話回線にて提供される時報サービスと似た雰囲気になることから採用しています。
本稿の記載時点においては本サービス-利用者間のネットワーク遅延を補償する仕組みは実装していません。やればできるはずですが面倒なのでやっていません。サーバが保持している時刻誤差にネットワーク遅延が上乗せされることに注意してください。 開発者の体感としては関東圏 フレッツ光回線からの接続であれば数ms、関東圏 モバイル回線からの接続であれば数十~100ms程度の遅延になることが多いようです。
事前収録した音声をHTTPサーバでホストしておき、サーバ側から送出したPPS信号に基づきJavaScript等で音を鳴らすことも可能ですが、あまりにも普通で面白くないため本システムでは採用していません。
サーバ側ntpdによる時刻同期
WebRTC時報 (web117) が動作するサーバではntpdが動作しており、 NICT公開NTPサービスと時刻同期を行っています。 WebRTC時報 (web117) はntpdにより同期されたシステム時刻を利用して動作しているため、時刻の精度はntpdの同期精度に依存します。
稼働しているサーバのNTP同期状況を1分に1回書き出すようにしています。以下のリンクから確認できます。
Copyright © 2025- Chofu-Tech.