以下、音声通信システム等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
本実施の形態において、受信装置で次に出力すべきパケットを受信できない場合に、再送要求が有するパケット識別子に対応するパケットを、再送要求を送信した受信装置に、ユニキャストで送信する送信装置を有する音声通信システムについて説明する。
また、本実施の形態において、バッファリング量、1回以上の再送要求タイミング等の通信パラメータのカスタマイズが可能な音声通信システムについて説明する。
図1は、本実施の形態における音声通信システムのブロック図である。この音声通信システムは、送信装置1、および2以上の受信装置2を備える。送信装置1と2以上の各受信装置2とは、例えば、LANやインターネットなどのネットワーク、有線または無線の通信回線等を介して、通信可能に接続される。送信装置1は、音声データを送信する。2以上の各受信装置2は、当該音声データを受信し、出力する。
図2は、送信装置1のブロック図である。送信装置1は、格納部11、受付部12、処理部13、受信部14、送信部15、および出力部16を備える。格納部11は、端末識別子格納部111、端末数情報格納部112、音声データ格納部113、および送信時刻情報格納部114を備える。受付部12は、音声データ受付部121を備える。音声データ受付部121は、音声受付手段1211、およびAD変換手段1212を備える。処理部13は、端末数情報取得部131、方式決定部132、およびチェックサムパケット生成部133を備える。受信部14は、再送要求受信部141を備える。送信部15は、パケット送信部151、およびパケット再送部152を備える。
図3は、受信装置2のブロック図である。受信装置2は、端末格納部21、端末受付部22、端末処理部23、端末受信部24、端末送信部25、および端末出力部26を備える。端末格納部21は、パケット格納部211、期限情報格納部212、出力時刻情報格納部213、および消失リスト格納部214を備える。端末処理部23は、パケット取得部231、判断部232、通信関連情報取得部233、通信パラメータ変更部234、パケット生成部235、第一速度情報取得部236、第二速度情報取得部237、および補完処理部238を備える。端末受信部24は、パケット受信部241を備える。端末送信部25は、再送要求送信部251を備える。端末出力部26は、音声出力部261を備える。音声出力部261は、DA変換手段2611、および音声出力手段2612を備える。
送信装置1を構成する格納部11は、各種の情報を格納し得る。各種の情報とは、例えば、後述する端末識別子、後述する端末数情報、後述する音声データ、後述する送信時刻情報などである。
端末識別子格納部111には、本音声通信システムを構成する2以上の受信装置2を識別する2以上の端末識別子が格納される。2以上の各端末識別子は、例えば、MACアドレス、IPアドレスなどであるが、何でもよい。本音声通信システムを構成する2以上の受信装置2は、静的でもよいし、既存の受信装置2の離脱や、新たな受信装置2の参加に応じて、動的に変化してよい。後者の場合、既存の受信装置2の離脱や新たな受信装置2の参加に応じて、処理部13が、新たな端末識別子を端末識別子格納部111に追記したり、既存の端末識別子を端末識別子格納部111から削除したりすることで、端末識別子格納部111には、現時点で音声通信システムを構成している2以上の受信装置2を識別する2以上の端末識別子が格納されている。
端末数情報格納部112には、端末数情報が格納される。端末数情報とは、本音声通信システムを構成する受信装置2の数(以下、“端末数”と記す場合がある)を示す情報である。後述する端末数情報取得部131が、端末識別子格納部111に格納されている端末識別子の数を用いて、現在の端末数を取得し、端末数情報の更新を行う結果、端末数情報格納部112には、現在の端末数を示す端末数情報が格納されている。
音声データ格納部113には、音声データが、少なくとも一時的に格納される。音声データとは、アナログの音声をデジタル変換して得られる音声データであり、2以上の各受信装置2に送信される音声データである。通常、音声データは、1または2以上のパケットで構成され、音声データ格納部113には、パケットを識別するパケット識別子と対に、1以上のパケットが格納される。パケット識別子は、例えば、識別番号、タイムスタンプなど、何でもよい。以下では、パケット識別子の例として、識別番号“1”,“2”,…,“k”,…を用い、音声データを構成する一のパケットを“パケットk”などのように記す場合がある。ただし、音声データのデータ構造は問わない。
送信時刻情報格納部114は、送信時刻情報が格納される。送信時刻情報とは、音声データを構成する1以上の各パケットの送信時刻を示す情報である。送信時刻情報は、例えば、パケット識別子と送信時刻との対の集合である。ただし、送信時刻情報のデータ構造は問わない。また、送信時刻情報は必須でなく、送信時刻情報格納部114は省略されてもよい。
受付部12は、各種の情報を受け付ける。各種の情報とは、例えば、前述した端末識別子、前述した音声データ、前述した送信時刻情報などである。受け付けとは、例えば、キーボードやマウスやマイクロフォンなどの入力デバイスを介して入力された情報の受け付け、ネットワークや通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
音声データ受付部121は、音声データを受け付ける。音声データ受付部121は、通常、アナログの音声を受け付け、受け付けた音声をデジタル変換する。ただし、音声データ受付部121は、例えば、デジタル録音機などの外部装置から出力される音声データを受け付けてもよく、音声データをどこからどのように受け付けるかは問わない。音声データ受付部121は、受け付けた音声データを、通常、音声データ格納部113に蓄積する。ただし、音声データは、例えば、クラウドサーバなどの外部装置が有する格納部に蓄積されてもよく、その蓄積先は問わない。
音声受付手段1211は、通常、マイクロフォン等の音声入力デバイスを介して、アナログの音声を受け付ける。ただし、音声受付手段1211は、例えば、アナログ録音機等の外部装置から出力される音声信号を受け付けてもよく、アナログの音声をどこからどのように受け付けるかは問わない。
AD変換手段1212は、音声受付手段1211が受け付けたアナログの音声をデジタル変換し、音声データを取得する。デジタル変換とは、アナログの音声を、AD変換回路が有する発振素子等から出力されるクロックに従う周期でサンプリングすることにより、デジタルの音声データに変換する処理である。AD変換回路が有する発振素子は、例えば、水晶発振素子、セラミックレゾネータなどであるが、その種類は問わない。
処理部13は、各種の処理を実行する。各種の処理とは、例えば、端末数情報を取得したり、パケットを送信する方式を決定したり、後述するチェックサムパケットを生成したりする処理である。また、処理部13は、受け付けられた音声データのパケットを音声データ格納部113に一時蓄積する。また、処理部13は、送信から予め決められた時間が経過したパケット(例えば、再送要求に対象とならないパケット)を音声データ格納部113から削除しても良い。また、処理部13は、音声データ格納部113に格納された音声データを構成する各パケットの送信時刻を取得し、送信時刻情報を送信時刻情報格納部114に蓄積する処理なども行う。なお、送信時刻情報については後述する。また、処理部13は、例えば、送信時刻を図示しない時計から取得する。ただし、処理部13が送信時刻を取得する方法は問わない。
端末数情報取得部131は、パケットを受信する受信装置2の数に関する端末数情報を取得する。パケットを受信する受信装置2の数とは、通常、本音声通信システムを構成する受信装置2の数(前述した端末数)である。この場合、端末数情報取得部131は、端末識別子格納部111に格納されている2以上の端末識別子を用いて、端末数を示す端末数情報を取得する。
ただし、本音声通信システムを構成する2以上の受信装置2の中に、現時点でパケットの受信を、一定期間以上、または一定期間よりも長い期間、継続して休止している受信装置2が含まれている場合に、端末数情報取得部131は、上記端末数から、かかる受信装置2の数(休止端末数)を減算した数(実働端末数)を示す端末数情報を取得してもよい。例えば、処理部13が、端末識別子格納部111に格納されている2以上の端末識別子のうち、休止端末であると判断される端末に対応する端末識別子に、フラグを付加する一方、端末数情報取得部131は、端末識別子格納部111に格納されている2以上の端末識別子の数を計数し、そのうちフラグの付加された端末識別子の数を計数し、前者の計数で得られた端末数から、後者の計数で得られた休止端末数を減算することにより、実働端末数を示す端末数情報を取得することができる。なお、実働端末数を示す端末数情報は、フラグの付加されていない端末識別子の数を計数することによっても、取得可能である。
方式決定部132は、端末数情報取得部131が取得した端末数情報に応じて、パケットを送信する方式として、マルチキャストを採用するか、ユニキャストを採用するかを決定する。マルチキャストとは、アプリケーション識別子を指定して、1対多で行われるデータ通信をいう。ユニキャストとは、単一の端末識別子を指定して、1対1で行われるデータ通信をいう。一般に、マルチキャストは、ネットワークへの負荷が軽い半面、パケットロスが生じ易い等の理由で信頼性は低く、ユニキャストは、パケットロスが生じ難い等の理由で信頼性が高い半面、ネットワークへの負荷は重い、といった特徴を有する。そこで、方式決定部132は、例えば、端末数情報の示す端末数が、閾値以上または閾値より多い場合はマルチキャストを採用し、閾値以下または閾値より少ない場合はユニキャストを採用してもよい。
ただし、方式決定部132は、端末数情報取得部131が取得した端末数情報に応じて、パケットを送信する方式として、ブロードキャストを採用するか、ユニキャストを採用するかを決定しても構わない。ブロードキャストとは、端末識別子を指定せず、1対不特定多数で行われるデータ通信をいう。ブロードキャストは、マルチキャストと同様、ネットワークへの負荷が軽い半面、信頼性は低い特徴を有する。この場合、方式決定部132は、例えば、端末数情報の示す端末数が、閾値以上または閾値より多い場合はブロードキャストを採用し、閾値以下または閾値より少ない場合はユニキャストを採用すればよい。
なお、LANやFi−Fi(登録商標)ネットワークといった一のネットワーク内においては、マルチキャストとブロードキャストとの間で、例えば、パケットロスの発生率、音声通信の効率等に違いはないため、両者を同じ特性の方式として取り扱うことができる。そこで、例えば、ユニキャストを“一対一通信”マルチキャストおよびブロードキャストを“一対多通信”などと総称してもよい。
チェックサムパケット生成部133は、受信装置2が受信できなかったパケットを構成するためのチェックサムパケットを、パケット送信部151が送信する2以上のパケットを用いて生成する。チェックサムパケット生成部133は、例えば、音声データを構成する2以上のパケットに対応する2以上のチェックサムパケットを生成してもよい。その場合、音声データを構成する一のパケット(以下、単に“パケット”と記す場合がある)と、これに対応するチェックサムパケットとは、例えば、前者が、共通の識別番号“k”と、パケットであることを示す識別子(例えば“m”)との組で識別され、後者が、共通の識別番号“k”と、チェックサムパケットであることを示す識別子(例えば“r”)との組で識別されてもよい。ただし、チェックサムパケットのデータ構造は問わない。
例えば、パケット送信部151が送信する2以上のパケットのパケット識別子を“m001”,“m002”,…,“m091”,“m092”,…,“m100”,“m101”,…とし、一のチェックサムパケットの生成に用いるパケットの数を10個とすると、チェックサムパケット生成部133は、あるパケット“m100”に対応するチェックサムパケット“r100”を、当該パケットを含む過去の10個のパケット“m091”,“m092”,…,“m100”を用いて生成してもよい。次のパケット“m101”に対応するチェックサムパケット“r101”も同様に、当該パケットを含む過去の10個のパケット“m092”,“m093”,…,“m101”を用いて生成されてよい。なお、この場合、チェックサムパケット“r001”は、パケット“m001”を用いて生成され、チェックサムパケット“r002”は、2個のパケット“m001”および“m002”を用いて生成され、…、チェックサムパケット“r009”は、9個のパケット“m001”〜“m009”を用いて生成されてよい。ただし、一のチェックサムパケットの生成に用いるパケットの数は何個でもよく、チェックサムパケットの生成方法は問わない。
受信部14は、各種の情報を受信する。各種の情報とは、例えば、再送要求などである。
再送要求受信部141は、受信装置2からの再送要求を受信する。再送要求とは、パケットの再送を要求する命令である。再送要求は、パケット識別子を有する。
送信部15は、各種の情報を送信する。各種の情報とは、例えば、パケット、チェックサムパケットなどである。
パケット送信部151は、音声データ受付部121が受け付けた音声データを構成する2以上のパケットを順次送信する。パケット送信部151は、通常、パケット識別子を含むパケットを送信する。また、パケット送信部151は、パケット識別子に対応付いたパケットを送信しても良い。パケット送信部151は、2以上の各パケットを、端末識別子格納部111に格納されている2以上の端末識別子で識別される2以上の受信装置に、通常、マルチキャストで送信する。ただし、パケットの送信は、ブロードキャストで行われてもよいし、ユニキャストで行われても構わない。望ましくは、パケット送信部151は、パケットを、マルチキャストまたはブロードキャストと、ユニキャストとのうち、方式決定部132が決定した方式に基づいて送信する。
パケット送信部151は、さらに、チェックサムパケット生成部133が生成したチェックサムパケットをも送信してよい。パケット送信部151は、通常、チェックサムパケットを含む3以上のパケットを送信する。パケット送信部151は、例えば、パケットとチェックサムパケットとを交互送信してもよい。その場合、パケット送信部151は、チェックサムパケットを、対応するパケットの直後に送信してもよいし、対応するパケットよりも、一定数、遅延させて送信してもよい。つまり、パケット送信部151は、上で例示したパケット“m091”,“m092”,…,“m100”,“m101”,…およびチェックサムパケット“r091”,“r092”,…,“r100”,“r101”,…を、遅延なしで、例えば、“m091”,“r091”,“m092”,“r092”,…のように送信してもよいし、対応するパケットよりも、例えば5パケット、遅延させて、“m096”,“r091”,“m097”,“r092”,…のように送信してもよい。こうして、パケットに対するチェックサムパケットの送信タイミングを、2パケット以上、遅らせることで、複数パケットが連続的に消失した場合でも復元できる可能性が高まる。
パケット再送部152は、再送要求受信部141が受信した再送要求が有するパケット識別子に対応するパケットを、当該再送要求を送信した受信装置2に、ユニキャストで送信する。再送要求は、通常、当該再送要求を送信した受信装置2を識別する端末識別子を有しているか、または、かかる端末識別子と対に送信されるため、パケット再送部152は、パケットを、当該端末識別子で識別される受信装置2に再送する。なお、パケット再送部152は、通常、音声データ格納部113に一時格納されているパケットであり、再送要求が有するパケット識別子に対応するパケットを取得し、当該パケットを受信装置2に再送する。
出力部16は、各種の情報を出力し得る。出力とは、ディスプレイへの表示、プリンタでの印字、スピーカーからの音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。各種の情報とは、例えば、前述した端末数情報などである。ただし、送信装置1において、情報の出力は必須ではなく、出力部16は省略可能である。
受信装置2を構成する端末格納部21は、各種の情報を格納し得る。各種の情報とは、例えば、前述したパケット、後述する期限情報、後述する出力時刻情報、後述する消失リストなどである。
パケット格納部211には、パケット受信部241が受信したパケットが、当該パケットを識別するパケット識別子と対に格納される。パケットがパケット識別子と対に格納されることは、パケット識別子を有するパケットが格納されることでも良い。パケット格納部211には、通常、一時的にパケットが格納される。なお、パケット格納部211は、例えば、キューである。
期限情報格納部212には、第一の期限から第Nの期限までのN個(Nは2以上の自然数:以下同様)の期限に対応するN個の期限情報が格納される。期限情報とは、通常、パケット受信部241がパケットを受信する期限を示す情報である。
ただし、期限情報は、パケット受信部241が受信したパケットをパケット格納部211に蓄積する期限を示す情報であってもよい。期限とは、通常、特定の時刻に対する相対的な期限である。特定の時刻に対する相対的な期限とは、例えば、当該パケットを出力する時刻tよりも時間T前の時刻“t−T”であってもよい。ただし、期限は、絶対的な期限、例えば○時○分○秒○○といった時刻であってもよく、期限の表現形式は問わない。
第一の期限とは、例えば、次に出力するパケットをパケット受信部241が受信する期限を示す情報である。ただし、第一の期限とは、例えば、次に出力するパケットをパケット受信部241がパケット格納部211に蓄積する期限を示す情報であってもよく、その表現形式は問わない。なお、次に出力すべきパケットは、通常、直前に出力したパケットのパケット識別子の次のパケット識別子に対応するパケットである。
第二の期限とは、例えば、次に出力するパケットを第一の期限までにパケット受信部241が受信しない場合に、再送要求送信部251が当該パケットを識別するパケット識別子を有する1回目の再送要求を送信するのに応じて、当該パケットをパケット受信部241が受信する期限を示す情報である。第二の期限は、例えば、1回目の再送要求を送信してから、当該再送要求に対応するパケットの受信を待つまでの期限を示す情報である。ただし、第二の期限は、例えば、次に出力するパケットを第一の期限までにパケット受信部241がパケット格納部211に蓄積しない場合に、再送要求送信部251が当該パケットを識別するパケット識別子を有する1回目の再送要求を送信するのに応じて、当該パケットをパケット受信部241がパケット格納部211に蓄積する期限を示す情報であってもよい。なお、第一の期限、第二の期限等の表現形式は問わない。
第Nの期限とは、通常、N−1回目の再送要求の送信後に、N回目の再送要求を送信するまでの期間に関する情報である。第Nの期限は、例えば、N回目の再送要求を送信するのに応じて、当該パケットをパケット受信部241が受信する期限を示す情報である。ただし、第Nの期限は、例えば、N−1回目の再送要求に応じて、当該パケットを第N−1の期限までにパケット受信部241がパケット格納部211に蓄積しない場合に、N回目の再送要求を送信するのに応じて、当該パケットをパケット受信部241がパケット格納部211に蓄積する期限を示す情報であってもよい。
N個の期限情報は、例えば、第一の期限{t(k)−T(1)}を示す第一期限情報、第二の期限{t(k)−T(2)}を示す第二期限情報、…、および第Nの期限{t(k)−T(N)}を示す第N期限情報であってもよい。ただし、N個の各期限情報のデータ構造は問わない。また、第一の期限は、第二の期限や第Nの期限等と同じでも良い。かかる場合、期限情報格納部212には、第一の期限のみ格納されていても良い。
出力時刻情報格納部213は、出力時刻情報が格納される。出力時刻情報とは、音声出力部261がパケットを出力する時刻を示す情報である。出力時刻情報は、例えば、パケット識別子(1,2,…,k,…)と出力時刻(t(1),t(2),…,t(k),…)との対の集合で構成される。出力時刻t(k)は、例えば、パケットkが出力される期限であり、音声出力部261がタイムアウトか否かを判断する際に用いる閾値であってもよい。ただし、出力時刻情報のデータ構造は問わない。
消失リスト格納部214には、消失リストが格納される。消失リストとは、消失したパケットのパケット識別子を、当該パケット識別子を有する再送要求が送信された回数と対に登録するためのリストである。消失したパケットとは、期限情報が示す期限までにパケット受信部241によって受信されなかったパケットである。消失リストは、例えば、パケット識別子と再送要求が送信された回数との組を1組以上有する情報である。なお、消失リストは管理されなくても良い。かかる場合、例えば、出力されたパケットの次のパケットが、前のパケットの出力から予め決められた時間以上、受信されなかった場合、次のパケットを取得する処理に移行していく。
端末受付部22は、各種の情報を受け付ける。各種の情報とは、例えば、前述した期限情報などである。ただし、期限情報等は、例えば、受信部14によって受信されてもよく、端末受付部22は省略可能である。
端末処理部23は、各種の処理を実行する。各種の処理とは、例えば、パケット取得部231、判断部232、通信関連情報取得部233、通信パラメータ変更部234、パケット生成部235、第一速度情報取得部236、第二速度情報取得部237、補完処理部238等が行う処理である。また、端末処理部23は、パケット格納部211に格納された2以上の各パケットの出力時刻を決定し、出力時刻情報を出力時刻情報格納部213に蓄積する処理なども行う。なお、出力時刻情報については後述する。
パケット取得部231は、パケット格納部211に格納されているパケットであり、パケットに対応するパケット識別子を用いて、次に出力するパケットを取得する。パケット取得部231は、例えば、直前に出力されたパケットのパケット識別子の次の識別子(パケット識別子が数値の場合は、直前のパケットのパケット識別子に1を加えた数)に対応するパケットをパケット格納部211から探索し、取得する。パケット取得部231は、例えば、出力時刻情報格納部213に格納されている出力時刻情報と、現在時刻とを用いて、パケット格納部211に格納されている2以上のパケットのうち、次に出力するパケットを特定してもよい。なお、現在時刻は、例えば、MPUの内蔵時計や、NPTサーバ等の外部装置から取得可能である。また、パケット取得部231が次のパケットをパケット格納部211から探索するアルゴリズムは問わない。
判断部232は、通常、パケット受信部241が第一の期限までに次に出力するパケットを受信したか否かを、当該パケットに対応するパケット識別子を用いて判断する。パケット受信部241が第一の期限までに次に出力するパケットを受信したか否かの判断は、パケット取得部231が第一の期限までに次に出力するパケットを取得したか否かの判断と同意義であると考えても良い。パケット受信部241が第一の期限までに次に出力するパケットを受信したか否かの判断は、音声出力部261が第一の期限までに次に出力するパケットを出力したか否かの判断と同意義であると考えても良い。判断部232は、パケット受信部241が第Nの期限までに次に出力するパケットを受信したか否かをも判断しても良い。判断部232は、パケット受信部241が第一の期限〜第Nの期限までに次に出力するパケットをパケット格納部211に蓄積したか否かを、当該パケットに対応するパケット識別子を用いて判断してもよい。
通信関連情報取得部233は、通信関連情報を取得する。通信関連情報とは、送信装置1と受信装置2との間の通信に関する情報である。通信関連情報は、例えば、パケットを受信する受信装置2の数である端末数、またはパケット受信部241が次に出力するパケットを受信できないことに関するエラー率情報、またはパケット受信部241が次に出力するパケットを受信できたこと関する正常率情報、のうちのいずれかの情報を含んでいてもよい。
通信関連情報取得部233は、例えば、送信装置1から、端末数情報取得部131が取得した端末数情報を受信することで、端末数を取得することができる。
また、通信関連情報取得部233は、エラー率情報または正常率情報を、例えば、パケット格納部211に格納されているパケットの数(または、かかるパケットと対になるパケット識別子の数)と、消失リスト格納部214に格納された消失リストに登録されているパケット識別子の数とを用いて、取得してもよい。例えば、パケット格納部211に格納されているパケット数が1000個で、消失リストに10個のパケット識別子が登録されている場合、エラー率は10/1000(=1%)、正常率は990/1000(=99%)のように計算される。ただし、通信関連情報の内容、取得先、取得方法等は問わない。
通信パラメータ変更部234は、1または2以上の通信パラメータを、通信関連情報に応じて、変更する。通信パラメータは、例えば、パケット格納部211の容量、再送要求送信部251が再送要求を送信可能な回数N、第一の期限から回数Nに対応する第Nの期限までのN個の期限、のうちの1種類以上の情報である。例えば、通信関連情報が端末数を含む場合、通信パラメータ変更部234は、端末数に応じて、パケット格納部211の容量(パケットをバッファリングできるメモリの容量)を増減したり、回数Nを多く又は少なくしたり、N個の期限を短くまたは長くしたりしてもよい。さらに具体的には、通信パラメータ変更部234は、端末数が閾値より多いまたは閾値以上の場合、トラフィックの増大によるエラー率の上昇または正常率の低下に備えて、パケット格納部211の容量を増加したり、回数Nを多くしたり、N個の期限を短くしたりしても良い。また、通信パラメータ変更部234は、端末数が閾値より少ないまたは閾値以下の場合、トラフィックの減少によるエラー率の低下または正常率の上昇を見越して、パケット格納部211の容量を減少したり、回数Nを少なくしたり、N個の期限を長くしたりしても良い。
また、通信関連情報がエラー率情報または正常率情報を含む場合、通信パラメータ変更部234は、エラー率情報または正常率情報に応じて、パケット格納部211の容量を増減したり、回数Nを多く又は少なくしたり、N個の期限を短くまたは長くしたりしてもよい。さらに具体的には、通信パラメータ変更部234は、エラー率が閾値より多いまたは閾値以上の場合、パケット格納部211の容量を増加したり、回数Nを多くしたり、N個の期限を短くしたりしても良い。また、通信パラメータ変更部234は、エラー率が閾値より少ないまたは閾値以下の場合、パケット格納部211の容量を減少したり、回数Nを少なくしたり、N個の期限を長くしたりしても良い。
パケット生成部235は、パケット取得部231が次に出力するパケットを取得できなかった場合、パケット受信部241が受信したパケットであり、チェックサムパケットを含む2以上のパケットを用いて、次に出力するパケットを生成する。例えば、送信装置1から、パケットおよびチェックサムパケットが“m091”,“r091”,“m092”,“r092”,…,“m100”,“r100”,…のように送信され、そのうちパケット“m100”が消失した場合、パケット生成部235は、パケット受信部241が受信した9個のパケット“m091”〜“m099”および “r100”を用いて、当該消失したパケット“m100”を生成することができる。なお、“m・・・”は受信装置2で出力されるパケットである。また、“r・・・”はチェックサムパケットである。
第一速度情報取得部236は、第一速度情報を取得する。第一速度情報とは、パケット受信部241がパケットを受信する速度に関する情報をいう。第一速度情報は、第一の受信レートと言っても良い。第一速度情報は、例えば、1000パケット/秒といった情報である。第一速度情報が示す速度は、送信装置1のクロックに応じた速度である。送信装置1のクロックとは、前述したように、送信装置1のAD変換手段1212が音声をデジタル変換する際に利用するクロックである。
第二速度情報取得部237は、第二速度情報を取得する。第二速度情報とは、受信装置2の処理速度に関する情報である。受信装置2の処理速度に関する情報とは、例えば、DA変換手段2611がパケットをアナログ変換する速度などである。ただし、第二速度情報は、DA変換手段2611からフィードバックされる情報であり、アナログ変換処理の進行状況(例えば、既定の処理速度に対する遅れ等)を示す情報などであってもよく、その種類は問わない。第二速度情報が示す速度は、第一速度情報が示す速度と一致することが望ましいが、これら2つの速度は、送信装置1と受信装置2との間のクロックの差異(例えば、それぞれの変換回路が有する発振素子の発振周波数の不一致など)に起因して、例えば“1000パケット/秒”対“1000.1パケット/秒”つまり10000:10001などのように、ずれることがある。そして、かかるずれは、一般に、時間の経過に連れて拡大していく。
補完処理部238は、ずれ情報に基づいて、クロック周波数の誤差を補完する処理であるずれ補完処理を行う。ずれ情報とは、第一速度情報と第二速度情報とから取得される情報であり、送信装置1と受信装置2とのクロック周波数の誤差に関する情報をいう。ずれ情報は、例えば、第一速度情報および第二速度情報に対応する2つの速度の比を示す情報であってもよい。ずれ補完処理とは、第一速度情報および第二速度情報に対応する2つの速度の比を1にする又は1に接近させるための処理である。例えば、第一速度情報および第二速度情報に対応する2つの速度の比がa:bであれば、受信装置2側のクロックの周期を“|b−a|/b”だけ長くする(a<bの場合)又は短くする(a>bの場合)処理である伸縮処理であってもよい。かかる伸縮処理は、例えば、既存の音声データの時間間隔を伸縮させるリサンプリング、ストレッチングなどであるが、既存の音声データの間を推定値で補間する補間処理を含んでいてもよい。ただし、ずれ補完処理の手法は問わない。なお、ずれ情報は、例えば、第一速度情報および第二速度情報に対応する2つの速度の差を示す情報であってもよい。かかるずれ補完処理によって、送信装置1と受信装置2の間で生じるクロック周波数の誤差に起因する出力音声の乱れ(例えば、音切れ、音飛び等)を低減できる。
端末受信部24は、各種の情報を受信し得る。各種の情報とは、例えば、前述したパケットである。
パケット受信部241は、送信装置1からパケットを受信し、パケット格納部211に蓄積する。パケット受信部241は、通常、2以上のパケットを受信し、受信した2以上の各パケットを、当該パケットを識別するパケット識別子と対に蓄積する。なお、対に蓄積することは、パケットがパケット識別子を有することも含む。パケット受信部241は、前述したチェックサムパケットを含む3以上のパケットを受信してもよい。
端末送信部25は、各種の情報を送信し得る。各種の情報とは、例えば、前述した再送要求である。
再送要求送信部251は、パケット受信部241が第一の期限までに次に出力するパケットを取得しない場合に、当該パケットを識別するパケット識別子を有する再送要求を送信装置1に送信する。再送要求は、通常、当該受信装置2を識別する端末識別子をさらに有する。ただし、再送要求送信部251は、パケット識別子のみを有する再送要求を、当該受信装置2を識別する端末識別子と対に送信してもよい。なお、再送要求送信部251は、通常、ユニキャストで再送要求を送信装置1に送信する。これは、再送要求自体が消失する可能性を低減するためである。
再送要求送信部251は、判断部232が、パケット受信部241が第一の期限までに次に出力するパケットを受信しなかったと判断した場合に、再送要求を送信装置1に送信する。
再送要求送信部251は、パケット受信部241が第Nの期限までに次に出力するパケットを受信しない場合に、N回目の再送要求を送信装置1に送信する。
再送要求送信部251は、第一期限情報が示す第一の期限までにパケット受信部241によって受信されなかったパケットを識別するパケット識別子を有する再送要求を送信装置1に送信するのに伴い、当該パケット識別子を有する再送要求を送信した回数(以下、単に“回数”と記す場合がある)の初期値“1”との対を消失リストに登録する。
再送要求送信部251は、第N期限情報が示す第Nの期限までにパケット受信部241によって受信されなかったパケットを識別するパケット識別子を有するN回目の再送要求を送信装置1に送信するのに伴い、消失リストに登録されている当該パケット識別子と対になる回数をNに更新する。
端末出力部26は、各種の情報を出力し得る。各種の情報とは、例えば、前述したパケットなどである。
音声出力部261は、パケット取得部231が次に出力するパケットを取得した場合に、当該次に出力するパケットを音声出力する。パケット取得部231が次に出力するパケットを取得しない場合に、音声出力部261は、例えば、パケット生成部235が生成したパケットであり、当該次に出力するパケットに対応するパケットを音声出力しても良い。音声出力部261は、パケット取得部231が次に出力するパケット(例えばパケットk)を取得しない場合、例えば、期限情報が有する出力時刻(例えば出力時刻t(k))を用いてタイムアウトか否かを判断し、パケット生成部235は、タイムアウトと判断した場合に、当該次に出力するパケットに対応するパケットの生成を行ってもよい。
DA変換手段2611は、パケット取得部231が取得したパケットをアナログ変換し、アナログ音声信号を生成する。アナログ変換とは、デジタルの音声データを、DA変換回路が有する発振素子等から出力されるクロックに従う周期で読み出し、アナログ波形を生成し、アナログの音声信号に変換する処理である。
音声出力手段2612は、DA変換手段2611が生成した音声信号を、スピーカー等の出力デバイスを介して音声出力する。
格納部11、端末識別子格納部111、端末数情報格納部112、音声データ格納部113、送信時刻情報格納部114、端末格納部21、パケット格納部211、期限情報格納部212、出力時刻情報格納部213、および消失リスト格納部214は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
格納部11等に端末識別子等の情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部11等で記憶されるようになってもよく、通信回線等を介して送信された情報が格納部11等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部11等で記憶されるようになってもよい。
受付部12、および端末受付部22は、入力デバイスのデバイスドライバーによって、または入力デバイスとそのデバイスドライバー等とで実現され得る。入力デバイスは、例えば、マイクロフォン、キーボードやマウスやタッチパネルによるもの等、何でもよい。音声データ受付部121、および音声受付手段1211は、マイクロフォンなどの音声入力デバイスのデバイスドライバーによって、または音声入力デバイスとそのデバイスドライバー等とで実現され得る。AD変換手段1212は、例えばAD変換回路などで実現され得る。
処理部13、端末数情報取得部131、方式決定部132、チェックサムパケット生成部133、端末処理部23、パケット取得部231、判断部232、通信関連情報取得部233、通信パラメータ変更部234、パケット生成部235、第一速度情報取得部236、第二速度情報取得部237、および補完処理部238は、通常、MPUやメモリ等から実現され得る。処理部13等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現してもよい。
受信部14、再送要求受信部141は、端末受信部24、パケット受信部241は、通常、無線または有線の通信手段で実現されるが、放送を受信する手段で実現されてもよい。
送信部15、パケット送信部151、パケット再送部152、端末送信部25、および再送要求送信部251は、通常、無線または有線の通信手段で実現されるが、放送手段で実現されてもよい。
出力部16、および端末出力部26は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えてもよい。出力部16等は、出力デバイスのドライバーソフトによって、または出力デバイスとそのドライバーソフト等とで実現され得る。音声出力部261、および音声出力手段2612は、スピーカー等の音声出力デバイスを含むと考えても含まないと考えてもよい。DA変換手段2611は、例えばDA変換回路などで実現され得る。
次に、音声通信システムの動作について図4および図5のフローチャートを用いて説明する。図4は、送信装置1の動作を説明するフローチャートである。
(ステップS401)処理部13は、初期処理を実行する。初期処理は、例えば、パケットを送信する方式を示す方式情報に初期値をセットする処理などを含む。初期値は、通常“マルチキャスト”であるが、“ユニキャスト”でもよい。初期値は、前回の動作終了時点における方式情報の値であってもよい。初期値は、格納部11に格納されていてもよいし、方式決定部132が保持していてもよく、その所在は問わない。
(ステップS402)音声データ受付部121は、音声受付手段1211が音声を受け付けたか否かを判別する。音声受付手段1211が音声を受け付けた場合はステップS403に進み、受け付けていない場合はステップS404に進む。
(ステップS403)AD変換手段1212は、音声受付手段1211が受け付けた音声をデジタル変換し、音声データを取得する。音声データ受付部121は、取得された音声データを音声データ格納部113に蓄積する。これによって、音声データ格納部113には、音声データ受付部121が受け付けた音声データを構成する2以上のパケットが、各パケットを識別するパケット識別子と対に格納される結果となる。その後、ステップS402に戻る。
(ステップS404)処理部13は、変数iに初期値“1”をセットする。
(ステップS405)処理部13は、音声データ格納部113にi番目のパケットがあるか否かを判別する。音声データ格納部113にi番目のパケットがある場合はステップS406に進み、ない場合はステップS402に戻る。
(ステップS406)パケット送信部151は、i番目のパケットを、端末識別子格納部111に格納されている2以上の端末識別子で識別される2以上の受信装置に、方式情報が示す方式で送信する。パケット送信部151は、音声データ格納部113に格納されているi番目のパケットであり、送信したパケットに対応する送信済みパケットに、送信済みを示すフラグを付加してもよい。
(ステップS407)処理部13は、チェックサムパケットを生成するか否かを判断する。例えば、処理部13は、音声データを構成する2以上のパケットの全てに対してチェックサムパケット生成する場合は、常に生成すると判断してもよいし、所定数(例えば2個、10個など)に1個の割合で生成する場合は、当該所定数回に1回の割合で生成すると判断してもよい。チェックサムパケットを生成する場合はステップS408に進み、生成しない場合はステップ410に進む。
(ステップS408)チェックサムパケット生成部133は、当該パケットに対応するチェックサムパケットを、当該パケットを含む2以上の送信済みパケットを用いて生成する。なお、チェックサムパケットの生成手順については前述したので繰り返さない。
(ステップS409)パケット送信部151は、チェックサムパケット生成部133が生成したチェックサムパケットをも、当該2以上の受信装置に当該方式情報が示す方式で送信する。その後、ステップS410に進む。
(ステップS410)処理部13は、変数iをインクリメントする。その後、ステップS405に戻る。
(ステップS411)処理部13は、再送要求受信部141が再送要求を受信したか否かを判別する。再送要求受信部141が再送要求を受信した場合はステップS412に進み、受信していない場合はステップS413に進む。
(ステップS412)パケット再送部152は、再送要求受信部141が受信した再送要求が有するパケット識別子に対応するパケットを、当該再送要求を送信した受信装置2に、ユニキャストで送信する。その後、ステップS402に戻る。
(ステップS413)処理部13は、端末数情報を取得するタイミングか否かを判別する。具体的には、処理部13は、例えば、クロックを計数し、当該計数結果を示す第一回数が第一所定数に達した時、端末数情報を取得するタイミングであると判別し、第一回数をリセットする処理を、繰り返し実行してもよい。端末数情報を取得するタイミングである場合はステップS414に進み、端末数情報を取得するタイミングでない場合はステップS402に戻る。
(ステップS414)端末数情報取得部131は、端末識別子格納部111に格納されている2以上の端末識別子を用いて、端末数を示す端末数情報を取得する。
(ステップS415)方式決定部132は、端末数情報取得部131が取得した端末数情報に応じて、パケットを送信する方式として、マルチキャストを採用するか、ユニキャストを採用するかを決定する。詳しくは、方式決定部132は、端末数情報の示す端末数が、例えば、閾値以上または閾値より多い場合はマルチキャストを採用し、閾値以下または閾値より少ない場合はユニキャストを採用してもよい。
(ステップS416)方式決定部132は、決定した方式を方式情報にセットする。その後、ステップS402に戻る。
なお、図4のフローチャートに従う処理は、例えば、送信装置1の電源オンに応じて開始し、送信装置1の電源オフまたは終了処理の割り込み等に応じて終了する。ただし、処理の開始または終了のためのトリガーは問わない。
また、図4では省略しているが、処理部13は、新たな受信装置2の追加や既存の受信装置2の離脱の有無を監視して、新たな受信装置2の追加があれば、当該受信装置2を識別する端末識別子を端末識別子格納部111に蓄積する一方、既存の受信装置2の離脱があれば、当該受信装置2を識別する端末識別子を端末識別子格納部111から削除する処理も行う。
また、図4のフローチャートの説明において、“マルチキャスト”は“ブロードキャスト”と読み替えてもよい。
図5は、受信装置2の動作を説明するフローチャートである。
(ステップS501)パケット受信部241は、パケットを受信したか否かを判別する。パケットを受信した場合はステップS502に進み、パケットを受信していない場合はステップS503に進む。
(ステップS502)パケット受信部241は、受信したパケットを、当該パケットを識別するパケット識別子と対に、パケット格納部211に蓄積する。これに伴い、端末処理部23は、パケット格納部211に格納された2以上の各パケットの出力時刻を決定し、出力時刻情報を出力時刻情報格納部213に蓄積する。その後、ステップS501に戻る。
(ステップS503)音声出力部261は、次に出力するパケットがパケット格納部211にあるか否かを判別する。次に出力するパケットがパケット格納部261ある場合はステップS504に進み、ない場合はステップS505に進む。
(ステップS504)パケット取得部231は、当該パケットをパケット格納部211から取得する。その後、ステップS507に進む。
(ステップS505)音声出力部261は、タイムアウトか否かを判断する。例えば、音声出力部261は、前回のパケット出力からの経過時間が閾値以上になる又は閾値を超えると、タイムアウトと判断してもよい。タイムアウトであると判断された場合はステップS506に進み、タイムアウトとではないと判断された場合はステップS508に進む。
(ステップS506)パケット生成部235は、パケット受信部241が受信したパケットであり、チェックサムパケットを含む2以上のパケットを用いて、次に出力するパケットを生成する。なお、次に出力するパケットを生成する手順については前述したので繰り返さない。その後、ステップS507に進む。
(ステップS507)DA変換手段2611は、パケット取得部231が取得したパケットまたはパケット生成部235が生成したパケットをアナログ変換し、音声信号を生成する。音声出力手段2612は、DA変換手段2611が生成した音声信号をスピーカーなどの出力デバイスを介して出力する。その後、ステップS501に戻る。
(ステップS508)端末処理部23は、再送要求を送信するタイミングか否かを判別する。具体的には、端末処理部23は、例えば、クロックを計数し、当該計数結果を示す第二回数が第二所定数に達した時、パケットを出力するタイミングであると判別し、第二回数をリセットする処理を、繰り返し実行してもよい。再送要求を送信するタイミングである場合はステップS509に進み、再送要求を送信するタイミングでない場合はステップS514に進む。
(ステップS509)再送要求送信部251は、次のパケットに対する再送要求を送信する処理である再送要求送信処理を実行する。詳しくは、再送要求送信部251は、次のパケットを識別するパケット識別子を有する再送要求を、当該受信装置2を識別する端末識別子と対に、送信装置1に送信する。1回目の再送要求の場合は、再送要求送信部251は、当該パケット識別子と当該回数i(初期値“1”)との対を、消失リスト格納部214に格納されている消失リストに登録し、2回目の再送要求の場合は、回数iをインクリメントする処理を実行してもよい。その後、ステップS501に戻る。
(ステップS510)端末処理部23は、速度情報を取得するタイミングか否かを判別する。具体的には、端末処理部23は、例えば、クロックを計数し、当該計数結果を示す第三回数が第三所定数に達した時、速度情報を取得するタイミングであると判別し、第三回数をリセットする処理を、繰り返し実行してもよい。速度情報を取得するタイミングである場合はステップS511に進み、速度情報を取得するタイミングでない場合はステップS514に進む。
(ステップS511)第一速度情報取得部236は、第一速度情報を取得する。なお、第一速度情報については前述したので繰り返さない。
(ステップS512)第二速度情報取得部237は、第二速度情報を取得する。なお、第二速度情報については前述したので繰り返さない。
(ステップS513)補完処理部238は、取得した第一および第二の2つの速度情報を用いて、ずれ情報を取得し、取得したずれ情報に基づいて、ずれ補完処理を行う。なお、ずれ情報およびずれ補完処理については前述したので繰り返さない。これにより、送信装置1および受信装置2の間のクロック周波数の誤差は音声伸縮処理等により補完され、当該誤差に起因する出力音声の乱れが、解消または軽減される。その後、ステップS501に戻る。
(ステップS514)端末処理部23は、通信関連情報を取得するタイミングか否かを判別する。具体的には、端末処理部23は、例えば、クロックを計数し、当該計数結果を示す第四回数が第四所定数に達した時、通信関連情報を取得するタイミングであると判別し、第四回数をリセットする処理を、繰り返し実行してもよい。通信関連情報を取得するタイミングである場合はステップS515に進み、通信関連情報を取得するタイミングでない場合はステップS501に戻る。
(ステップS515)通信関連情報取得部233は、例えば、端末数、エラー率情報、正常率情報のうちの、いずれかの情報を含む通信関連情報を取得する。なお、通信関連情報の取得手順については前述したので繰り返さない。
(ステップS516)通信パラメータ変更部234は、パケット格納部211の容量、再送要求送信部251が再送要求を送信可能な回数N、第一の期限から回数Nに対応する第Nの期限までのN個の期限、のうちの1種類以上の情報である通信パラメータを、通信関連情報取得部233が取得した通信関連情報に応じて変更する。なお、通信パラメータの変更手順については前述したので繰り返さない。その後、ステップS501に戻る。
なお、図5のフローチャートの従う処理は、例えば、受信装置2の電源オンに応じて開始し、受信装置2の電源オフまたは終了処理の割り込み等に応じて終了する。ただし、この処理を開始または終了するためのトリガーは問わない。
また、図5のフローチャートにおいては、次に出力するパケットがないと判別された場合、タイムアウトになるまでの期間に再送要求の送信を行い、タイムアウトになったら、チェックサムを含む2以上のパケットによる補完を行ったが、例えば、次に出力するパケットがないと判別された場合、補完に必要なチェックサムを含む2以上のパケットが揃ったか否かを判別し、揃っていたら補完を行い、揃っていなければ再送要求の送信を行うようにしてもよい。そして、タイムアウトになっても、次に出力するパケットがなく、チェックサムを含む2以上のパケットによる補完も行えない場合に、当該次に出力するパケットの出力は断念し、スムージング処理を行ってもよい。スムージング処理とは、当該次に出力するパケットの直前に出力したパケットと、当該次に出力するパケットの直後に出力するパケットとの間のギャップで生じるノイズであるギャップノイズを低減する処理である。スムージング処理は、例えば、当該直前に出力したパケットの音声を無音までフェードアウトした後、無音から、直後に出力するパケットの音声レベルまでフェードインする処理などであるが、ギャップを滑らかに繋いでギャップノイズを低減する処理であれば、どのような処理でもよい。
また、図5のフローチャートにおいて、上記ステップS509に代えて、以下のようなステップS509a〜S509eが実行されてもよい。
(ステップS509a)判断部232は、MPUの内蔵時計から現在時刻を取得する。または、判断部232は、音声出力部261が直前に出力したパケットのパケット識別子を取得してもよい。
(ステップS509b)判断部232は、取得した現在時刻と、出力時刻情報格納部213に格納されている出力時刻情報とを用いて、出力時刻が現在時刻よりも第一時間T(1)後のパケットを識別するパケット識別子をパケット格納部211から取得する。または、判断部232は、音声出力部261が直前に出力したパケットのパケット識別子に自然数(例えば、“N−1”またはそれ以下の自然数)を加算したパケット識別子を、例えば音声出力部261から取得してもよい。
(ステップS509c)判断部232は、出力時刻が現在時刻よりも第一時間T(1)後のパケットが受信済みか否かを判断する。判断部232は、例えば、出力時刻が現在時刻よりも第一時間T(1)後のパケットを識別するパケット識別子を取得できた場合に、当該パケットが受信済みであると判断し、かかるパケット識別子を取得できなかった場合に、当該パケットは受信済みでないと判断してもよい。または、判断部232は、上記のようにして音声出力部261から取得したパケット識別子で識別されるパケットが受信済みか否かを判断してもよい。かかるパケット識別子で識別されるパケットが受信済みでない場合はステップS509dに進み、受信済みである場合はステップS509eに進む。
(ステップS510d)再送要求送信部251は、かかるパケット識別子で識別されるパケットに対する1回目の再送要求を送信する処理である第一再送要求送信処理を実行する。なお、第一再送要求送信処理につては後述する。
(ステップS510e)再送要求送信部251は、消失リストに登録されているパケット識別子で識別されるパケットに対する2回目〜N回目の再送要求を送信する処理である第二再送要求送信処理を実行する。なお、第一再送要求送信処理につては後述する。その後、ステップS501に戻る。
上記ステップS510dの第一再送要求送信処理では、例えば次のステップS601〜S603が実行されてもよい。
(ステップS601)再送要求送信部251は、当該パケットを識別するパケット識別子を有する1回目の再送要求を送信装置1に送信する。
(ステップS602)再送要求送信部251は、当該パケット識別子と対になる回数iに初期値“1”をセットする。
(ステップS603)再送要求送信部251は、当該パケット識別子と当該回数iとの対を、消失リスト格納部214に格納されている消失リストに登録する。その後、上位処理にリターンする。
上記ステップS510eの第二再送要求送信処理では、例えば、以下のステップS701〜S708が実行されてもよい。
(ステップS701)再送要求送信部251は、変数jに初期値“1”をセットする。
(ステップS702)再送要求送信部251は、消失リストにj番目のパケット識別子があるか否かを判別する。消失リストにj番目のパケット識別子がある場合はステップS703に進み、ない場合は上位処理にリターンする。
(ステップS703)再送要求送信部251は、j番目のパケット識別子で識別されるパケットは受信済みか否かを判別する。具体的には、再送要求送信部251は、例えば、パケット格納部211にj番目のパケット識別子で識別されるパケットが格納されていれば、j番目のパケット識別子で識別されるパケットが受信済みであると判断し、格納されていなければ、受信済みでないと判断してもよい。j番目のパケット識別子で識別されるパケットが受信済みである場合はステップS704に進み、受信済みでない場合はステップS705に進む。
(ステップS704)再送要求送信部251は、j番目のパケット識別子と回数iとの対を消失リストから削除する。その後、ステップS708に進む。
(ステップS705)再送要求送信部251は、j番目のパケット識別子に対応する回数iが回数N以上であるか否かを判別する。j番目のパケット識別子に対応する回数iが回数N以上でない(つまり、回数iが回数N未満である)場合はステップS706に進み、回数iが回数N以上である場合はステップS708に進む。
(ステップS706)再送要求送信部251は、j番目のパケット識別子に対応する回数iをインクリメントする。
(ステップS707)再送要求送信部251は、j番目のパケット識別子を有するi回目の再送要求を送信装置1に送信する。その後、ステップS703に戻る。
(ステップS708)再送要求送信部251は、変数jをインクリメントする。その後、ステップS702に戻る。
上記ステップS501dの第一再送要求送信処理および上記ステップS501eの第二再送要求送信処理によれば、受信装置2が、次に出力するパケット(例えばパケット“k”)よりも後のパケットであり、次のパケットを出力する時点でバッファリングされているべきパケット(例えば、パケット“k+4”など)がない場合に、かかるロストパケットに対する再送要求を送信し、送信装置1は、当該ロストパケットを当該受信装置2にユニキャストで送信することで、当該ロストパケットの出力時刻が到来する前に、当該ロストパケットのリカバーに成功している可能性が高まる。
以下、本実施の形態における音声通信システムの具体的な動作について説明する。ただし、本動作例は、本発明を何ら限定するものではなく、適宜変更され得ることはいうまでもない。
現在、送信装置1は、例えば、国際会議場やスタジアム等で同時通訳が発する声の音声データをWi−Fi(登録商標)で送信している。2以上の各受信装置2は、音声データを受信し、同時通訳の声を音声出力している。
送信装置1の端末識別子格納部111には、当該2以上(例えば、数百、数千など)の受信装置2を識別する2以上の端末識別子が格納されている。端末数情報格納部112には、本音声通信システムを構成する受信装置2の数(端末数)を示す端末数情報が格納されている。格納部11には、“マルチキャスト”を示す方式情報が格納されている。音声データ格納部113には、音声データ受付部121が現在までに受け付けた音声データを構成する2以上のパケットが、各パケットを識別するパケット識別子(例えば“1”,“2”,…,“k”,…といった、順序を示す識別番号)と対に格納されている。
2以上の各受信装置2のパケット格納部211には、パケット受信部241が現在までに受信したパケットが、当該パケットを識別するパケット識別子と対に格納されている。なお、パケット格納部211の容量は、端末ごとに異なっていてよい。
期限情報格納部212には、第一の期限から第Nの期限までのN個の期限に対応するN個の期限情報が格納されている。N個の期限情報とは、第一の期限を示す第一期限情報、第二の期限を示す第二期限情報、…、および第Nの期限を示す第N期限情報である。なお、自然数Nは、端末ごとに異なっていてよい。
送信装置1において、音声データ受付部121が音声データを受け付けると、当該音声データを構成する2以上の各パケットが、当該パケットを識別するパケット識別子と対に、音声データ格納部113に蓄積される。
パケット送信部151は、パケットを送信するタイミングか否かを判別しており、パケットを送信するタイミングである場合、音声データ格納部113に格納されている2以上のパケットを、端末識別子格納部111に格納されている2以上の端末識別子で識別される2以上の受信装置に、方式情報が示す方式(現在は、マルチキャスト)で順次送信する。
チェックサムパケット生成部133は、パケット送信部151が送信するパケットに対応するチェックサムパケットを、当該パケットを含む2以上の送信済みパケットを用いて生成する。例えば、パケット送信部151が送信するパケットがパケット“m100”であり、一のチェックサムパケットの生成に用いるパケットの数が10個である場合、チェックサムパケット生成部133は、当該パケット“m100”に対応するチェックサムパケット“r100”を、当該パケット“m100”を含む過去の10個のパケット“m091”,“m092”,…,“m100”を用いて生成してもよい。パケット送信部151は、パケット“m100”の送信後、こうしてチェックサムパケット生成部133が生成したチェックサムパケット“r100”をも、当該2以上の受信装置に当該方式で送信する。
以上の処理が繰り返されることで、音声データを構成する2以上のパケットと、当該2以上のパケットに対応する2以上のチェックサムパケットとが、交互に、2以上の各受信装置2にマルチキャストで送信される。
処理部13は、再送要求受信部141が再送要求を受信したか否かも判別している。再送要求受信部141が再送要求を受信した場合、パケット再送部152は、当該再送要求が有するパケット識別子に対応するパケットを音声データ格納部113から取得し、取得したパケットを、当該再送要求を送信した受信装置2に、ユニキャストで送信する。
処理部13は、端末数情報を取得するタイミングか否かをも判別している。端末数情報を取得するタイミングである場合、端末数情報取得部131は、端末識別子格納部111に格納されている2以上の端末識別子を用いて、端末数を示す端末数情報を取得する。方式決定部132は、この端末数情報に応じて、パケットを送信する方式として、マルチキャストを採用するか、ユニキャストを採用するかを決定する。例えば、端末数情報の示す端末数が、閾値以上または閾値より多い場合はマルチキャストを採用し、閾値以下または閾値より少ない場合はユニキャストを採用することが決定されてもよい。方式決定部132は、こうして決定した方式を方式情報にセットする。それによって、例えば、既存の端末の離脱によって、端末数が閾値を下回ると、パケットの送信方式は、マルチキャストからユニキャストに変更される。その後、新たな端末の参加によって、端末数が閾値を上回ると、パケットの送信方式は、ユニキャストからマルチキャストに変更される。
2以上の各受信装置2において、パケット受信部241がパケットを受信すると、当該パケットは、当該パケットを識別するパケット識別子と対に、パケット格納部211に蓄積される。
パケット取得部231は、パケットを出力するタイミングか否かを判別しており、パケットを出力するタイミングである場合、次に出力するパケットをパケット格納部211から取得する。具体的には、パケット取得部231は、直前に出力されたパケットのパケット識別子を記憶しており、記憶している識別子の次の識別子(例えば、直前のパケットのパケット識別子に1を加えた数)に対応するパケットをパケット格納部211から探索し、取得する。
パケット取得部231が次に出力するパケットを取得しない場合、音声出力部261は、計時を開始し、タイムアウトか否かを判断する。タイムアウトと判断されると、パケット生成部235は、パケット受信部241が受信したパケットであり、チェックサムパケットを含む2以上のパケットを用いて、次に出力するパケットを生成する。例えば、パケット格納部211に、パケットおよびチェックサムパケット“m091”,“r091”,“m092”,“r092”,…,“m099”,“r099”,“r100”,“m101”,“r101”,…が格納されており、出力時刻が現在時刻に対応するパケットがパケット“m100”で、このパケット“m100”が消失している場合、パケット生成部235は、パケット格納部211に格納されている9個のパケット“m091”〜“m099”およびチェックサムパケット“r100”を用いて、当該消失したパケット“m100”を生成する。
音声出力部261は、パケット格納部211から取得したパケット、またはパケット生成部235が生成したパケット、を音声出力する。詳しくは、音声出力部261は、当該パケットをアナログ変換して、音声を取得し、スピーカーから出力する。
端末処理部23は、再送要求を行うタイミングか否かを判別しており、再送要求を行うタイミングである場合、
再送要求送信部251は、再送要求送信処理を実行する。再送要求送信処理では、再送要求送信部251は、最初、次に出力するパケットを識別するパケット識別子を有する1回目の再送要求を、送信装置1に送信する。
1回目の再送要求を送信してから第一の期限までに、当該次に出力するパケットが受信されない場合、再送要求送信部251は、当該次に出力するパケットに対する2回目の再送要求を、次回の再送要求を行うタイミングで送信する。2回目の再送要求を送信してから第二の期限までに、当該次に出力するパケットが受信されない場合、再送要求送信部251は、当該次に出力するパケットに対する3回目の再送要求を、次々回の再送要求を行うタイミングで送信する。かかる処理は、タイムアウトとなるまでに、最大でN回繰り返される。
タイムアウト前に当該次に出力するパケットが受信された場合、音声出力部261は、当該受信されたパケットを音声出力し、受信されない場合、音声出力部261は、当該次に出力するパケットに対応するパケットであり、パケット生成部235が上記のようにチェックサムパケットを用いて生成したパケットを音声出力する。
端末処理部23は、通信関連情報を取得するタイミングか否かを判別している。通信関連情報を取得するタイミングであると判別された場合、通信関連情報取得部233は、例えば、端末数、エラー率情報、正常率情報のうちの、いずれかの情報を含む通信関連情報を取得する。通信パラメータ変更部234は、パケット格納部211の容量、再送要求送信部251が再送要求を送信可能な回数N、第一の期限から回数Nに対応する第Nの期限までのN個の期限、のうちの1種類以上の情報である通信パラメータを、通信関連情報取得部233が取得した通信関連情報に応じて変更する。
例えば、通信関連情報が端末数を含む場合、通信パラメータ変更部234は、端末数が閾値以上または閾値より多ければ、容量を増やして、回数Nを多くし、N個の期限を早めてもよいし、端末数が閾値以下または閾値より少なければ、回数Nを少なくし、N個の期限を遅くして、容量を減らしてもよい。
関連情報がエラー率情報を含む場合、通信パラメータ変更部234は、エラー率情報の示すエラー率が閾値以上または閾値より高ければ、または、容量を増やして、回数Nを多くし、N個の期限を早めてもよいし、エラー率が閾値以下または閾値より低ければ、回数Nを少なくし、N個の期限を遅くして、容量を減らしてもよい。または、通信関連情報が正常率情報を含む場合、通信パラメータ変更部234は、正常率情報の示す正常率が閾値以下または閾値より低ければ、容量を増やして、回数Nを多くし、N個の期限を早めてもよいし、正常率が閾値以上または閾値より高ければ、回数Nを少なくし、N個の期限を遅くして、容量を減らすことも可能である。
端末処理部23は、速度情報を取得するタイミングか否かをも判別している。速度情報を取得するタイミングであると判別された場合、第一速度情報取得部236は、第一速度情報を取得し、第二速度情報取得部237は、第二速度情報を取得する。補完処理部238は、取得された第一および第二の2つの速度情報を用いて、ずれ情報を取得し、取得したずれ情報に基づいて、ずれ補完処理を行う。例えば、第一速度情報および第二速度情報に対応する2つの速度の比が“1000パケット/秒”対“1000.1パケット/秒”つまり10000:10001である場合、補完処理部238は、受信装置2側のクロックの周期を1/10000だけ遅延させる補完処理を行ってもよい。これにより、送信装置1および受信装置2の間のクロック周波数の誤差に起因する出力音声の乱れが解消または軽減される。
以上、本実施の形態によれば、送信装置1は、音声データを受け付けると、音声データを構成する2以上のパケットであり、パケットを識別するパケット識別子に対応する2以上のパケットを、順次送信し、パケット識別子を有する再送要求を受信装置2から受信すると、再送要求が有するパケット識別子に対応するパケットを、再送要求を送信した受信装置2に、ユニキャストで送信し、受信装置2は、送信装置1からパケットを受信すると、パケット格納部211に蓄積し、パケット格納部211に格納されているパケットであり、パケットに対応するパケット識別子を用いて、次に出力するパケットを取得し、次に出力するパケットを取得した場合に、次に出力するパケットを出力する一方、第一の期限までに次に出力するパケットを受信しない場合に、再送要求を送信装置1に送信する音声通信システムにより、受信装置2でのパケットロスの発生を抑え、受信装置2で生じる音声の乱れを解消または軽減しつつ、受信装置2での音声出力の遅延を短縮できる。
また、上記音声通信システムにおいて、受信装置2は、第一の期限までに次に出力するパケットを受信したか否かを、パケットに対応するパケット識別子を用いて判断し、第一の期限までに次に出力するパケットを受信しなかったと判断した場合に、再送要求を送信装置に送信することで、受信装置でのパケットロスの発生を抑え、音声の乱れを解消または軽減しつつ、音声出力の遅延を短縮できる。
また、上記音声通信システムにおいて、受信装置2は、第Nの期限(Nは2以上の自然数)までに次に出力するパケットを受信しない場合に、N回目の再送要求を送信装置に送信することにより、受信装置2では、1回目の再送要求を送信しても、次に出力するパケットが受信されない場合、2回目以降の再送要求を送信することで、ロストパケットのリカバー率の向上が期待できる。
また、上記音声通信システムにおいて、受信装置2は、送信装置1と当該受信装置2との間の通信に関する情報である通信関連情報を取得し、パケット格納部211の容量、再送要求を送信可能な回数N、第一の期限から回数Nに対応する第Nの期限までのN個の期限のうちの1種類以上の情報である通信パラメータを、通信関連情報に応じて、変更することにより、2以上の各受信装置2が、通信関連情報(端末数、エラー率等)を取得し、通信パラメータを通信関連情報に応じて動的に変更することで、送信装置1との間の通信に応じて、音声の乱れの解消または軽減を図ったり、バッファリング量の削減ひいては遅延の短縮を図ったりすることができる。
また、上記音声通信システムにおいて、通信関連情報は、パケットを受信する受信装置2の数である端末数、または受信装置2が次に出力するパケットを受信できないことに関するエラー率情報、または受信装置2が次に出力するパケットを受信できたこと関する正常率情報のうちのいずれかの情報を含むことにより、2以上の各受信装置2が、通信パラメータを通信関連情報に含まれる端末数、エラー率または正常率に応じて動的に変更することで、送信装置との間の通信で生じるパケットロスの頻度に応じて、音声の乱れの解消または軽減を図ったり、バッファリング量の削減ひいては遅延の短縮を図ったりすることができる。
また、上記音声通信システムにおいて、送信装置1は、パケットを受信する受信装置2の数に関する端末数情報を取得し、端末数情報に応じて、パケットを送信する方式として、マルチキャストまたはブロードキャストを採用するか、ユニキャストを採用するかを決定し、決定した方式に基づいて、パケットを送信することにより、送信装置1は、マルチキャストまたはブロードキャストと、ユニキャストとのうち、端末数に応じた方式でパケットを送信するので、端末数によらず、通信路の帯域への圧迫が軽減され、かつパケットロスによる音声の乱れが軽減される。
例えば、端末数が閾値以下または閾値より少ない場合は、利用帯域は多いがロスの少ないユニキャストでパケットを送信することで、帯域への圧迫と音声の乱れが共に軽減される端末数が閾値以上または閾値より多い場合は、利用帯域は少ないがロスの多いマルチキャストまたはブロードキャストでパケットを送信し、パケットロスが生じた場合の再送はユニキャストで行うことができる。
また、上記音声通信システムにおいて、送信装置1は、受信装置2が受信できなかったパケットを構成するためのパケットであるチェックサムパケットを、送信する2以上のパケットを用いて生成し、チェックサムパケットを含む3以上のパケットを送信し、受信装置2は、チェックサムパケットを含む3以上のパケットを受信し、次に出力するパケットを取得できなかった場合、チェックサムパケットを含む2以上のパケットを用いて、次に出力するパケットを生成することにより、受信装置2で、パケットロスが発生し、再送要求を1回以上送信しても、次に出力するパケットを受信できない場合、当該受信装置2が受信したチェックサムパケットを含む2以上のパケットを用いてロストパケットを復元することができる。その結果、例えば、再送要求を送信し続ける場合と比べて、送受信の効率が高まる。
また、上記音声通信システムにおいて、送信装置1は、アナログの音声を受け付ける音声受付手段1211と、音声をデジタル変換し、音声データを取得するAD変換手段1212とを有し、受信装置2は、パケットをアナログ変換し、音声を取得するDA変換手段2611と、音声を出力する音声出力手段2612とを有し、受信装置2は、パケットを受信する速度に関する第一速度情報を取得し、受信装置2の処理速度に関する第二速度情報を取得して、第一速度情報と第二速度情報とから取得される情報であり、送信装置1と受信装置2とのクロック周波数の誤差に関するずれ情報に基づいて、クロック周波数の誤差を補完する処理であるずれ補完処理を行うことにより、送信装置1と各受信装置2の間で生じるクロック周波数の誤差に起因する出力音声の乱れを低減できる。
さらに、本実施の形態における処理は、ソフトウェアで実現してもよい。そして、このソフトウェアをソフトウェアダウンロード等により配布してもよい。また、このソフトウェアをDVDなどの記録媒体に記録して流布してもよい。なお、このことは、本明細書における他の実施の形態においても該当する。
なお、本実施の形態における送信装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、音声データを2以上の受信装置2に送信する送信装置1のコンピュータによって実行されるプログラムであって、前記コンピュータを、音声データを受け付ける音声データ受付部121と、前記音声データを構成する2以上のパケットであり、パケットを識別するパケット識別子に対応する2以上のパケットを、順次送信するパケット送信部151と、パケット識別子を有し、第一の期限までに次に出力するパケットを受信しない場合に送信された再送要求を前記受信装置2から受信する再送要求受信部141と、前記再送要求が有するパケット識別子に対応するパケットを、前記再送要求を送信した受信装置2に、ユニキャストで送信するパケット再送部152として機能させるためのプログラムである。
また、本実施の形態における受信装置2を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、上記送信装置1から音声データを受信し出力する受信装置2のコンピュータによって実行されるプログラムであって、前記コンピュータがアクセス可能な記録媒体は、パケットを格納するパケット格納部211を格納しており、前記コンピュータを、前記送信装置1からパケットを受信し、前記パケット格納部211に蓄積するパケット受信部241と、前記パケット格納部211に格納されているパケットであり、パケットに対応するパケット識別子を用いて、次に出力するパケットを取得するパケット取得部231と、前記パケット取得部231が次に出力するパケットを取得した場合に、前記次に出力するパケットを出力する音声出力部261と、前記パケット受信部241が第一の期限までに次に出力するパケットを受信しない場合に、再送要求を前記送信装置1に送信する再送要求送信部251として機能させるためのプログラムである。
図6は、本実施の形態におけるプログラムを実行して、音声通信システムを実現するコンピュータシステム900の外観の一例を示す図である。本実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現され得る。図6において、コンピュータシステム900は、ディスクドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、ディスプレイ904とを備える。なお、キーボード902やマウス903やディスプレイ904をも含むシステム全体をコンピュータと呼んでもよい。
図7は、コンピュータシステム900の内部構成の一例を示す図である。図7において、コンピュータ901は、ディスクドライブ905に加えて、MPU911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するストレージ914と、MPU911、ROM912等を相互に接続するバス915と、インターネット等のネットワークへの接続を提供するネットワークカード916と、を備える。ストレージ914は、例えば、ハードディスク、ソリッドステートドライブ、フラッシュメモリなどである。
コンピュータシステム900に、音声通信システムの機能を実行させるプログラムは、例えば、DVD、CD−ROM等のディスク921に記憶されて、ディスクドライブ905に挿入され、ストレージ914に転送されてもよい。これに代えて、そのプログラムは、インターネット等のネットワークを介してコンピュータ901に送信され、ストレージ914に記憶されてもよい。プログラムは、実行の際にRAM913にロードされる。なお、プログラムは、ディスク921、またはネットワークから直接、ロードされてもよい。また、ディスク921に代えて他の着脱可能な記録媒体(例えば、DVDやメモリカード等)を介して、プログラムがコンピュータシステム900に読み込まれてもよい。
プログラムは、コンピュータの詳細を示す901に、音声通信システムの機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、上記実施の形態において、一の装置に存在する2以上の通信手段(受信部14および送信部15など)は、物理的に一の媒体で実現されてもよいことは言うまでもない。
また、上記実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。