(57)【要約】    【課題】      ジッタを吸収するためにフレームの間引き／間延び処理が必要な場合であっても復号化側で音を滑らかに繋ぐことができるようにすること。    【解決手段】  受信パケットから取り出された音声データの格納場所を計算してバッファ２１に格納される。このとき、ジッタバッファ拡大・縮小判定部２２が前記受信パケットのジッタ値から受信パケット内の音声データに対して間延び又は間引きの要否を判定し、間延び又は間引き依頼を発生させる。ジッタバッファ制御部２３が間延び又は間引き発生の通知を音声復号化部１８に出すと共に、バッファ２１のポインタを操作し間延び又は間引き処理を行う。そして、ジッタの調整された音声データを音声復号化部１８に出力する。  【選択図】      図３
2005064873.tif 000002
【特許請求の範囲】
【請求項１】
受信パケットのジッタ値から間延び又は間引きの要否を判定する工程と、間延び又は間引き「要」と判定した場合、間延び又は間引き依頼を発生する工程と、間延び又は間引き依頼を受けて前記バッファ内の音声データに対して間延び又は間引き処理を実行する工程と、間延び又は間引きの発生を音声復号化部へ通知する工程と、を具備するジッタバッファ制御方法。
【請求項２】
間延び処理では、バッファ領域が拡大するようにバッファポインタを操作し、間引き処理では、バッファ領域が縮小するようにバッファポインタを操作することを特徴とする請求項１記載のジッタバッファ制御方法。
【請求項３】
バッファ拡大用変数Ａを認容ロス係数αに基づいて任意の初期値から減じていき、バッファ拡大用変数Ａがしきい値に到達する前にデータ廃棄が発生するジッタ値を検出したら間延び「要」と判定することを特徴とする請求項２記載のジッタバッファ制御方法。
【請求項４】
バッファ縮小用変数Ｂをバッファ縮小係数βに基づいて任意の初期値から減じていき、バッファ縮小用変数Ｂがしきい値に到達したら間引き「要」と判定することを特徴とする請求項２記載のジッタバッファ制御方法。
【請求項５】
受信パケットの到着順位の入れ替えが検出された場合、前記バッファ縮小係数βをバッファ縮小がかかりづらい方向に調整することを特徴とする請求項４記載のジッタバッファ制御方法。
【請求項６】
受信パケットから取り出された音声データが格納されるバッファと、前記受信パケットのジッタ値から間延び又は間引きの要否を判定し、間延び又は間引き「要」と判定した場合、間延び又は間引き依頼を発生する判定部と、間延び又は間引き依頼を受けて前記バッファ内の音声データに対して間延び又は間引き処理を実行すると共に間延び又は間引きの発生を音声復号化部へ通知する制御部と、を具備するジッタバッファ。
【請求項７】
パケット通信網に対してパケットの送受信を行うパケット送受信部と、入力音声をパケット化して前記パケット送受信部へ渡して送信させる送信部と、前記パケット送受信部が受信した受信パケットから音声データを取り出して復号化し音声出力する受信部と、を備え、前記受信部に請求項６記載のジッタバッファを備えたＩＰ電話機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネットプロトコルを利用したパケットネットワークにおける受信パケットのバッファリングシステムに適用可能なジッタバッファ制御方法及びＩＰ電話機に関する。
【背景技術】
【０００２】
パケット通信システムを用いて音声伝達を行う場合、受信パケットの到達時間のバラツキを吸収するために受信パケットをバッファリングする処理が必要となる。一般には、ジッタバッファを用いた対策が考えられている。例えば、パケットの到着時間から回線の分散（遅延時間）を求め、求めた分散結果からジッタバッファへの格納場所（ジッタを吸収するために最適と思われる遅延効果を持たせ得る場所）を決めてジッタバッファに格納することで、ジッタを吸収する方法がある（例えば、特許文献１参照）。
【特許文献１】特表２００２−５３５８８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のジッタバッファは、パケット受信動作に同期してジッタ調整（格納位置の計算及び格納）することでフレーム（パケットで運ばれる音声データ）の間引き／間延び処理を行った後、音声復号化部の再生速度に応じた速度でバッファから間引き／間延び処理後の音声データを読み出して音声復号化部へ出力する。
【０００４】
しかしながら、音声復号化部ではジッタバッファから供給される音声データのどこで間引き／間延び処理が加えられたのか判らないため、音声データの再生を実行したときに間引き／間延び処理の位置で音が滑らかに繋がらずに音声劣化が発生する不具合があった。
【０００５】
本発明は、以上のような実情に鑑みてなされたもので、ジッタを吸収するためにフレームの間引き／間延び処理が必要な場合であっても復号化側で音を滑らかに繋ぐことのできるジッタバッファ制御方法及びＩＰ電話機を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、受信パケットから取り出された音声データをバッファへ格納し、前記受信パケットのジッタ値から間延び又は間引きの要否を判定する。間延び又は間引き「要」と判定した場合に間延び又は間引き依頼を発生する。間延び又は間引き依頼を受けて前記バッファ内の音声データに対して間延び又は間引き処理を実行する一方、間延び又は間引きが発生したことを音声復号化部へ通知するものとした。
【発明の効果】
【０００７】
本発明によれば、ジッタを吸収するためにフレームの間引き／間延び処理が必要な場合であっても復号化側で音を滑らかに繋ぐことのできるジッタバッファ制御方法及びＩＰ電話機を提供できる。
【発明を実施するための最良の形態】
【０００８】
本発明の第１の態様は、受信パケットのジッタ値から間延び又は間引きの要否を判定する工程と、間延び又は間引き「要」と判定した場合に間延び又は間引き依頼を発生する工程と、間延び又は間引き依頼を受けて前記バッファ内の音声データに対して間延び又は間引き処理を実行する工程と、間延び又は間引きが発生したことを音声復号化部へ通知する工程とを具備するジッタバッファ制御方法である。
【０００９】
このようなジッタバッファ制御方法によれば、受信パケットのジッタ値から間延び又は間引きの要否を判定する工程から、間延び又は間引き処理を実行する工程及び間延び又は間引きが発生したことを音声復号化部へ通知する工程を分離したので、パケット受信動作に同期してジッタ値を計算して間延び又は間引きの要否を判定でき、且つ、音声復号化動作に同期してジッタ調整及び間延び又は間引きが発生したことの通知ができる。この結果、音声復号化部において通知に基づいて間延び又は間引き位置を判別して適切な処理を実行すれば自然な音声調整が実現される。
【００１０】
本発明の第２の態様は、第１の態様のジッタバッファ制御方法において、間延び処理では、バッファ領域が拡大するようにバッファポインタを操作し、間引き処理では、バッファ領域が縮小するようにバッファポインタを操作するものとした。
【００１１】
これにより、間延び処理の必要があれば、ジッタバッファ内においてポインタ操作によりバッファ拡大処理をすることができ、且つ、間延び処理されたことの通知を前記音声復号化部へ出すので、バッファ拡大によりフレームロスを効率的に抑制することができ、廃棄フレームの削減による音質改善が実現される。また、間引き処理の必要があれば、ジッタバッファ内においてポインタ操作によりバッファ領域を縮小することができ、且つ、間引き処理されたことの通知を前記音声復号化部へ出すので、バッファ領域の縮小によりバッファ内での滞留時間を短縮でき伝搬遅延を短縮して音声遅延を防止することができる。
【００１２】
本発明の第３の態様は、第２の態様のジッタバッファ制御方法において、バッファ拡大用変数Ａを認容ロス係数αに基づいて任意の初期値から減じていき、バッファ拡大用変数Ａがしきい値に到達する前にデータ廃棄が発生するジッタ値を検出したら間延び「要」と判定するものである。
【００１３】
これにより、簡単な計算で廃棄フレーム量を任意の値（例えば１％）以内に収めて音声の劣化を防止することができる。
【００１４】
本発明の第４の態様は、第２の態様のジッタバッファ制御方法において、バッファ縮小用変数Ｂをバッファ縮小係数βに基づいて任意の初期値から減じていき、バッファ縮小用変数Ｂがしきい値に到達したら間引き「要」と判定する。
【００１５】
これにより、間引き処理が短時間で連続して音声が劣化されることを防止できる。また、音声データがバッファ内で滞留時間を短縮できるので、音声の遅延を小さくすることができる。
【００１６】
本発明の第５の態様は、第４の態様のジッタバッファ制御方法において、受信パケットの到着順位の入れ替えが検出された場合、前記バッファ縮小係数βをバッファ縮小がかかりづらい方向に調整するものである。
【００１７】
これにより、バッファ縮小係数βをバッファ縮小がかかりづらい方向に調整するので、間引き処理が不用意に間引きして音声が劣化されることを防止できる。
【００１８】
本発明の第６の態様は、受信パケットから取り出された音声データが格納されるバッファと、前記受信パケットのジッタ値から間延び又は間引きの要否を判定し、間延び又は間引き「要」と判定した場合に間延び又は間引き依頼を発生する判定部と、間延び又は間引き依頼を受けて前記バッファ内の音声データに対して間延び又は間引き処理を実行すると共に間延び又は間引きが発生したことを音声復号化部へ通知する制御部と、を具備するジッタバッファである。
【００１９】
このようなジッタバッファによれば、受信パケットのジッタ値から間延び又は間引きの要否を判定する判定部と、間延び又は間引き処理を実行し間延び又は間引きが発生したことを音声復号化部へ通知する制御部とを分離したので、パケット受信動作に同期してジッタ値を計算して間延び又は間引きの要否を判定でき、且つ、音声復号化動作に同期してジッタ調整及び間延び又は間引きが発生したことの通知ができる。この結果、音声復号化部において間延び又は間引き位置を判別して適切な処理を実行すれば自然な音声調整が実現される。
【００２０】
本発明の第７の態様は、パケット通信網に対してパケットの送受信を行うパケット送受信部と、入力音声をパケット化して前記パケット送受信部へ渡して送信させる送信部と、前記パケット送受信部が受信した受信パケットから音声データを取り出して復号化し音声出力する受信部と、を備え、前記受信部に上記ジッタバッファを備えたＩＰ電話機である。
【００２１】
以上のようなジッタバッファを用いることにより、音声品質が改善され、音声遅延の少ない良好な音声通信を実現できる。
【００２２】
以下、本発明の一実施の形態について図面を参照して具体的に説明する。
【００２３】
図１は、本発明を適用可能なパケット通信システムの一例としてＩＰ電話網のネットワーク構成図が示されている。ＩＰ電話機において後述するジッタバッファ制御が実行される。ＩＰ電話機はルーティング機能を備えたゲートウェイ（ＧＷ）を介してＩＰ網に接続される。ＩＰ網は、インターネットプロトコルにしたがってＩＰパケットを送受信する通信網であり、パケット通信網の一つである。
【００２４】
図２にＩＰ電話機の機能ブロック図を示す。ＩＰ電話機の音声インターフェース部は、マイク等で構成される音声入力部１０とスピーカ等で構成される音声出力部１１とで構成される。また、ＩＰ電話機の通信インターフェース部は、パケット通信網１２との間でパケットの送受信を行うパケット送受信部１３で構成されている。図１のネットワーク構成であれば、パケット送受信部１３はインターネットプロトコルにしたがって動作することになる。なお、ゲートウェイＧＷがプロトコル変換サービスを提供してローカルなプロトコルを使用する特殊な形態も可能である。
【００２５】
かかるＩＰ電話機において、音声入力部１０から入力された音声は、音声符号化部１４で符号化（圧縮）されて例えば１０ｍｓ単位の音声データ（以下、「フレーム」という）に変換される。パケット形成部１５において所定フォーマットのパケットが形成される。例えば、ＲＴＰのようなプロトコルを利用してデータパケットをネットワーク上で送信する場合、ＲＴＰパケットのヘッダにタイムスタンプ、シーケンス番号が記述される。１パケットには、１つ又は複数のフレームが詰め込まれる。音声データはフレームとして送信されることになる。パケット形成部１５が生成したパケットはパケット送受信部１３がパケット通信網１２へ送信する。また、パケット送受信部１３はパケット通信網１２からパケットを受信する。受信パケットはパケット解析部１６においてヘッダが解析されると共にフレームが取り出される。フレームはジッタバッファ部１７に書き込まれる。ジッタバッファ部１７の動作制御については後述する。音声復号化部１８はジッタバッファ部１７からフレームを読み出して音声復号化処理し、音声データを復元し、音声出力部１１から音声出力する。
【００２６】
図３はジッタバッファ部１７の構成を示すブロック図である。ジッタバッファ部１７は、受信パケットから取り出されたフレームデータが格納されるバッファ２１、受信パケットのジッタ値からフレームデータの間延び又は間引きの要否を判定するジッタバッファ拡大・縮小判定部２２、バッファ領域の拡大又はバッファ領域の縮小判定結果によりフレームデータの間延び又は間引きを実行すると共に間引き／間延び処理の発生を外部へ通知するジッタバッファ制御部２３を備えている。特に、ブロック２４はパケット受信動作に同期した部分であり、ジッタ値の計算、格納、間延び／間引き要否判定が行われる。ブロック２５は音声復号化動作に同期した部分であり、バッファ２１に対するポインタ操作による間延び／間引きを実行し、間延び／間引きが行われたことの通知をする部分である。このように、ジッタバッファ１７の内部を、パケット受信動作に同期したジッタバッファ拡大・縮小判定部２２と、音声復号化動作に同期してバッファポインタ操作及び通知を行うジッタバッファ制御部２３とに分離している。
【００２７】
図４（ａ）（ｂ）を参照してジッタバッファ部１７の動作の概略について説明する。
【００２８】
図４（ａ）はパケット受信時のフロー図である。パケット解析部１６が受信したパケット内の音声データ（フレーム）（Ａ）はバッファ２１に格納される（Ｂ）。ジッタバッファ拡大・縮小判定部２２はデータ格納位置等の情報（Ｃ）からパケット個々のジッタを見て間延び又は間引き要否の判定を行う（Ｄ）。間延び又は間引きの必要が生じた場合はジッタバッファ制御部２３に対して間延び又は間引き処理を依頼する（Ｅ）。
【００２９】
図４（ｂ）はＣＯＤＥＣ起動タイミングのフロー図である。音声復号化部の起動は、システムによるが、例えば１０ｍｓ間隔で起動されるものとする。ジッタバッファ制御部２３は、間延び又は間引き処理の依頼があれば、間延び又は間引き処理の発生を音声復号化部１８へ通知する（Ｆ）。これにより、音声復号化部１８では、ジッタバッファ部１７において間延び処理（バッファ領域の拡大による空フレームの挿入）又は間引き処理（バッファ領域の縮小によるフレームの削除）が行われた場合であっても、間延び又は間引き処理が行われた通知を受けて音声を滑らかにつなげる処理を実現することができる。ジッタバッファ制御部２３は、後述するポインタ操作によるバッファ拡大又はバッファ縮小処理をバッファ２１に対して行う（Ｇ）。そして、間延び又は間引き処理が発生したことの通知及びバッファ拡大又はバッファ縮小処理による間延び又は間引き処理が完了したことを依頼元のジッタバッファ拡大・縮小判定部２２へ伝え（Ｈ）、バッファ２１はデータ（Ｉ）を音声復号化部１８へ渡す。なお、間延び・間引き処理発生の通知（Ｆ）はＣＯＤＥＣデータ受け渡し処理（Ｉ）の前までに実行されればよく、間延び・間引きバッファ処理（Ｇ）の前に限定されるものではない。
【００３０】
次に、ジッタバッファ拡大・縮小判定部２２におけるバッファ領域の拡大・縮小処理の計算内容について詳しく説明する。
【００３１】
図５（ａ）に示すように、バッファ２１はフレーム単位で構成され、整列順序は復号化順とする。サイズは有限のリングバッファ（Buffer size max）であるとする。かかる構成のバッファ２１を２つのポインタで制御する。図５（ｂ）に示すように、１つは受信フレームを格納するバッファ２１上の格納位置を示すＩＮ  Pointerであり、もう一つはバッファ２１から音声復号化部へ受信フレームを受け渡す位置を示すＯＵＴ  Pointerである。本明細書では、到着パケットのＩＮ  PointerとそのときのＯＵＴ  Pointerとの差を、個々のパケットのジッタ（pck jitter）と呼ぶこととする。この［pck jitter］をバッファ領域の拡大・縮小処理に使用する。図５（ｃ）に示す例では、Ａパケット（データはフレームデータ）のジッタは、pckＡ jitter＝ＯＵＴ  Pointer−ＩＮ  Pointer＝１−７＝−６で計算され、６フレーム分のジッタが発生していることを示している。また、ジッタバッファ遅延は、ＯＵＴ  Pointerと最も復号処理の遅い受信フレームの差をそのときのジッタバッファ遅延とする。図５（ｄ）に示す例では、ジッタバッファ遅延は、pckＡ jitter＝１−６＝−５となり、５フレーム分であると計算される。
【００３２】
いま、図６に示すような分散を持つパケットを受信した場合を考える。パケット構成は２フレーム／１パケットで、遅延分布は正規分布（中心遅延：２ｍｓ、標準偏差：９．１３９０ｍｓ）、遅延幅は５９ｍｓである。パケットロスは０％であるとする。
【００３３】
最初に、バッファ領域の拡大による間延び処理について説明する。本実施の形態では、容認ロス係数αとバッファ拡大用変数Ａとを用いて、ジッタバッファ内部で廃棄されるデータの発生頻度すなわちロス率を基に間延びの要否を判断し、ロス量をα内に収めるようにジッタバッファ内での遅延を大きくする。
【００３４】
図７に横軸に受信フレーム数をとり、縦軸に受信パケットジッタ値をとったある区間のグラフを示す。ジッタ値＝０の状態では、ＯＵＴ  Pointer−ＩＮ  Pointer＝０であるので、バッファ２１に格納した受信フレームをそのまま遅延無く音声復号化部１８へ渡している状態である。この状態では、音声復号化部１８へ渡すデータが途切れることはないが、後続パケットが１パケットでも遅れるとパケットロスが発生することになる。ジッタ値≧１の状態ではロスが発生する状態である。一方、ジッタ値≦−１の状態では正常に復号できる状態であり、ロスは発生しない。
【００３５】
ジッタバッファの処理に起因する認容ロス係数α＝１／１００にした場合のバッファ拡大用変数Ａと受信フレーム数との関係を図８に示す。認容ロス係数α＝１／１００に設定するとことはパケットロスの発生を１％以内に収めることを意味する。
【００３６】
図８は横軸に受信フレーム数をとり、縦軸にバッファ拡大用変数Ａをとったグラフであり、横軸は図７のグラフに対応している。バッファ拡大用変数Ａの傾きがαであり、ジッタ値＝１になると、バッファ拡大用変数ＡがＡ＝１となり、そこから２００フレーム（１００パケット）経過したところで、Ａ＝０となるようにαが設定されている。２００フレーム経過してＡ＝０になる前にジッタ値が１になった場合、ロス頻度が高いと判断できるので、バッファ領域の拡張が必要であると判定する。
【００３７】
図９はバッファ領域の拡大による間延び処理のフロー図である。バッファ拡大用変数Ａの初期値は「０」であり、ジッタ値を次式より計算する。
【００３８】
pck jitter＝ＯＵＴ  Pointer−ＩＮ  Pointer
最新の計算されたジッタ値の極性が０以下か否か判定する（Ｓ１０１）。図７の例ではＫ番目の受信フレームのジッタ値が＋１になっている。そのＫ番目の受信フレームはジッタ値が＋１であるので、正常に復号できないためジッタバッファ内部の処理で廃棄される（ロス発生）。ステップＳ１０１の判定ではpck jitter = 1であるのでステップＳ１０２へ進み、現在のバッファ拡大用変数Ａの値がＡ＞０で有るか否か判定する。例えば、Ｋ番目のフレームまでは、初期値＝０から変化していないとすれば、ステップＳ１０４へ進み、Ｋ番目の受信フレームのバッファ格納時に計算されたジッタ値＝＋１をバッファ拡大用変数Ａとする更新が行われる。再び、ステップＳ１０１へ戻る。図７の例では（Ｋ＋１）番目の受信フレームのジッタ値は０であるので、ステップＳ１０５へ進みバッファ拡大用変数ＡがＡ≧０であるか判定する。今、Ａ＝＋１であるのでステップＳ１０６へ進んでバッファ拡大用変数Ａをαで減じる修正が行われる。図７の例では、その後はジッタ値が＋１になる受信フレームがＬ番目の受信フレーム数まで存在しないので、図８に示すようにバッファ拡大用変数Ａがフレーム受信の度にαで減じられていき２００フレーム連続して減じられるとＡ＝０となる。バッファ拡大用変数Ａが０まで戻った後は、ステップＳ１０５からステップＳ１０７を経由してステップＳ１０１へ戻るのでバッファ拡大用変数ＡはＡ＝０を維持することになる。
【００３９】
一方、図７の例ではＬ番目で再びジッタ値が＋１に変化している。この結果、次のタイミングではステップＳ１０１からステップＳ１０２に進み、ステップＳ１０４でバッファ拡大用変数ＡがＡ＝＋１に更新される。その後は、上記したようにステップＳ１０６でαだけ減じられる処理が繰り返される。ところが、今回はバッファ拡大用変数ＡがＡ＝０になる前、すなわち前回ジッタ値が＋１になってから２００フレーム受信する前に、再びジッタ値が＋１になってしまっている。２００フレーム期間前に再びロスが発生したことを意味する。このような場合には、ジッタが大きくなってフレームを廃棄することとなる事態を防止するために、バッファ拡大処理を行う。そのために、図７に示す（Ｌ + 200）番目の手前でジッタ値が＋１になったならば、ステップＳ１０１，Ｓ１０２を経由してステップＳ１０３へ進み、１フレーム分の間延び処理を依頼することになる。この間延び処理の依頼は、ジッタバッファ拡大・縮小判定部２２からジッタバッファ制御部２３に対して間延び処理依頼（Ｅ）として出される。なお、間延び処理を行う条件は、２００フレーム期間経過前にパケットロス（又はフレームロス）が発生するといったことに限定されるものではなく、認容ロス係数αを調整して許容期間を長くしたり短くしたりすることができる。
【００４０】
ジッタバッファ制御部２３は、前述したようにバッファ２１のポインタを操作して、図１０に示すように空フレームが１フレーム追加されるようなバッファ領域の拡大による間延び処理を実行する一方、間延び処理が発生したことの通知（Ｆ）を音声復号化部１８へ出す。具体的には、音声復号化部１８へ出力するフレームに空フレームを１つ追加することにより、１フレーム余分にバッファ２１に蓄積できるようにする。または、音声復号化部１８へ間延び処理が発生したことの通知（Ｆ）を出しているので、実際に空フレームを音声復号化部１８へ渡さずに音声復号化部１８において同じフレームを２回使う又はからフレームを用意して音をつなげるようにしても良い。
【００４１】
このように、ジッタバッファ部１７で間延び処理が発生した場合には、間延び処理が発生したことを音声復号化部１８に通知できるので、音声復号化部１８において音声データの間延び処理位置に対して滑らかに音を繋げるような処理を行うことができ、自然な音声調整が実現される。また、簡単な計算で廃棄パケット（フレーム）量を所望の範囲内に収めて音声劣化を防止することができる。
【００４２】
次に、バッファ領域の縮小による間引き処理について説明する。本実施の形態では、ジッタ値に余裕のある状況（例えばジッタ値≦−２）が所定期間連続したらバッファ縮小処理を行うようにしている。
【００４３】
図１１に横軸に受信フレーム数をとり、縦軸に受信パケットジッタ値をとったある区間（２６００番付付近から３０００番付近）のグラフを示す。同図に示すように、２６４０番目付近から２８３０番目付近の受信フレームは、ジッタ値が−２以下の状態で安定している。ジッタ値が小さい（マイナス）ということは、バッファ２１に格納されてから出力されるまでの時間を短くできる余地があること意味する。すなわち、ジッタバッファでの伝送遅延を抑制する目的でＩＮ  pointer  とＯＵＴ  pointerの差を縮めることができる。そこで、ジッタバッファ縮小用変数Ｂとバッファ縮小係数βを用いて、ジッタ値が−２以下の状態が一定期間続いたらＩＮ  pointer  とＯＵＴ  pointerの差を縮める間引き処理を依頼し、ジッタ値を０近くまで縮めるものとした。
【００４４】
図１２はバッファ縮小用変数Ｂを初期値からバッファ縮小係数βに応じて減じていき、しきい値（Ｂ＝−１．８）に達したところでバッファ縮小処理を発生させた状態を示すグラフであり、横軸は図１１に対応している。２６４０番目付近から２８３０番目付近は、ジッタ値が−２以下なので、Ｂ値が減じられている状態が判る。そして、Ｂ値がしきい値＝−１．８に到達したところでＢ値がリセットされている。Ｂ値の初期値に応じてＢ値がしきい値＝−１．８に到達するまでの時間（フレーム数）が異なる。すなわち、バッファ縮小処理が発生するまでの時間が異なる。
【００４５】
図１３にＢ値の初期値としきい値（−１．８）に達するまでの時間との関係が示されている。初期値＝０にするとしきい値（−１．８）に達するまで約１４０パケット（フレーム）分の時間を要することが判る。もちろん、バッファ縮小係数βも時間に影響している。
【００４６】
図１４はバッファ縮小処理のフロー図である。バッファ縮小用変数Ｂの初期値は−１．５、バッファ縮小係数βの初期値は０．０１７を設定する。最初にジッタ値が−１以上であるか否か判定する（Ｓ２０１）。図１１に示す区間Ｌにおいてはジッタ値≦−２のフレームが続いている。かかる区間では、ジッタ値≦−２であるのでステップＳ２０１からステップＳ２０２に進んでバッファ縮小係数βに基づいてＢ値を減じる計算を行う。図１１の区間ＬではステップＳ２０１からステップＳ２０２へ進み、ステップＳ２０３を経由して繰り返しＢ値を減じていくことになる。そして、ステップＳ２０３の判断でＢ値がしきい値（−１．８）に到達したことが検出されたならば、その時点でジッタバッファ拡大・縮小判定部２２は間引き「要」と判定してバッファ縮小処理依頼として間引き依頼（Ｅ）をジッタバッファ制御部２３に出す（Ｓ２０４）。
【００４７】
ジッタバッファ制御部２３は、ジッタバッファ拡大・縮小判定部２２から出力された間引き依頼（Ｅ）を受けて、バッファ２１のポインタを操作して、図１５に示すように１フレームを除去するようなバッファ領域の縮小による間引き処理を実行する一方、音声復号化部１８へ間引き処理が発生したことの通知（Ｆ）を出力する。
【００４８】
ステップＳ２０１の判定でジッタ値が−１以上であれば、Ｂ値の初期値設定ルーチンに入る。すなわち、Ｂ値がジッタ値以下か否か判定し（Ｓ２０５）、Ｂ値がジッタ値以下ならばＢ値の初期値としてジッタ値を設定する（Ｓ２０６）。この結果、Ｂ値が＋１より大きい値に更新されたか否か判断する（Ｓ２０７）。Ｂ値が＋１より大きい値であれば、Ｂ値の初期値を＋１まで下げる操作を行う（Ｓ２０８）。
【００４９】
これにより、バッファ縮小用変数Ｂが小さすぎるためにバッファ縮小処理が頻繁に発生して音質が劣化する不具合を防止できる。
【００５０】
次に、パケットの入れ替えが発生した場合のバッファ縮小係数βの調整処理について説明する。本実施の形態では、現在の受信データと１つ過去の受信データの各シーケンス番号を比較して、パケットの入れ替えが検出されたときにバッファ縮小係数βを調整するものである。
【００５１】
バッファ縮小係数βは、初期値＝０．０１７とし、バッファ縮小係数変更用変数をＳとして、次式で計算する。
【００５２】
β＝０．０１７−Ｓ×０．００２
図１６はバッファ縮小係数変更用変数Ｓによるバッファ縮小タイミングの変化を示す図である。Ｓ値が大きいほどバッファ縮小処理がかかりづらくなっている。なお、Ｓ値は通常はＳ＝１に設定されている。
【００５３】
図１７はバッファ縮小係数βの調整処理を示すフロー図である。同図に示すように、今回受信したパケットのシーケンス番号（Ｎ１）と前回受信したパケットのシーケンス番号（Ｎ０）とを比較する（Ｓ３０１）。パケットの入れ替えが発生していなければ、シーケンス番号は連続するはずであるので、常にＮ１−Ｎ０＝１となるはずである。しかし、パケットの入れ替えにより１番目のパケットの後に３番目のパケットが受信され、次に２番目のパケットが受信されると、Ｎ１−Ｎ０の値が、２，−１，２となることになる。２パケット以上の入れ替えが発生すればさらに大きな数値を示すことになる。
【００５４】
そこで、ステップＳ３０１において、Ｎ１−Ｎ０≧２の判定を行っている。１パケット数以上の入れ替えが発生していれば、２以上の数値が現れる。Ｎ１−Ｎ０≧２と判定した場合は、バッファ縮小係数変更用変数ＳをＳ＝Ｎ１−Ｎ０で更新する（Ｓ３０２）。しかし、Ｓ値が６以上であれば（Ｓ３０３）、Ｓ＝６を最大値としてＳ＝６を設定する（Ｓ３０４）。そして、更新したＳ値を使用してバッファ縮小係数βを更新する（Ｓ３０５）。
【００５５】
このように、パケットの入れ替えが発生したときにはパケット遅れの量に応じたＳ値にてバッファ縮小係数βを更新することにより、バッファ縮小処理をかかりづらくすることができる。
【００５６】
次に、パケット受信時処理の詳細について、図１８のフロー図を参照して説明する。最初にジッタバッファ部１７を初期化するか否か判断する（Ｓ４０１）。最初のパケットを受信したときに初期化することになる。次に、ジッタバッファ部１７を初期化しなかった場合は、音声復号化部に連続ｎフレーム以上空のフレームを渡しているか否か判定し（Ｓ４０２）、ｎフレーム以上空のフレームを渡していればバッファ２１のポインタを初期化する（Ｓ４０４）。また、ステップＳ４０１でジッタバッファ部１７を初期化すると判定した場合はジッタバッファ部１７の初期化を実行する（Ｓ４０３）。
【００５７】
次に、受信フレームの格納場所を決定する（Ｓ４０５）。これはパケット解析部１６から受信パケットのタイムスタンプとフレーム数とを取得し、受信開始時又はリセット時を基準にして、タイムスタンプとフレーム数とから計算で求めることができる。
【００５８】
ステップＳ４０５で計算した格納場所がバッファ格納エリアの範囲内か否か判定する（Ｓ４０６）。ＯＵＴ  pointerとＩＮ  pointerとを比較し、格納位置（ＩＮ  pointer）が最大バッファサイズを越えていれば、バッファ範囲外であると判断する。
【００５９】
また、格納場所にすでにデータが格納されているか否か判定する（４０７）。システムによっては同じデータを２回送信するので、タイムスタンプとフレーム数とから格納場所を計算すると同じデータは同じ格納場所が指定されることになるので２回目の受信時には同じデータがすでに存在することになる。そこで、同じデータがすでに格納されていれば当該データは廃棄し、格納場所にデータが格納されていなければ当該格納場所に格納する（Ｓ４０８）。
【００６０】
次に、フィルタ係数のリセットの必要性の有無を判定する（Ｓ４０９）。フィルタ係数とはバッファ縮小係数βのことである。バッファ縮小係数βはパケット毎にリセットされるので、例えばタイマで計測してパケット毎にバッファ縮小係数βを初期値に戻す処理を行っている（Ｓ４１０）。
【００６１】
次に、パケットの入れ替えが発生しているか否か判定し（Ｓ４１１）、パケットの入れ替えが検出された場合はバッファ縮小係数βの調整を行う（Ｓ４１２）。このステップＳ４１１、Ｓ４１２の処理の詳細は図１７に示す通りである。
【００６２】
次に、バッファ拡大処理及びバッファ縮小処理を実行する（Ｓ４１３）。ステップＳ４１３におけるバッファ拡大処理の詳細は図９に示す通りであり、バッファ縮小処理の詳細は図１４に示す通りである。
【００６３】
ステップＳ４１３の処理でバッファ拡大又はバッファ縮小判定がされていれば、それに応じて間延び処理依頼又は間引き処理依頼をジッタバッファ制御部２３へ出力する（Ｓ４１４）。
【００６４】
次に、ＣＯＤＥＣ起動タイミングでの処理の詳細について、図１９のフロー図を参照して説明する。
【００６５】
最初に、初期化後の最小遅延時間が経過したか否か判断する（Ｓ５０１）。本実施の形態では、初期遅延として３０ｍｓを確保し、且つ２パケット目を受信したことを条件に、最小遅延時間が経過したと判断する。２パケット目を受信する前に１パケット目のフレームだけを音声復号化部へ渡すと、２パケット目の到着が遅れたときに音声データが途切れるのを防止するためである。最小遅延時間が経過するまでは空フレームを音声復号化部１８へ出力する（Ｓ５０２）。
【００６６】
最小遅延時間経過した場合は、間延び処理又は間引き処理の依頼があるか否か判定し（Ｓ５０３）、依頼がきていればバッファ２１のポインタを調整してバッファ拡大又はバッファ縮小処理を実行する（Ｓ５０４）。バッファ拡大又はバッファ縮小処理が完了したら、ジッタバッファ拡大・縮小判定部２２へ完了を通知する（Ｓ５０５）。その後、バッファ２１からＯＵＴ  pointerで指示された格納場所のフレームを読み出して音声復号化部１８に対して出力する（Ｓ５０６）。
【産業上の利用可能性】
【００６７】
本発明は、ジッタを吸収するためにフレームの間引き／間延び処理が必要な場合であっても復号化側で音を滑らかに繋ぐことができ、インターネットプロトコルを利用したパケットネットワークにおける受信パケットのバッファリングシステムに適用可能である。
【図面の簡単な説明】
【００６８】
【図１】ＩＰ電話網のネットワーク構成図
【図２】図１に示すＩＰ電話機の構成図
【図３】図２に示すジッタバッファ部の構成図
【図４】（ａ）ジッタバッファ部におけるパケット受信後のフロー図、（ｂ）ジッタバッファ部におけるＣＯＤＥＣ起動時のフロー図
【図５】（ａ）バッファ構成図、（ｂ）ＯＵＴ  pointerとＩＮ  pointerによるバッファ管理を示す図、（ｃ）パケットジッタを説明するための図、（ｄ）ジッタバッファ遅延を示す図
【図６】分散を持つパケットを受信した場合の測定遅延の頻度を示す図
【図７】受信フレーム数とパケットジッタ値との関係を示す図
【図８】受信フレーム数とバッファ拡大用変数との関係を示す図
【図９】バッファ拡大処理の詳細を示すフロー図
【図１０】バッファ拡大処理の概念図
【図１１】受信フレームとジッタ値との関係を示す図
【図１２】受信フレームとバッファ縮小用変数との関係を示す図
【図１３】受信パケット数とバッファ縮小用変数との関係を示す図
【図１４】バッファ縮小処理の詳細を示すフロー図
【図１５】バッファ縮小処理の概念図
【図１６】受信パケット数とバッファ縮小係数変更用変数との関係を示す図
【図１７】バッファ縮小係数の変更処理の詳細を示すフロー図
【図１８】パケット受信処理時の詳細を示すフロー図
【図１９】ＣＯＤＥＣ起動時の詳細を示すフロー図
【符号の説明】
【００６９】
１０  音声入力部
１１  音声出力部
１３  パケット送受信部
１４  音声符号化部
１５  パケット形成部
１６  パケット解析部
１７  ジッタバッファ部
１８  音声復号化部
２１  バッファ
２２  ジッタバッファ拡大・縮小判定部
２３  ジッタバッファ制御部
【図１】
2005064873.tif 000003
【図２】
2005064873.tif 000004
【図３】
2005064873.tif 000005
【図４】
2005064873.tif 000006
【図５】
2005064873.tif 000007
【図６】
2005064873.tif 000008
【図７】
2005064873.tif 000009
【図８】
2005064873.tif 000010
【図９】
2005064873.tif 000011
【図１０】
2005064873.tif 000012
【図１１】
2005064873.tif 000013
【図１２】
2005064873.tif 000014
【図１３】
2005064873.tif 000015
【図１４】
2005064873.tif 000016
【図１５】
2005064873.tif 000017
【図１６】
2005064873.tif 000018
【図１７】
2005064873.tif 000019
【図１８】
2005064873.tif 000020
【図１９】
2005064873.tif 000021