(57)【特許請求の範囲】
【請求項１】
第１のクラスの情報要素を含むオクテットと、当該第１のクラスの情報要素より重要度の低い第２のクラスの情報要素を含むオクテットとを複数個備えた複数の音声フレームデータを、オクテット単位でペイロードに配置する音声符号化装置であって、
前記複数の音声フレームデータからそれぞれオクテットを抽出するオクテット抽出手段と、
前記各音声フレームデータ別に、前記オクテット抽出手段により抽出された複数のオクテットを当該オクテットに含まれる情報要素のクラスごとに分類するオクテット分類手段と、
前記各音声フレームデータ別に、前記オクテット分類手段により分類されたオクテットの総数を前記クラス毎に求める第１オクテット数算出手段と、
前記各音声フレームデータ別に、前記第１オクテット数算出手段により算出された前記クラス毎のオクテットの総数を加算し、前記第１及び第２のクラスのオクテットの総数を求める第２オクテット数算出手段と、
前記第２オクテット数算出手段により算出されたオクテットの総数に対する前記クラス毎のオクテット数の割合に基づいて、前記第１のクラスの情報要素を含むオクテット及び第２のクラスの情報要素を含むオクテットを、第１のクラスの情報要素を含むオクテットが第２のクラスの情報要素を含むオクテットよりも前記ペイロードの先頭側に配置するとともに、同一クラスに属するオクテットのみでインタリーブ処理する配置手段と
を具備することを特徴とする音声符号化装置。
【請求項２】
クラスＡ、クラスＢまたはクラスＣのいずれか１つのクラスの情報要素を含むオクテットを複数個備えたＮ（Ｎは２以上の整数）個の音声フレームデータをペイロードに配置する音声符号化装置であって、
上記各音声フレームデータごとのクラスＡビットを含むオクテット数foct_a(j)を算出する第１のオクテット数算出手段と、
上記各音声フレームデータごとのクラスＡビットとクラスＢビットとを含むオクテット数foct_ab(j)を算出する第２のオクテット数算出手段と、
上記各音声フレームデータごとのクラスＡビットとクラスＢビットとクラスＣビットとを含むオクテット数foct_abc(j)を算出する第３のオクテット数算出手段と、
全音声フレームデータのクラスＡビットを含むオクテット数の総数L_aを算出する第１のオクテット総数算出手段と、
全音声フレームデータのクラスＡビットとクラスＢビットとを含むオクテット数の総数L_abを算出する第２のオクテット総数算出手段と、
全音声フレームデータのクラスＡビットとクラスＢビットとクラスＣビットとを含むオクテット数の総数L_abcを算出する第３のオクテット総数算出手段と、
上記各音声フレームデータごとの符号化済みオクテット数goct(j)を０に設定する符号化済みオクテット数初期化手段と、
上記ペイロードの先頭からのオクテットの位置を表す変数mを０に設定するオクテット位置初期化手段と、
Ｎ個の上記音声フレームデータの内、０からＮ−１まで１音声フレームデータずつ順番に、
goct(j)≠foct_a(j)
かつ
m≧L_a*goct(j)/foct_a(j)
であるかの判定を上記mがL_a-1となるまで行う第１の判定手段と、
この第１の判定手段で条件を満たすと判断された音声フレームデータが音声ビットであるか、パディングビットであるかを判定する第２の判定手段と、
第２の判定手段によって音声ビットであると判定された場合は、音声フレームデータの先頭から8*goct(j)+1番目のオクテットを上記ペイロードに挿入する第１の挿入手段と、
第２の判定手段によってパディングビットであると判定された場合は、0を上記ペイロードに挿入する第２の挿入手段と、
ペイロードの総ビット数kをペイロードに挿入されたビット数分だけ増やす第１の加算手段と、
上記goct(j)を１増やす第２の加算手段と、
上記mを１増やす第３の加算手段と、
上記第３の加算手段の終了後に、Ｎ個の上記音声フレームデータの内、０からＮ−１まで１音声フレームデータずつ順番に、
goct(j)≠foct_ab(j)
かつ
m≧L_ab*goct(j)/foct_ab(j)
であるかの判定を上記mがL_ab-1となるまで行う第３の判定手段と、
この第３の判定手段で条件を満たすと判断された音声フレームデータが音声ビットであるか、パディングビットであるかを判定する第４の判定手段と、
第４の判定手段によって音声ビットであると判定された場合は、音声フレームデータの先頭から8*goct(j)+1番目のオクテットを上記ペイロードに挿入する第３の挿入手段と、
第４の判定手段によってパディングビットであると判定された場合は、0を上記ペイロードに挿入する第４の挿入手段と、
ペイロードの総ビット数kをペイロードに挿入されたビット数分だけ増やす第４の加算手段と、
上記goct(j)を１増やす第５の加算手段と、
上記mを１増やす第６の加算手段と、
上記第６の判定手段の終了後に、Ｎ個の上記音声フレームデータの内、０からＮ−１まで１音声フレームデータずつ順番に、
goct(j)≠foct_abc(j)
かつ
m≧L_abc*goct(j)/foct_abc(j)
であるかの判定を上記mがL_abc-1となるまで行う第７の判定手段と、
この第７の判定手段で条件を満たすと判断された音声フレームデータが音声ビットであるか、パディングビットであるかを判定する第８の判定手段と、
第８の判定手段によって音声ビットであると判定された場合は、音声フレームデータの先頭から8*goct(j)+1番目のオクテットを上記ペイロードに挿入する第５の挿入手段と、
第８の判定手段によってパディングビットであると判定された場合は、0を上記ペイロードに挿入する第６の挿入手段と、
ペイロードの総ビット数kをペイロードに挿入されたビット数分だけ増やす第７の加算手段と、
上記goct(j)を１増やす第８の加算手段と、
上記mを１増やす第９の加算手段と、
を具備することを特徴とする音声符号化装置。
【請求項３】
第１のクラスの情報要素を含むオクテットと、当該第１のクラスの情報要素より重要度の低い第２のクラスの情報要素を含むオクテットとを複数個備えた複数の音声フレームデータを、オクテット単位でペイロードに配置する処理をコンピュータに実行させる音声符号化プログラムであって、
前記複数の音声フレームデータからそれぞれオクテットを抽出するオクテット抽出処理と、
前記各音声フレームデータ別に、前記オクテット抽出処理により抽出された複数のオクテットを当該オクテットに含まれる情報要素のクラスごとに分類するオクテット分類処理と、
前記各音声フレームデータ別に、前記オクテット分類処理により分類されたオクテットの総数を前記クラス毎に求める第１オクテット数算出処理と、
前記各音声フレームデータ別に、前記第１オクテット数算出処理により算出された前記クラス毎のオクテットの総数を加算し、前記第１及び第２クラスのオクテットの総数を求める第２オクテット数算出処理と、
前記第２オクテット数算出処理により算出されたオクテットの総数に対する前記クラス毎のオクテット数の割合に基づいて、前記第１のクラスの情報要素を含むオクテット及び第２のクラスの情報要素を含むオクテットを、第１のクラスの情報要素を含むオクテットが第２のクラスの情報要素を含むオクテットよりも前記ペイロードの先頭側に配置するとともに、同一クラスに属するオクテットのみでインタリーブ処理する配置処理とをコンピュータ装置に実行させる音声符号化プログラム。
【請求項４】
クラスＡ、クラスＢまたはクラスＣのいずれか１つのクラスの情報要素を含むオクテットを複数個備えたＮ（Ｎは２以上の整数）個の音声フレームデータをペイロードに配置する処理をコンピュータに実行させる音声符号化プログラムであって、
上記各音声フレームデータごとのクラスＡビットを含むオクテット数foct_a(j)を算出する第１のオクテット数算出処理と、
上記各音声フレームデータごとのクラスＡビットとクラスＢビットとを含むオクテット数foct_ab(j)を算出する第２のオクテット数算出処理と、
上記各音声フレームデータごとのクラスＡビットとクラスＢビットとクラスＣビットとを含むオクテット数foct_abc(j)を算出する第３のオクテット数算出処理と、
全音声フレームデータのクラスＡビットを含むオクテット数の総数L_aを算出する第１のオクテット総数算出処理と、
全音声フレームデータのクラスＡビットとクラスＢビットとを含むオクテット数の総数L_abを算出する第２のオクテット総数算出処理と、
全音声フレームデータのクラスＡビットとクラスＢビットとクラスＣビットとを含むオクテット数の総数L_abcを算出する第３のオクテット総数算出処理と、
上記各音声フレームデータごとの符号化済みオクテット数goct(j)を０に設定する符号化済みオクテット数初期化処理と、
上記ペイロードの先頭からのオクテットの位置を表す変数mを０に設定するオクテット位置初期化処理と、
Ｎ個の上記音声フレームデータの内、０からＮ−１まで１音声フレームデータずつ順番に、
goct(j)≠foct_a(j)
かつ
m≧L_a*goct(j)/foct_a(j)
であるかの判定を上記mがL_a-1となるまで行う第１の判定処理と、
この第１の判定処理で条件を満たすと判断された音声フレームデータが音声ビットであるか、パディングビットであるかを判定する第２の判定処理と、
第２の判定処理によって音声ビットであると判定された場合は、音声フレームデータの先頭から8*goct(j)+1番目のオクテットを上記ペイロードに挿入する第１の挿入処理と、
第２の判定処理によってパディングビットであると判定された場合は、0を上記ペイロードに挿入する第２の挿入処理と、
ペイロードの総ビット数kをペイロードに挿入されたビット数分だけ増やす第１の加算処理と、
上記goct(j)を１増やす第２の加算処理と、
上記mを１増やす第３の加算処理と、
上記第３の加算処理の終了後に、Ｎ個の上記音声フレームデータの内、０からＮ−１まで１音声フレームデータずつ順番に、
goct(j)≠foct_ab(j)
かつ
m≧L_ab*goct(j)/foct_ab(j)
であるかの判定を上記mがL_ab-1となるまで行う第３の判定処理と、
この第３の判定処理で条件を満たすと判断された音声フレームデータが音声ビットであるか、パディングビットであるかを判定する第４の判定処理と、
第４の判定処理によって音声ビットであると判定された場合は、音声フレームデータの先頭から8*goct(j)+1番目のオクテットを上記ペイロードに挿入する第３の挿入処理と、
第４の判定処理によってパディングビットであると判定された場合は、0を上記ペイロードに挿入する第４の挿入処理と、
ペイロードの総ビット数kをペイロードに挿入されたビット数分だけ増やす第４の加算処理と、
上記goct(j)を１増やす第５の加算処理と、
上記mを１増やす第６の加算処理と、
上記第６の判定処理の終了後に、Ｎ個の上記音声フレームデータの内、０からＮ−１まで１音声フレームデータずつ順番に、
goct(j)≠foct_abc(j)
かつ
m≧L_abc*goct(j)/foct_abc(j)
であるかの判定を上記mがL_abc-1となるまで行う第７の判定処理と、
この第７の判定処理で条件を満たすと判断された音声フレームデータが音声ビットであるか、パディングビットであるかを判定する第８の判定処理と、
第８の判定処理によって音声ビットであると判定された場合は、音声フレームデータの先頭から8*goct(j)+1番目のオクテットを上記ペイロードに挿入する第５の挿入処理と、
第８の判定処理によってパディングビットであると判定された場合は、0を上記ペイロードに挿入する第６の挿入処理と、
ペイロードの総ビット数kをペイロードに挿入されたビット数分だけ増やす第７の加算処理と、
上記goct(j)を１増やす第８の加算処理と、
上記mを１増やす第９の加算処理とをコンピュータ装置に実行させる音声符号化プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えばAMR RTP Mode Formatのソーティングを利用したペイロード化技術を用いた音声符号化装置及び音声符号化プログラムに関する。
【０００２】
【従来の技術】
従来、移動無線通信システムの一つであるＧＳＭ（Global Systems for Mobile Communications）システムでは、適応マルチレート符号化器（AMR:adaptive multirate coder）が用いられている。このＡＭＲの音声ストリームデータをペイロード化する方式の１つとしてrobust sorting方式がある。このrobust sorting方式を説明している文献としては、IETF(Internet Engineering Task Force)から発行されているdraft-itef-avt-rtp-amr-10.txtがある。以下にこのrobust sorting方式について説明する。
【０００３】
図１７は、robust sorting方式で使用するパラメータを定義したものであり、また図１８は、robust sorting方式のアルゴリズムを示したプログラムのソースコードを示したものである。
【０００４】
（１７．１）では、初期設定として音声フレームデータをソーティングした後のペイロード（例えばペイロードｂ）の総ビット数を表す変数ｋを０に設定し、ペイロードヘッダのビット数（ペイロードヘッダ長）を表す変数Ｈを８として設定する。（１７．２）では、インタリーブ処理を行う場合にはペイロードヘッダ長Ｈにさらに８ビット長分の長さを付け加える。（１７．３）では、ペイロードヘッダの情報をビット単位でペイロードｂに挿入する。同時にペイロードｂに挿入したビット数分だけｋを増やす。（１７．４）では、各音声フレーム（以下フレームと称す）j(=0からN=1)のＴｏＣ(Table of Contents)の情報を、ペイロードヘッダの後ろにビット単位で挿入する。同時に、ペイロードｂに挿入したビット数分だけｋを増やす。（１７．５）では、ＣＲＣ(Cyclic Redundancy Check)処理を行う場合に、各フレームｊ(=0からN-1)のＣＲＣの情報をＴｏＣの後ろにビット単位で挿入する。同時に、ペイロードｂに挿入したビット数分だけｋを増やす。
【０００５】
ペイロード化されたフレームのデータはオクテットという単位で規定されている。このため、各フレームｊ(=0からN-1)をオクテット単位で割り当てるために、（１７．６）では各フレームごとに必要なパディングビット数を求める。（１７．７）では、全フレームの中で最長の長さを持つフレームを検索し、そのビット長を変数maxに挿入する。（１７．８）では、robust sortingを行う。このrobust sortingでは、各フレームから８ビット単位でデータを抽出し、抽出された８ビット単位のデータをペイロードｂに挿入する。この時に、各フレームの最終のオクテットにおいてパディングビットが必要な場合には、パディングビットが挿入される。また、同時にペイロードｂに挿入したビット数分だけｋを増やす。（１７．９）では、ペイロードｂのビット列からオクテット列ｏへのペイロード化を行う。
【０００６】
次に、図１９はrobust sorting方式によるペイロード化する前の各フレームの構成図である。フレームＦ１は、１２個のオクテットf1(0),f1(1),・・・f1(11)から構成されている（フレームタイプは０）。以下、フレームＦ２は１７個のオクテットf2(0),f2(1),・・・f2(16)から（フレームタイプは３）、またフレームＦ３は３１個のオクテットf3(0),f3(1),・・・f3(30)から（フレームタイプは７）、さらにフレームＦ４は５個のオクテットf4(0),f4(1),・・・f4(4)から（フレームタイプは１５）それぞれ構成されている。同図に示される各フレームのオクテットは音声データ部分であり、あらかじめ最後のオクテットにパディングビットを付加して配置している。
【０００７】
これらの各フレームを従来のrobust sorting方式によってペイロード化した後の配置図が図２０である。同図に示すように、各フレームの先頭から１オクテットずつ交互にペイロードに挿入された配置となっている。また上記各フレームは、ビットエラーが許されない優先度の高い順にクラスＡビット群、クラスＢビット群、クラスＣビット群に分類されている。この中でクラスＡビット群は、エラーが起こるとフレーム自体が破棄されてしまうためエラーが全く許されないとされる。図２０に示した配置に、上記クラスＡビットを含むオクテットを斜線でマークしたものが図２１である。
【０００８】
同図に示すように、従来のrobust sorting方式によるペイロード化では、各フレームの先頭から１オクテットずつ交互にペイロードに挿入する方式となっているため、フレーム長の差が大きい複数のフレームをペイロード化する場合、短いフレームほど早くペイロード化が完了し、長いフレームほどペイロード化するのに時間がかかる。またクラスＡビット群のビット数は、フレーム長が短いほど少なく、フレーム長が長いほど多くなる。このため、クラスＡビットを含むオクテットとそれ以外のオクテットであるクラスＢやクラスＣを含むオクテットとが交互に配置される。すなわち、図２１に示すようにクラスＡビットを含むオクテットが断続的に配置される。
【０００９】
【発明が解決しようとする課題】
ところが、このような従来のrobust sorting方式では、フレーム長の差が大きい複数のフレームをペイロード化する場合、一方の長いフレーム長のクラスＡビットがペイロード化され、ペイロードへの挿入が完了する前に、別の短いフレーム長のクラスＡビットのペイロードへの挿入が完了し、さらに上記短いフレーム長のクラスＢビットの挿入が行われるようなことが起こる。
【００１０】
このため、クラスＡビットを含むオクテットとそれ以外のオクテットであるクラスＢビットやクラスＣビットを含むオクテットとが交互に配置される。従って、最も重要な情報を保持しているクラスＡビットを含むオクテットをフレームの先頭に連続して優先的に配置させることができない。よって、長いフレーム長のクラスＡビットがペイロードの後半部分に配置されてしまった場合、フレームの送信中にペイロードの後半部分でエラーが発生したときには、長いフレーム長のクラスＡビットが破棄されてしまい、これにより当該フレーム全体が無効になりやすい傾向がある。
【００１１】
この発明は上記事情に着目してなされたもので、その目的とするところは、ペイロードの後半部分でエラーが発生した場合に、フレームの最も重要な情報を保持しているクラスのオクテットが破棄されるのを防ぎ、これによりフレーム自体が無効とならないようにした音声符号化装置及び音声符号化プログラムを提供することにある。
【００１２】
【課題を解決するための手段】
上記目的を達成するためにこの発明は、第１のクラスの情報要素を含むオクテットと、当該第１のクラスの情報要素より重要度の低い第２のクラスの情報要素を含むオクテットとを複数個備えた複数の音声フレームデータを、オクテット単位でペイロードに配置する。そして、前記複数の音声フレームデータからそれぞれオクテットを抽出するオクテット抽出手段と、前記各音声フレームデータ別に、前記オクテット抽出手段により抽出された複数のオクテットを当該オクテットに含まれる情報要素のクラスごとに分類するオクテット分類手段と、前記各音声フレームデータ別に、前記オクテット分類手段により分類されたオクテットの総数を上記クラスごとに求めるクラス別オクテット数算出手段と、前記各音声フレームデータ別に、前記クラス別オクテット数算出手段により算出された前記クラスごとのオクテットの総数を加算し、全クラスのオクテットの総数を求める全オクテット数算出手段とを備えている。そして、前記全オクテット数算出手段により算出された全オクテットの総数に対する前記クラス毎のオクテット数の割合に基づいて、前記第１のクラスの情報要素を含むオクテット及び第２のクラスの情報要素を含むオクテットを、第１のクラスの情報要素を含むオクテットが第２のクラスの情報要素を含むオクテットよりも前記ペイロードの先頭側に配置するとともに、同一クラスに属するオクテットのみでインタリーブ処理する配置手段を具備したものである。
【００１３】
したがってこの発明によれば、第１のクラスの情報要素を含むオクテットがペイロードの先頭に優先的に配置されたペイロードが形成される。このため、ペイロードの送受信時に当該ペイロードの後半部分にエラーが発生しても、第１のクラスが破棄されるのを防ぎ、フレーム自体が無効とならないようにすることができる。
【００１４】
【発明の実施の形態】
図１は、この発明の一実施形態に係わる音声符号化装置の要部構成を示す機能ブロック図である。同図に示すように音声符号化装置１０は、オクテット抽出部１２と、オクテット分類部１４と、クラス別オクテット数算出部１６と、全オクテット数算出部１８と、オクテット配置部２０とを備えている。これらの機能は、マイクロプロセッサにプログラムを実行させることにより実現される。
【００１５】
上記音声符号化装置１０は、複数の音声フレームデータを１つのペイロードに配置する音声符号化装置である。各音声フレームデータは、クラスＡ、クラスＢまたはクラスＣのいずれか１つのクラスの情報要素（ビット）を含むオクテットを複数個備え、上記オクテット抽出部１２に入力される。
【００１６】
オクテット抽出部１２は、入力された各音声フレームデータからそれぞれオクテットを抽出する。オクテット分類部１４は、各音声フレームデータ別に、上記オクテット抽出部１２によって抽出された複数のオクテットを当該オクテットに含まれているビットのクラスごとに分類する。
【００１７】
クラス別オクテット数算出部１６は、各音声フレームデータ別に、オクテット分類部１４によって分類されたオクテットの総数をクラスごとに求める。全オクテット数算出部１８は、各音声フレームデータ別に、クラス別オクテット数算出部１６によって算出されたクラスごとのオクテットの総数を加算し、全クラスのオクテット総数を求める。
【００１８】
オクテット配置部２０は、全オクテット数算出部１８によって算出された上記全クラスのオクテット総数に対するクラスごとのオクテット数の比を求める。そしてこの比に基づいて、各クラスＡ，Ｂ，Ｃのオクテットを、クラスＡのオクテットがペイロードの先頭から連続して優先的に配置されるように、ペイロード上に配置する。
【００１９】
以上のような構成された音声符号化装置１０によるペイロード作成動作を、音声符号化プログラムの処理手順に従って説明する。
【００２０】
図２は、この音声符号化プログラムに係わるパラメータを定義したものである。これらのパラメータは、複数の音声フレームデータ（以下、フレームと称す）をrobust sorting方式を用いてペイロード化する際に使用する。また図３及び図４はこの発明の一実施形態に係わるrobust sorting方式のアルゴリズムを示したプログラムのソースコード、図５乃至図９はこの発明の一実施形態に係わるrobust sorting方式のアルゴリズムを示したプログラムに対応するフローチャートである。
【００２１】
まず図３に示す（２．１）では、複数のフレーム（例えばフレームｊ）をソーティングした後のペイロード（例えばペイロードｂ）の総ビット数を表す変数ｋを０に設定する。そしてペイロードヘッダのビット数（ペイロードヘッダ長）を表す変数Ｈを８として設定する。この部分の処理は図５の（３．１）に相当する。
【００２２】
次に（２．２）では、インタリーブ処理を行う場合にペイロードヘッダ長Ｈにさらに８ビット長分の長さを付け加える。この部分の処理は図５の（３．２）に相当する。（２．３）では、ペイロードヘッダの情報をビット単位でペイロードｂに挿入する。同時に、ペイロードｂに挿入したビット数分だけ変数ｋを増やす。この部分の処理は図５の（３．３）に相当する。
【００２３】
（２．４）では、各フレームｊ(=0からN=1)のＴｏＣ(Table of Contents)の情報をペイロードヘッダの後ろにビット単位で挿入する。同時に、挿入したビット数分だけ変数ｋを増やす。この部分の処理は図５の（３．４）に相当する。（２．５）では、ＣＲＣ(Cyclic Redundancy Check)処理を行う場合、各フレームｊ(=0からN-1)のＣＲＣの情報を、上記ＴｏＣの後ろにビット単位で挿入する。同時に、挿入したビット数分だけ変数ｋを増やす。この部分の処理は図５の（３．５）に相当する。ここまでの処理は従来のrobust sorting方式と同様である。
【００２４】
さて、（２．６）の（２．６ａ）では、全フレームのクラスＡのビットを含むオクテットの総和L_aを０に設定して初期化する。この部分の処理は図６の（３．６ａ）に相当する。（２．６ｂ）では、各フレームｊのペイロード化済みのオクテット数を表す変数goct(j)を０に設定して初期化する。この部分の処理は図６の（３．６ｂ）に相当する。（２．６ｃ）では、各フレームｊのクラスＡのビット数F_a(j)から、各フレームｊのクラスＡのビットを含むオクテット数foct_a(j)を求める。この部分の処理は図６の（３．６ｃ）に相当する。（２．６ｄ）では、foct_a(j)から全フレームのクラスＡのビットを含むオクテットの総和L_aを求める。この部分の処理は図６の（３．６ｄ）に相当する。
【００２５】
次に（２．７）の（２．７ａ）では、全フレームのクラスＡのビットとクラスＢのビットとを含むオクテットの総和L_abを０に設定して初期化する。この部分の処理は図６の（３．７ａ）に相当する。（２．７ｂ）では、各フレームｊのクラスＡのビット数とクラスＢのビット数F_ab(j)から、各フレームｊのクラスＡのビットを含むオクテット数と、クラスＢビットを含むオクテット数foct_ab(j)をそれぞれ求める。この部分の処理は図６の（３．７ｂ）に相当する。（２．７ｃ）では、foct_ab(j)から全フレームのクラスＡのビットを含むオクテットとクラスＢのビットを含むオクテットの総和L_abを求める。この部分の処理は図６の（３．７ｃ）に相当する。
【００２６】
また（２．８）の（２．８ａ）では、全フレームのクラスＡのビットを含むオクテットと、クラスＢのビットを含むオクテットと、クラスＣビットを含むオクテットの総和L_abcを０に設定して初期化する。この部分の処理は図６の（３．８ａ）に相当する。（２．８ｂ）では、各フレームｊのクラスＡのビット数とクラスＢのビット数とクラスＣのビット数F_abc(j)から、各フレームｊのクラスＡのビットを含むオクテットと、クラスＢのビットを含むオクテットと、クラスＣのビットを含むオクテットの数foct_abc(j)を求める。この部分の処理は図６の（３．８ｂ）に相当する。（２．８ｃ）では、foct_abc(j)から全フレームのクラスＡのビットを含むオクテットと、クラスＢのビットを含むオクテットと、クラスＣのビットを含むオクテットの総和L_abcを求める。この部分の処理は図６の（３．８ｃ）に相当する。
【００２７】
続いて（２．９）では、ペイロードのオクテットインデックスを表す変数mを０に設定して初期化する。この部分の処理は図７の（３．９）に相当する。
【００２８】
次に（２．１０）では、クラスＡのビットを含むオクテットをソーティングする。この部分の処理は図７の（３．１０）に相当する。まず（２．１０）の（２．１０ａ）では、mがm<L_aであるかを判定する。すなわち、ペイロード化を行う際に、L_a個のオクテットが満たされているかどうかを判定する。この部分の処理は図７の（３．１０ａ）に相当する。（２．１０ｂ）では、変数jはフレームインデックスを表し、フレームｊがＮ（Ｎは２以上の整数）回より小さいかどうかを判定している。この部分の処理は図７の（３．１０ｂ）に相当する。（２．１０ｃ）では、フレームｊに関して、フレーム中にペイロード化されていないクラスＡのビットを含むオクテットが残っているかどうか（goct(j)とfoct_a(j)とが一致しているかどうか）を判定する。ペイロード化されていないクラスＡのビットを含むオクテットが残っている場合は、if文内の処理を実行する。この部分の処理は図７の（３．１０ｃ）に相当する。
【００２９】
（２．１０ｄ）では、ペイロード化する際にペイロードの先頭からm番目のオクテットの位置にフレームｊのオクテットを挿入するかどうかを判定する。mがL_a*goct(j)/foct_a(j)以上の場合は、対象となるフレームｊのオクテットをペイロードに挿入する動作に移る。mがL_a*goct(j)/foct_a(j)未満の場合は、対象となるフレームｊのオクテットをペイロードに挿入する動作には移らずに、次のフレームを検討する。この部分の処理は図７の（３．１０ｄ）に相当する。
【００３０】
さらに（２．１０ｅ）では、変数ｌはビットインデックスを表す。この部分の処理は図７の（３．１０ｅ）に相当する。（２．１０ｆ）では、ペイロードに挿入しようとするビットが音声ビットであるか、パディングビットであるかを判定する。この部分の処理は図７の（３．１０ｆ）に相当する。（２．１０ｆ）で音声ビットであると判定された場合には、（２．１０ｇ）においてフレームｊの8*goct(j)+1番目のビットがペイロードｂに挿入される。この部分の処理は図７の（３．１０ｇ）に相当する。これに対し（２．１０ｆ）でパディングビットであると判定された場合には、（２．１０ｈ）において０がペイロードｂに挿入される。この部分の処理は図７の（３．１０ｈ）に相当する。
【００３１】
また（２．１０ｇ）、（２．１０ｈ）において、変数kをペイロードｂに挿入されたビット数分だけ増やす。（２．１０ｉ）では、フレームｊのペイロード化済みのオクテット数であるgoct(j)を１増やす。この部分の処理は図７の（３．１０ｉ）に相当する。（２．１０ｊ）では、ペイロードのオクテットインデックスを表す変数mを１増やす。この部分の処理は図７の（３．１０ｊ）に相当する。
【００３２】
次に（２．１１）では、クラスＢビットを含むオクテットをソーティングする。この部分の処理は図８の（３．１１）に相当する。まず（２．１１）の（２．１１ａ）では、mがm<L_abであるかを判定する。すなわち、ペイロード化を行う際に、L_ab個のオクテットが満たされているかどうかを判定する。この部分の処理は図８の（３．１１ａ）に相当する。（２．１１ｂ）では、変数jはフレームインデックスを表し、フレームｊがＮ回より小さいかどうかを判定している。この部分の処理は図８の（３．１１ｂ）に相当する。
【００３３】
（２．１１ｃ）では、フレームｊに関して、フレーム中にペイロード化されていないクラスＡのビットを含むオクテット及びクラスＢのビットを含むオクテットが残っているかどうかを判定する。ペイロード化されていないクラスＡのビットを含むオクテット及びクラスＢのビットを含むオクテットが残っている場合は、if文内の処理を実行する。この部分の処理は図８の（３．１１ｃ）に相当する。
【００３４】
（２．１１ｄ）では、ペイロード化する際に、ペイロードの先頭からm番目のオクテットの位置にフレームｊのオクテットを挿入するかどうかを判定する。mがL_ab*goct(j)/foct_ab(j)以上の場合には、対象となるフレームｊのオクテットをペイロードに挿入する動作に移る。一方、mがL_ab*goct(j)/foct_ab(j)未満の場合には、対象となるフレームｊのオクテットをペイロードに挿入する動作には移らずに、次のフレームについて検討する。この部分の処理は図８の（３．１１ｄ）に相当する。
【００３５】
さらに（２．１１ｅ）では、変数ｌはビットインデックスを表す。この部分の処理は図８の（３．１１ｅ）に相当する。（２．１１ｆ）では、ペイロードに挿入しようとするビットが音声ビットであるか、パディングビットであるかを判定する。この部分の処理は図８の（３．１１ｆ）に相当する。（２．１１ｆ）で音声ビットであると判定された場合には、（２．１１ｇ）においてフレームｊの8*goct(j)+1番目のビットがペイロードｂに挿入される。この部分の処理は図８の（３．１１ｇ）に相当する。これに対し（２．１１ｆ）でパディングビットであると判定された場合には、（２．１１ｈ）において０がペイロードｂに挿入される。この部分の処理は図８の（３．１１ｈ）に相当する。また（２．１１ｇ）及び（２．１１ｈ）において、変数kを挿入されたビット数分だけ増やす。
【００３６】
（２．１１ｉ）では、フレームｊのペイロード化済みのオクテット数であるgoct(j)を１増やす。この部分の処理は図８の（３．１１ｉ）に相当する。（２．１１ｊ）では、ペイロードのオクテットインデックスを表す変数mを１増やす。この部分の処理は図８の（３．１１ｊ）に相当する。
【００３７】
次に（２．１２）では、クラスＣビットを含むオクテットをソーティングする処理を行う。この部分の処理は図９の（３．１２）に相当する。まず（２．１２）の（２．１２ａ）では、mがm<L_abcであるかを判定する。すなわち、ペイロード化を行う際に、L_abc個のオクテットが満たされているかどうかを判定する。この部分の処理は図９の（３．１２ａ）に相当する。
【００３８】
（２．１２ｂ）では、変数jはフレームインデックスを表し、フレームｊがＮ回より小さいかどうかを判定している。この部分の処理は図９の（３．１２ｂ）に相当する。（２．１２ｃ）では、フレームｊに関して、フレーム中にペイロード化されていないクラスＡのビットを含むオクテット、クラスＢのビットを含むオクテット、及びクラスＣのビットを含むオクテットが残っているかどうかを判定する。ペイロード化されていないクラスＡのビットを含むオクテット、クラスＢのビットを含むオクテット及びクラスＣのビットを含むオクテットが残っている場合は、if文内の処理を実行する。この部分の処理は図９の（３．１２ｃ）に相当する。
【００３９】
（２．１２ｄ）では、ペイロード化する際に、ペイロードの先頭からm番目のオクテットの位置にフレームｊのオクテットを挿入するかどうかを判定する。mがL_abc*goct(j)/foct_abc(j)以上の場合は、対象となるフレームｊのオクテットをペイロードに挿入する動作に移る。一方、mがL_abc*goct(j)/foct_abc(j)未満の場合には、対象となるフレームｊのオクテットをペイロードに挿入する動作には移らずに、次のフレームについて検討する。この部分の処理は図９の（３．１２ｄ）に相当する。
【００４０】
さらに（２．１２ｅ）では、変数ｌはビットインデックスを表す。この部分の処理は図９の（３．１２ｅ）に相当する。（２．１２ｆ）では、ペイロードに挿入しようとするビットが音声ビットであるか、またはパディングビットであるかを判定する。この部分の処理は図９の（３．１２ｆ）に相当する。（２．１２ｆ）で音声ビットであると判定された場合は、（２．１２ｇ）においてフレームｊの8*goct(j)+1番目のビットがペイロードｂに挿入される。この部分の処理は図９の（３．１２ｇ）に相当する。これに対し（２．１２ｆ）でパディングビットであると判定された場合は、（２．１２ｈ）において０がペイロードｂに挿入される。この部分の処理は図９の（３．１２ｈ）に相当する。
【００４１】
また（２．１２ｇ）及び（２．１２ｈ）において、変数kを挿入されたビット数分だけ増やす。（２．１２ｉ）では、フレームｊのペイロード化済みオクテット数であるgoct(j)を１増やす。この部分の処理は図９の（３．１２ｉ）に相当する。（２．１２ｊ）では、ペイロードのオクテットインデックスを表す変数mを１増やす。この部分の処理は図９の（３．１２ｊ）に相当する。そして（５．１３）では、ペイロードｂのビット列からオクテット列ｏへのペイロードの変換を行う。この部分の処理は、図９フローチャートの（６．１３）に相当する。
【００４２】
以上のような音声符号化プログラムに従いオクテットのソーティングを行った計算結果の例を図１０、図１１及び図１２に示す。
【００４３】
図１０はクラスＡのビットを含むオクテットについてソーティングした計算結果である。同図に示されるように、mが０の場合、全フレームのクラスＡのビットを含むオクテットの総和L_aが３０、各フレームのペイロード化済みのオクテット数を表す変数goct(j)が０、各フレームｊのクラスＡビットを含むオクテット数foct_a(j)が６であるのでL_a*goct(j)/foct_a(j)が０となる。そして、mがL_a*goct(j)/foct_a(j)以上の場合に該当するので、対象となるフレームＦ１のオクテットf1(0)をペイロードに挿入可と判断する。以下同様に、クラスＡのビットを含むオクテットについてソーティングを行い、ペイロードに挿入の可否について判断する。
【００４４】
図１１は、クラスＡのビットを含むオクテット及びクラスＢのビットを含むオクテットについてソーティングした計算結果を示す。同図に示されるように、mが３０の場合、全フレームのクラスＡのビットを含むオクテット及びクラスＢのビットを含むオクテットの総和L_ab が５７、各フレームのペイロード化済みのオクテット数を表す変数goct(j)が６、各フレームｊのクラスＡのビットを含むオクテット及びクラスＢのビットを含むオクテット数foct_a(j)が１２であるので、L_ab*goct(j)/foct_ab(j)は２８となる。そして、mがL_ab*goct(j)/foct_ab(j)以上の場合に該当するので、対象となるフレームＦ１のオクテットf1(6)をペイロードに挿入可と判断する。以下同様に、クラスＡのビットを含むオクテット及びクラスＢのビットを含むオクテットについてソーティングを行い、ペイロードに挿入の可否について判断する。
【００４５】
図１２は、クラスＡのビットを含むオクテットと、クラスＢのビットを含むオクテットと、クラスＣのビットを含むオクテットについてソーティングした計算結果を示すものである。同図に示されるように、mが５７の場合、全フレームのクラスＡのビットを含むオクテットと、クラスＢのビットを含むオクテットと、クラスＣのビットを含むオクテットの総和L_abcが６５、各フレームのペイロード化済みのオクテット数を表す変数goct(j)が２３、各フレームｊのクラスＡのビットを含むオクテットと、クラスＢのビットを含むオクテットと、クラスＣビットを含むオクテット数foct_a(j)が３１であるので、L_abc*goct(j)/foct_abc(j)は４８となる。そして、mがL_abc*goct(j)/foct_abc(j)以上の場合に該当するので、対象となるフレームＦ３のオクテットf3(23)をペイロードに挿入可と判断する。以下同様に、クラスＡのビットを含むオクテットと、クラスＢのビットを含むオクテットと、クラスＣのビットを含むオクテットについてソーティングを行い、ペイロードに挿入の可否について判断する。
【００４６】
次に、以上のような計算結果に基づきペイロード化を行う。ペイロード化前のペイロードの構成図を図１３に示す。
【００４７】
図１３では、オクテット数１２個からなるフレームＦ１[オクテットf1(0)、f1(1)、f1(2)、…、f1(11)；フレームタイプは０]と、オクテット数１０個からなるフレームＦ２[オクテットf2(0)、f2(1)、f2(2)、…、f2(16)；フレームタイプは３]と、オクテット数３１個からなるフレームＦ３[オクテットf3(0)、f3(1)、f3(2)、…、f3(30)；フレームタイプは７]と、オクテット数５個からなるフレームＦ４[オクテットf4(0)、f4(1)、f4(2)、…、f4(4)；フレームタイプは８]とからなる４つのフレームのペイロード化前の構成が示されている。このとき各フレームのオクテットは、音声データ（音声ビット）であり、また、最終オクテットには予めパディングビットを付加している。
【００４８】
また図１４は、各フレームタイプの音声ビット数と各クラスビット数を示したものである。同図に示すように、フレームＦ１はフレームタイプ０であるので、音声ビット数は９５、クラスＡのビット数は４２、クラスＡのビットを含むオクテット数は６、クラスＡ＋Ｂのビット数は９５、クラスＡ＋Ｂのビットを含むオクテット数は１２、クラスＡ＋Ｂ＋Ｃのビット数は９５、クラスＡ＋Ｂ＋Ｃのビットを含むオクテット数は１２である。
【００４９】
フレームＦ２はフレームタイプ３であるので、音声ビット数は１３４、クラスＡのビット数は５８、クラスＡのビットを含むオクテット数は８、クラスＡ＋Ｂのビット数は１３４、クラスＡ＋Ｂのビットを含むオクテット数は１７、クラスＡ＋Ｂ＋Ｃのビット数は１３４、クラスＡ＋Ｂ＋Ｃのビットを含むオクテット数は１７である。
【００５０】
フレームＦ３はフレームタイプ７であるので、音声ビット数は２４４、クラスＡのビット数は８１、クラスＡのビットを含むオクテット数は１１、クラスＡ＋Ｂのビット数は１８４、クラスＡ＋Ｂのビットを含むオクテット数は２３、クラスＡ＋Ｂ＋Ｃのビット数は２４４、クラスＡ＋Ｂ＋Ｃのビットを含むオクテット数は３１である。
【００５１】
フレームＦ４はフレームタイプ８であるので、音声ビット数は３９、クラスＡのビット数は３９、クラスＡのビットを含むオクテット数は５、クラスＡ＋Ｂのビット数は３９、クラスＡ＋Ｂのビットを含むオクテット数は５、クラスＡ＋Ｂ＋Ｃのビット数は３９、クラスＡ＋Ｂ＋Ｃのビットを含むオクテット数は５である。
【００５２】
そして、クラスＡのビットを含むオクテット、クラスＢのビットを含むオクテット、クラスＣのビットを含むオクテットの順に、各フレームをリーディングする。これらの情報を用いて、各フレームのオクテットのペイロードへの配置位置が、クラスごとに、各フレームのオクテット数に対する全フレームのオクテット総数の比率から決定される。そしてクラスＡのビットを含むオクテットがペイロードの先頭に優先的に配置されるように、上記４つのフレームＦ１〜Ｆ４に対しペイロード化を行い、図１５に示すようなペイロードの構成とする。またクラスＡのビットを含むオクテットに斜線を付し、視覚的に区別したものが図１６である。
【００５３】
図１５及び図１６に示されるように、Ｆ１が持っている６個のクラスＡのビットを含むオクテットf1(0)〜f1(5)と、Ｆ２が持っている８個のクラスＡのビットを含むオクテットf2(0)〜f2(7)と、Ｆ３が持っている１１個のクラスＡのビットを含むオクテットf3(0)〜f3(10)と、Ｆ４が持っている５個のクラスＡのビットを含むオクテットf4(0)〜f4(4)とが、それぞれペイロードの先頭に配置されている。
【００５４】
なお、以上のように形成されたペイロードを受信する受信側の装置には、予め当該配置されたペイロードのソーティングのモードを通知しておく。上記受信側の音声復号装置は、この通知されたソーティングモードに従って、受信したペイロードの音声データの復号処理を行う。
【００５５】
このような構成であるから、フレーム長の異なる複数のフレームをペイロード化する場合に、各フレームのオクテットを、そのクラスに応じて重要なクラスのビットを含むオクテットがペイロードの先頭側に配置される。したがって、従来の欠点であった長いフレームのクラスＡのビットを含むオクテットがペイロードの後半部分に点在された状態で配置されることを極力防ぐことができる。このため、ペイロードの後半部分でエラーが起きた場合に、フレームの破棄に至るという最悪の事態を極力避けることができる。この実施形態の動作は、特に長いフレームと短いフレームを混在させて１つのペイロードにするような場合に有効である。
【００５６】
（その他の実施形態）
上記実施形態では、４つのフレームであるフレームＦ１、フレームＦ２、フレームＦ３及びフレームＦ４の各オクテットのペイロードへの配置位置を計算した結果、オクテット挿入判定式
L_a*goct(j)/foct_a(j)
L_ab*goct(j)/foct_ab(j)
L_abc*goct(j)/foct_abc(j)
を小数点以下部分を切り捨て整数値として出力しているが、小数値をそのまま出力して計算する方法も可能である。
【００５７】
また、図１で示した音声符号化装置の各機能の構成では、これらの各機能はプログラムとして構成されているが、ハードウエアを用いて実現してもよい。
【００５８】
【発明の効果】
以上詳述したようにこの発明では、複数の音声フレームデータからそれぞれオクテットを抽出し、抽出された複数のオクテットを当該オクテットに含まれる情報要素のクラスごとに分類し、分類されたオクテットの総数を各音声フレームデータが含んでいるクラスごとに求め、求められたオクテットの総数を加算し、全クラスのオクテットの総数を求める。そして、全オクテットの総数に対するクラスごとのオクテット数の比に基づいて、第１のクラスの情報要素を含むオクテットが第１のクラスの情報要素より重要度の低い第２のクラスの情報要素を含むオクテットよりもペイロードの先頭側に優先的に配置する。
【００５９】
従って、ペイロードの後半部分でエラーが発生した場合に、フレームの最も重要な情報を保持しているクラスのオクテットが破棄されるのを防ぎ、これによりフレーム自体が無効とならないようにした音声符号化装置及び音声符号化プログラムを提供することができる。
【図面の簡単な説明】
【図１】  この発明に係わる各機能の構成を示す構成図である。
【図２】  この発明に係わる複数の音声フレームをrobust sorting方式を用いてペイロード化する際に使用するパラメータを定義した図である。
【図３】  この発明に係わるrobust sorting方式のアルゴリズムを示したプログラムのソースコードを示す図である。
【図４】  この発明に係わるrobust sorting方式のアルゴリズムを示したプログラムのソースコードを示す図である。
【図５】  この発明に係わるrobust sorting方式のアルゴリズムを示したプログラムに対応したフローを示す流れ図である。
【図６】  この発明に係わるrobust sorting方式のアルゴリズムを示したプログラムに対応したフローを示す流れ図である。
【図７】  この発明に係わるrobust sorting方式のアルゴリズムを示したプログラムに対応したフローを示す流れ図である。
【図８】  この発明に係わるrobust sorting方式のアルゴリズムを示したプログラムに対応したフローを示す流れ図である。
【図９】  この発明に係わるrobust sorting方式のアルゴリズムを示したプログラムに対応したフローを示す流れ図である。
【図１０】  この発明に係わるクラスＡビットを含むオクテットについてソーティングした計算結果を示す図である。
【図１１】  この発明に係わるクラスＡビット及びクラスＢビットを含むオクテットについてソーティングした計算結果を示す図である。
【図１２】  この発明に係わるクラスＡビットとクラスＢビットとクラスＣビットとを含むオクテットについてソーティングした計算結果を示す図である。
【図１３】  ペイロード化する前の各フレームの構成図である。
【図１４】  この発明に係わる各フレームタイプの音声ビット数と各クラスビット数を示した図である。
【図１５】  この発明に係わる複数のフレームをrobust sorting方式によってペイロード化した後の配置図である。
【図１６】  図１５の配置図にクラスＡビットを含むオクテットを斜線でマークを施した配置図である。
【図１７】  従来の複数の音声フレームをrobust sorting方式を用いてペイロード化する際に使用するパラメータを定義した図である。
【図１８】  従来のrobust sorting方式を用いたアルゴリズムを示したプログラムのソースコードを示す図である。
【図１９】  ペイロード化する前の各フレームの構成図である。
【図２０】  複数のフレームを従来のrobust sorting方式によってペイロード化した後の配置図である。
【図２１】  図２０の配置図にクラスＡビットを含むオクテットを斜線でマークを施した配置図である。
【符号の説明】
１０…音声符号化装置
１２…オクテット抽出部
１４…オクテット分類部
１６…クラス別オクテット数算出部
１８…全オクテット数算出部
２０…配置部
【図１】
0003677261.tif 000002
【図２】
0003677261.tif 000003
【図３】
0003677261.tif 000004
【図４】
0003677261.tif 000005
【図５】
0003677261.tif 000006
【図６】
0003677261.tif 000007
【図７】
0003677261.tif 000008
【図８】
0003677261.tif 000009
【図９】
0003677261.tif 000010
【図１０】
0003677261.tif 000011
【図１１】
0003677261.tif 000012
【図１２】
0003677261.tif 000013
【図１３】
0003677261.tif 000014
【図１４】
0003677261.tif 000015
【図１５】
0003677261.tif 000016
【図１６】
0003677261.tif 000017
【図１７】
0003677261.tif 000018
【図１８】
0003677261.tif 000019
【図１９】
0003677261.tif 000020
【図２０】
0003677261.tif 000021
【図２１】
0003677261.tif 000022