ボイスチャットシステム

Multisoft-labのホーム    ご意見・ご感想等

通信プロトコル

概要

 ボイスチャットシステムでは、サーバーとクライアントとの通信にTCPを用いています。 以下では、クライアントからサーバーへの情報の流れと、 サーバーからクライアントへの情報の流れそれぞれについて解説します。

 なお、ボイスチャットシステムでは、独自の方式で音声データを符号化しています。 後半では音声フォーマットについても、解説しています。

 (注意)このシステムは実験用であるため、TCPポート番号は定めていません (ユーザの権限で設定できるようにしてあります)。 したがって、実際に動作させるためには、サーバーとクライアントの双方でポート番号を一致させる必要があります。


クライアントからサーバーへ

 クライアントがサーバーに対して行う動作は、ログイン、ログアウト、メッセージの投稿、音声データの送信などです。 これらの操作を実現するために、必要最小限なプロトコルを設定しました。 表1に、それらのプロトコルを示します。 クライアントがサーバーに対して送る情報は7種類です。

(表1)クライアントからサーバーへ送られる情報

操作 通信内容 備考
ログイン
login:<参加名><CR><LF>
<CR><LF>
<参加名>でログインします
参加者情報の取得
Who are login?<CR><LF>
<CR><LF>
ログインメンバのリストを要求します
メッセージの投稿
Message:<投稿メッセージ><CR><LF>
<CR><LF>
<投稿メッセージ>を投稿します
発言の開始信号
Voice Start<CR><LF>
<CR><LF>
発言開始の合図です
音声データ
Voice Data:<音声データ><CR><LF>
<CR><LF>
<音声データ>を送信します
音声データについては音声フォーマットへ
発言の終了信号
Voice Stop<CR><LF>
<CR><LF>
発言終了の合図です
ログアウト
logout<参加名><CR><LF>
<CR><LF>
ログアウトします


サーバーからクライアントへ

 サーバーがクライアントに対して行う動作は、ログインの許可、ログアウトの承認、投稿メッセージの紹介などです。 これらの操作を実現するためのプロトコルは表2のようになります。 サーバーがクライアントに対して送る情報は10種類です。

(表2)サーバーからクライアントへ送られる情報

操作 通信内容 備考
ログイン成功
login succeeded<CR><LF>
ID:<ID No.>
VoicePass:<音声送信パスワード>
IDと音声送信パスワードが送られます (UDP通信で設計したときの名残。使われません!)
ログイン失敗
login failed<CR><LF>
<CR><LF>
ログインできなかったことを通知します
入室メンバ
Member login<CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
<CR><LF>
新規メンバ<参加名>が入室したことを知らせます
退室メンバ
Member login<CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
<CR><LF>
メンバ<参加名>が退室したことを知らせます
メッセージの投稿
Message:<投稿メッセージ><CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
<CR><LF>
メンバ<参加名>が<投稿メッセージ>を投稿したことを知らせます
参加者情報
Member Size:<人数><CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
 ・・・
<CR><LF>
参加者のリストが与えられます
発言者情報
Member Size:<人数><CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
ID:<ID No.><CR><LF>
Name:<参加名><CR><LF>
 ・・・
<CR><LF>
現在の発言者リストが与えられます
音声データ
Voice Data:<音声データ><CR><LF>
<CR><LF>
<音声データ>を送信します
音声データについては音声フォーマットへ
ログアウト成功
logout succeeded<CR><LF>
<CR><LF>
ログアウト成功を知らせます
強制ログアウト
disconnected<CR><LF>
<CR><LF>
強制的にログアウトさせるときに使います


音声フォーマット

 本来、音声はTCPで伝送するものではありませんが、 ここでは実験段階ということもあり、TCPで送信することにしました。 音声のフォーマットは、次のようになります。

  • サンプリング周期 8kHz
  • 量子化ビット数 6bit
  • モノラル

 6ビットのデータはPCMで与えられるのですが、 これをそのままTCPで転送するわけには行かないので、 次のような変換を行っています。

変換前 変換後
0〜9 '0'〜'9'
10〜35 'a'〜'z'
36〜61 'A'〜'Z'
62, 63 '+', '-'

 したがって、転送される音声のデータは次のようになっています。

Voice Data:xzvxAxzBDFzxvEBvzxGvCzFvwEBD・・・<CR><LF>
<CR><LF>
 Voice Data:の後に続くデータは128バイトです。 128バイトをブロック単位として音声伝送を行っています。



Multisoft-labのホーム    ご意見・ご感想等の受付


Copyright © 2004 Multisoft-lab   All rights reserved.