JP2009205085A - 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム - Google Patents

符号化装置、復号化装置、符号化方法、復号化方法及びプログラム Download PDF

Info

Publication number
JP2009205085A
JP2009205085A JP2008049708A JP2008049708A JP2009205085A JP 2009205085 A JP2009205085 A JP 2009205085A JP 2008049708 A JP2008049708 A JP 2008049708A JP 2008049708 A JP2008049708 A JP 2008049708A JP 2009205085 A JP2009205085 A JP 2009205085A
Authority
JP
Japan
Prior art keywords
frequency
symbol string
encoding
symbol
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008049708A
Other languages
English (en)
Other versions
JP5018557B2 (ja
Inventor
Hiroyasu Ide
博康 井手
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2008049708A priority Critical patent/JP5018557B2/ja
Publication of JP2009205085A publication Critical patent/JP2009205085A/ja
Application granted granted Critical
Publication of JP5018557B2 publication Critical patent/JP5018557B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】符号化効率を向上させるようにデータを符号化し、また、この符号化されたデータを復号化する。
【解決手段】フラグ生成部30は、対応する周波数のMDCT係数を符号化対象とするか符号化対象から除外するかを示すフラグを周波数毎に生成し、生成したフラグを周波数順に連結することにより第1のフラグ列を生成する。フラグローテート部31は、第1のフラグ列をローテートすることにより、「0」が末尾に多く連続する第2のフラグ列を生成する。エントロピー符号化部32は、符号化対象のMDCT係数と第2のフラグ列から第1のフラグ列を復元するためのデータとを符号化するとともに、残りの記号が全て「0」であることを示す符号を用いて第2のフラグ列を符号化する。
【選択図】図2

Description

本発明は、デジタル信号を効率良く符号化する符号化装置、符号化方法及びこれらをコンピュータ上で実現するためのプログラム、並びに、上記符号化装置、符号化方法又はプログラムにより符号化されたデータをデジタル信号に復号化する復号化装置、復号化方法及びこれらをコンピュータ上で実現するためのプログラムに関する。
従来、発音機能を搭載した電子辞書装置が知られている。このような電子辞書装置は、例えば、録音時に各単語に対応する音声信号を符号化してメモリに記憶し、再生時にメモリに記憶されたデータを復号化して再生する。ここで、十分な音質を確保したままビットレートを低く抑えるためには、高い符号化効率(圧縮効率)で音声信号を符号化する必要がある。かかる目的を達成するための技術として、例えば、特許文献1には、人間の聴覚の特性に基づいて音声信号を符号化する音声処理装置が開示されている。
特許文献1に開示された音声処理装置は、まず、音声信号を複数のブロックからなるフレームに分割する。そして、音声処理装置は、1フレーム分の音声信号をブロック毎に周波数変換することにより、ブロック毎に各周波数のMDCT係数を求める。次に、音声処理装置は、1フレーム分のMDCT係数に基づいて各周波数の重要度を設定する。具体的には、音声処理装置は、各周波数の1フレーム分のMDCT係数から当該周波数のエネルギーを求め、エネルギーが高い周波数ほど重要度を高く設定する。
音声処理装置は、所定のビットレート(例えば、16kbps程度)に達するまで、すなわち、符号量が所定の符号量に達するまで、重要度の高い周波数から順番にMDCT係数を符号化する。このため、重量度の低い周波数のMDCT係数は符号化されない。ここで、音声処理装置は、各周波数が、MDCT係数が符号化された周波数であるか否かを判別するためのフラグ列を生成し、作成したフラグ列も符号化する。
特開2007−193043号公報
しかしながら、生成したフラグ列をそのまま符号化する場合、フラグ列自体も容量を有するため、符号化効率がそれほど向上しない場合もあった。
本発明は、上記問題に鑑みてなされたものであり、符号化効率を向上することが可能な符号化装置、符号化方法及びこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。また、本発明は、上記符号化装置、符号化方法又はプログラムにより符号化されたデータからデジタル信号を復号化することが可能な復号化装置、復号化方法及びこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係る符号化装置は、
デジタル信号を周波数変換して周波数変換係数を求める周波数変換手段と、
前記周波数変換手段が求めた周波数変換係数を量子化する量子化手段と、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第1の記号列を生成する記号列生成手段と、
前記記号列生成手段が生成した第1の記号列をローテートすることにより特定の記号が末尾に多く連続する第2の記号列を生成するローテート手段と、
前記量子化手段が量子化した周波数変換係数のうち前記記号列生成手段が生成した第1の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第2の記号列に基づいて第1の記号列を復元するための記号列復元用データとを符号化するとともに、残りの記号が全て特定の記号であることを示す符号を用いて前記ローテート手段が生成した第2の記号列を先頭から順に符号化する符号化手段と、
前記符号化手段が符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別手段と、
前記符号量超過判別手段により合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除手段と、を備え、
前記記号列生成手段は、前記データ削除手段が削除した周波数変換係数については符号化対象から除外するように第1の記号列を生成する、
ことを特徴とする。
前記ローテート手段は、前記記号列生成手段が生成した第1の記号列をローテートすることにより得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第2の記号列として生成するとともに、第1の記号列から第2の記号列を生成するために必要なローテート数を求め、
前記符号化手段は、前記ローテート手段が生成したローテート数を記号列復元用データとして符号化してもよい。
前記符号化手段は、前記ローテート手段が生成したローテート数に換えて、当該ローテート数と前回の符号化の際に前記ローテート手段が生成したローテート数との差分を記号列復元用データとして符号化してもよい。
前記周波数変換手段が求めた周波数変換係数の全周波数帯域を複数の分割周波数帯域に分割する周波数帯域分割手段と、
分割周波数帯域毎に、前記周波数変換手段が求めた周波数変換係数のうち前記前記データ削除手段により削除されていない周波数変換係数の絶対値の最大値を包絡値として取得する包絡値取得手段と、をさらに備え、
前記量子化手段は、各分割周波数帯域に含まれる周波数変換係数を、前記包絡値取得手段が取得した分割周波数帯域毎の包絡値のうち当該分割周波数帯域の包絡値で除算することにより量子化し、
前記ローテート手段は、前記記号列生成手段が生成した第1の記号列を構成する各記号のうち、包絡値が0である分割周波数帯域に含まれる周波数に対応する記号を符号化対象から除外することを示す記号に置換し、包絡値が0ではない分割周波数帯域に含まれる周波数に対応する記号を符号化対象とすることを示す記号に置換した場合に得られる記号列を、各分割周波数帯域に含まれる周波数変換係数の個数ずつローテートした場合に得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第2の記号列として生成し、
前記符号化手段は、前記包絡値取得手段が生成した分割周波数帯域毎の包絡値を記号列復元用データとして符号化してもよい。
前記記号列生成手段が生成した第1の記号列をローテートすることにより得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第2の記号列として生成するとともに、第1の記号列から第2の記号列を生成するために必要なローテート数を求める第2のローテート手段、をさらに備え、
前記符号化手段は、前記ローテート手段が生成した第2の記号列と前記第2のローテート手段が生成した第2の記号列とのうちいずれを符号化するかを選択し、前記ローテート手段が生成した第2の記号列を符号化することを選択した場合は、残りの記号が全て特定の記号であることを示す符号を用いて前記ローテート手段が生成した第2の記号列を先頭から順に符号化するとともに、前記ローテート手段が生成したローテート数又は前回の符号化の際に前記ローテート手段が生成したローテート数との差分を記号列復元用データとして符号化し、前記第2のローテート手段が生成した第2の記号列を符号化することを選択した場合は、残りの記号が全て特定の記号であることを示す符号を用いて前記第2のローテート手段が生成した第2の記号列を先頭から順に符号化するとともに、前記包絡値取得手段が生成した分割周波数帯域毎の包絡値を記号列復元用データとして符号化してもよい。
上記目的を達成するために、本発明の第2の観点に係る復号化装置は、
前記符号化装置によって符号化されたデータを周波数変換係数と第2の記号列と記号列復元用データとに復号化する復号化手段と、
前記復号化手段が復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化手段が復号化した第2の記号列と記号列復元用データとに基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完手段と、
前記復号化手段が復号化した周波数変換係数と前記除外データ補完手段が予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化手段と、
前記逆量子化手段が逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換手段と、を備える、
ことを特徴とする。
上記目的を達成するために、本発明の第3の観点に係る符号化方法は、
デジタル信号を周波数変換して周波数変換係数を求める周波数変換ステップと、
前記周波数変換ステップで求めた周波数変換係数を量子化する量子化ステップと、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第1の記号列を生成する記号列生成ステップと、
前記記号列生成ステップで生成した第1の記号列をローテートすることにより特定の記号が末尾に多く連続する第2の記号列を生成するローテートステップと、
前記量子化ステップで量子化した周波数変換係数のうち前記記号列生成ステップで生成した第1の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第2の記号列から第1の記号列を復元するための記号列復元用データとを符号化するとともに、残りの記号が全て特定の記号であることを示す符号を用いて前記ローテートステップで生成した第2の記号列を先頭から順に符号化する符号化ステップと、
前記符号化ステップで符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別ステップと、
前記符号量超過判別ステップにより合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除ステップと、を備え、
前記記号列生成ステップは、前記データ削除ステップで削除した周波数変換係数については符号化対象から除外するように第1の記号列を生成する、
ことを特徴とする。
上記目的を達成するために、本発明の第4の観点に係る復号化方法は、
前記符号化方法によって符号化されたデータを周波数変換係数と第2の記号列と記号列復元用データとに復号化する復号化ステップと、
前記復号化ステップで復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化ステップで復号化した第2の記号列と記号列復元用データとに基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完ステップと、
前記復号化ステップで復号化した周波数変換係数と前記除外データ補完ステップで予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化ステップと、
前記逆量子化ステップで逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換ステップと、を備える、
ことを特徴とする。
上記目的を達成するために、本発明の第5の観点に係るプログラムは、
コンピュータを、
デジタル信号を周波数変換して周波数変換係数を求める周波数変換手段、
前記周波数変換手段が求めた周波数変換係数を量子化する量子化手段、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第1の記号列を生成する記号列生成手段、
前記記号列生成手段が生成した第1の記号列をローテートすることにより特定の記号が末尾に多く連続する第2の記号列を生成するローテート手段、
前記量子化手段が量子化した周波数変換係数のうち前記記号列生成手段が生成した第1の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第2の記号列から第1の記号列を復元するための記号列復元用データとを符号化し、残りの記号が全て特定の記号であることを示す符号を用いて前記ローテート手段が生成した第2の記号列を先頭から順に符号化する符号化手段、
前記符号化手段が符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別手段と、
前記符号量超過判別手段により合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除手段、
として機能させるためのプログラムであって、
前記記号列生成手段は、前記データ削除手段が削除した周波数変換係数については符号化対象から除外するように第1の記号列を生成する、
ことを特徴とする。
上記目的を達成するために、本発明の第6の観点に係るプログラムは、
コンピュータを、
前記プログラムによって符号化されたデータを周波数変換係数と第2の記号列と記号列復元用データとに復号化する復号化手段、
前記復号化手段が復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化手段が復号化した第2の記号列と記号列復元用データとに基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完手段、
前記復号化手段が復号化した周波数変換係数と前記除外データ補完手段が予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化手段、
前記逆量子化手段が逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換手段、
として機能させることを特徴とする。
本発明にかかる符号化装置、符号化方法及びプログラムによれば、デジタル信号を効率良く符号化することができる。また、本発明にかかる復号化装置、復号化方法及びプログラムによれば、上記符号化装置、符号化方法又はプログラムにより符号化されたデータをデジタル信号に復号化できる。
以下、図面を参照して、本実施形態に係る音声処理装置の構成について説明する。
本発明の実施形態に係る音声処理装置10の構成を図1に示す。なお、音声処理装置10は、デジタル音声信号を符号化する音声符号化装置として機能する他、符号化されたデジタル音声信号を復号化する音声復号化装置としても機能する。
音声処理装置10は、図1に示すように、音声入力装置11と、記憶装置12と、ROM(Read Only Memory)13と、RAM(Random Access Memory)14と、CPU(Central Processing Unit)15と、を備える。音声入力装置11が備える各ユニットはバスを介して接続される。
音声入力装置11は、音声を入力してデジタル音声信号Sound0に変換する。音声入力装置11は、例えば、音声を16kHzのサンプリング周波数でサンプリングし、16ビットで量子化してデジタル音声信号Sound0に変換する。
記憶装置12は、音声入力装置11から供給されたデジタル音声信号Sound0を記憶するとともに、このデジタル音声信号Sound0の符号化や復号化に必要なデータを記憶する。記憶装置12は、例えば、ハードディスクから構成される。
ROM13は、CPU15の動作を制御するためのプログラム等を記憶する。
RAM14は、CPU15のワークエリアとして機能する。
CPU15は、ROM13に記憶されたプログラムに従って処理を実行する。CPU15は、機能的には、符号化部15−1と復号化部15−2とを備える。
まず、符号化部15−1について詳細に説明する。
符号化部15−1は、デジタル音声信号を符号化するものであり、図2に示すように、DC削除部21と、フレーム化部22と、レベル調整部23と、MDCT(Modified Descrete Transform、修正離散コサイン変換)部24と、正規化部25と、帯域分割部26と、包絡生成部27と、包絡除算部28と、量子化部29と、フラグ生成部30と、フラグローテート部31と、エントロピー符号化部32と、符号量比較部33と、データ削除部34と、を備える。
DC削除部21は、音声入力装置11から供給されたデジタル音声信号Sound0から、直流成分を削除する。DC削除部21は、例えば、式(1)により示される高域通過フィルタにより構成される。
Figure 2009205085
・・・(1)
フレーム化部22は、DC削除部21により直流成分が削除されたデジタル音声信号Sound1を、符号化(圧縮)の処理単位であるフレームに分割する。フレーム化部22は、1つのフレームにm(m≧1)個のブロックを含むように分割する。なお、各ブロックは、1回のMDCTの次数分の長さを有する。また、理解を容易にするため、特に説明がない限り、1フレーム分のデジタル音声信号の符号化及び復号化について説明する。
レベル調整部23は、フレーム化部22から供給されたデジタル音声信号Sound1のレベルを調整する。レベル調整部23は、フレームに含まれる全てのデジタル音声信号Sound1のレベルが指定ビット数に収まるように調整する。
例えば、1フレーム中の信号の最大振幅がnビットのデータで表されるものとして、制圧目標ビット数をNとすると、レベル調整部23は、次の式(2)に従い、フレーム中の信号のビットをLSB(Least Significant Bit)側にシフトすることにより、デジタル音声信号のレベル調整を行う。
Figure 2009205085
・・・(2)
なお、制圧目標ビット数Nは、例えば10ビット程度とすることが望ましい。また、レベル調整部23は、ビットシフト数shift_bitを記憶装置12に記憶する。
MDCT部24は、レベル調整部23がレベル調整したデジタル音声信号Sound2を、ブロック毎に周波数変換してMDCT係数Xk(kは変換した周波数を示す符号)を算出する。MDCT部24は、例えば、式(3)に従いMDCT係数Xkを算出する。
Figure 2009205085
・・・(3)
なお、MDCTのタップ数Mは512タップが理想的である。
正規化部25は、MDCT部24がブロック毎に算出したMDCT係数Xkをそれぞれ正規化する。まず、正規化部25は、MDCT係数Xkの最大値を検索し、検索したMDCT係数Xkの最大値をゲインgainとして設定する。そして、正規化部25は、全てのMDCT係数Xkをゲインgainでそれぞれ除算したうえで、指定ビット数(例えば、8ビット)にそれぞれ正規化(量子化)する。なお、正規化部25は、ゲインgainを、記憶装置12に記憶する。なお、ゲインgainはブロック毎に用意しても良いが、理解を容易にするため1フレームに1つのゲインgainを設定するものとして説明する。
帯域分割部26は、図3に示すように、正規化部25により正規化されたMDCT係数Xk_regを、聴覚の特性に合わせて低域ほど狭く、高域ほど広くなるように対数的に分割する(区分けする)。なお、図3は、横軸を周波数f、縦軸をMDCT係数Xk_regとして、1ブロック分のMDCT係数Xk_regを実線で示している。図3には、理解を容易にするために、MDCT係数Xk_regを6つの分割帯域b_i(iは分割帯域の数)に区分けした例を示すが、実際は16程度に分割することが望ましい。また、図3、7、10及び12においてはMDCT係数は絶対値で示す。
包絡生成部27は、正規化部25により正規化されたMDCT係数Xk_regに基づいて分割帯域b_i毎に包絡値env_iを求める。ここでは、包絡値env_iは、各分割帯域b_iに含まれるMDCT係数Xk_regの絶対値の最大値とする。図3において、周波数軸と、分割帯域b_i毎に波線で示した各線分との各距離が各分割帯域b_iの包絡値env_iに相当する。また、包絡生成部27は、求めた各分割帯域b_iの包絡値env_iを記憶装置12に記憶する。なお、包絡値env_iはブロック毎に用意してもよいが、理解を容易にするため1フレーム中の全てのブロックに共通の値を用いるものとして説明する。
包絡除算部28は、正規化部25により正規化されたMDCT係数Xk_regのそれぞれを、包絡生成部27が求めた包絡値env_iのうち対応する分割帯域b_iの包絡値env_iで除算する。具体的には、包絡除算部28は、各分割帯域b_iに含まれる全てのMDCT係数Xk_regを、当該分割帯域b_iの包絡値env_iでそれぞれ除算する。
量子化部29は、包絡除算部28による除算済みのMDCT係数Xk_eのそれぞれを、分割帯域b_i毎に予め定められた量子化ビット数のうち対応する分割帯域b_iの量子化ビット数でそれぞれ量子化する。この量子化ビット数は、人間の聴覚の特性に基づいて、低域ほど多く、高域ほど少なくなるように、例えば、8〜5ビット程度とすることが望ましい。
フラグ生成部30は、量子化部29が量子化したMDCT係数Xk_qを符号化するかしないかを示すフラグFlag_kを周波数毎に生成し、このフラグFlag_kを連結してフラグ列Flags_bef_rotを生成する。フラグ生成部30は、例えば、mブロック分のMDCT係数Xk_qが全て「0」である周波数については「0」、mブロック分のMDCT係数Xk_qのいずれかが「0」以外である周波数については「1」と設定した全周波数分のフラグFlag_kを周波数の小さい順に連結することにより、フラグ列Flags_bef_rotを生成する。
なお、フラグ生成部30は、データを削除したことを示す信号を後述するデータ削除部34から供給された場合、再度フラグ列Flags_bef_rotを生成する。
フラグローテート部31は、フラグ生成部30が生成したフラグ列Flags_bef_rotに基づいて、最後尾に最も長く「0」が続くフラグ列Flags_aft_rotを求める。また、フラグローテート部31は、フラグ列Flags_bef_rotからフラグ列Flags_aft_rotにするために必要なローテート数Rotateを求める。
エントロピー符号化部32は、「残りの符号は全て0である」ことを示す符号を用いて、フラグローテート部31が生成したフラグ列Flags_aft_rotをエントロピー符号化する。なお、エントロピー符号化部32は、レンジコーダ、ハフマンコード等のエントロピー符号化を行う。
また、エントロピー符号化部32は、量子化部29により量子化されたMDCT係数Xk_qのうち、フラグ生成部30が生成したフラグ列Flags_bef_rotの値が「1」である周波数のMDCT係数Xk_qを周波数順にエントロピー符号化する。さらに、エントロピー符号化部32は、記憶装置12に記憶されたビットシフト数shift_bitとゲインgainと包絡値env_iとをエントロピー符号化する。
また、エントロピー符号化部32は、フラグローテート部31が生成したローテート数Rotateとあらかじめ記憶装置12に記憶された1つ前のフレームのローテート数Rotate_oldとの差分を求め、求めたローテート数の差分Rotate_difをエントロピー符号化する。また、エントロピー符号化部32は、ローテート数Rotateをローテート数Rotate_oldとして記憶装置12に記憶する。
符号量比較部33は、エントロピー符号化部32が符号化した1フレーム分の符号化データのデータ量が予め設定された基準値を超えているか否かを判別する。符号量比較部33は、符号化データのデータ量が基準値を超えていないと判別した場合、符号化データを記憶装置12に記憶する。一方、符号量比較部33は、符号化データのデータ量が目標符号量を超えていると判別した場合、符号化データの削減を指示する信号をデータ削除部34に供給する。なお、目標符号量は、あらかじめ、記憶装置12等に記憶しておく。
データ削除部34は、符号量比較部33から供給された符号化データの削減を指示する信号に応答して、データを削除する。具体的には、例えば、データ削除部34は、各周波数のmブロック分のMDCT係数Xk_qから当該周波数の重要度を求める。そして、データ削除部34は、重要度が最も小さい周波数のMDCT係数Xk_qを「0」に設定するとともに、データを削除したことを示す信号をフラグ生成部30に供給する。
重要度を求める方法としては、例えば、各周波数のmブロック分のMDCT係数Xk_qから当該周波数のエネルギーを求め、エネルギーが高い周波数ほど重要度を高く設定する方法が考えられる。
例えば、i番目の周波数のエネルギーは、次の式(4)によって表すことができる。
Figure 2009205085
・・・(4)
なお、データ削除部34は、周波数に依存した重み付け係数をエネルギーに乗算した上で、重要度を求めても良い。
例えば、データ削除部34は、500Hz未満のMDCT係数Xk_qには1.3を乗算し、500以上3500Hz未満のMDCT係数Xk_qには1.1を乗算し、3500Hz以上のMDCT係数Xk_qには1.0を乗算する。
符号化部15−1は、以上のようにしてデジタル音声信号をフレーム毎に符号化し、生成した符号化データを記憶装置12に記憶する。
次に、復号化部15−2について詳細に説明する。
復号化部15−2は、符号化部15−1により符号化された符号化データを復号するものであり、図4に示すように、エントロピー復号化部41と、フラグローテート部42と、除外データ補完部43と、逆量子化部44と、包絡乗算部45と、ゲイン合成部46と、IMDCT部47と、レベル再現部48と、を備える。
エントロピー復号化部41は、記憶装置12に記憶された符号化データを復号化する。エントロピー復号化部41は、エントロピー復号化により、符号化対象であった周波数のMDCT係数Xk_qと、ビットシフト数shift_bitと、ゲインgainと、包絡値env_iと、ローテート数の差分Rotate_difとを復号化する。また、エントロピー復号化部41は、エントロピー復号化により、フラグ列Flags_aft_rotを復号化する。
また、エントロピー復号化部41は、復号化したローテート数の差分Rotate_difと、あらかじめ記憶装置12に記憶されたローテート数Rotate_oldとからローテート数Rotateを求める。また、エントロピー復号化部41は、ビットシフト数shift_bitと、ゲインgainと、包絡値env_iと、を記憶装置12に記憶する。なお、エントロピー復号化部41は、求めたローテート数Rotateをローテート数Rotate_oldとして記憶装置12に記憶する。
フラグローテート部42は、エントロピー復号化部41により復号化されたフラグ列Flags_aft_rotと、ローテート数Rotateとに基づいて、フラグ列Flags_bef_rotを求める。具体的には、フラグローテート部42は、エントロピー復号化部41により復号化されたフラグ列Flags_aft_rotを、ローテート数Rotateの分だけ符号化のときと逆方向にローテートすることによりフラグ列Flags_bef_rotを求める。
除外データ補完部43は、フラグローテート部42が求めたフラグ列Flags_bef_rotに基づいて、符号化対象から除外された周波数のMDCT係数Xk_qを補完することにより、全周波数のMDCT係数Xk_qを生成する。具体的には、除外データ補完部43は、フラグFlag_kが「1」、すなわち符号化対象であった周波数のMDCT係数Xk_qとしては、エントロピー復号化部41が復号化したmブロック分のMDCT係数Xk_qを設定し、フラグが「0」、すなわち符号化対象でなかった周波数のMDCT係数Xk_qとしては、全て「0」を設定する。除外データ補完部43は、生成したMDCT係数Xk_qを逆量子化部44に供給する。
逆量子化部44は、除外データ補完部43が生成したMDCT係数Xk_qを、分割帯域b_i毎に予め定められた精度で、それぞれ逆量子化する。
包絡乗算部45は、逆量子化部44により逆量子化されたMDCT係数Xk_eのそれぞれに、記憶装置12に記憶された包絡値env_iのうち対応する分割帯域b_iの包絡値env_iを乗算する。包絡乗算部45は、各分割帯域b_iに含まれる全てのMDCT係数Xk_eに、当該分割帯域b_iの包絡値env_iを乗算する。
ゲイン合成部46は、包絡乗算部45により包絡値env_iが乗算されたMDCT係数Xk_regのそれぞれに、記憶装置12に記憶されたゲインgainを乗算する。
IMDCT部47は、ゲイン合成部46によりゲインgainが乗算されたMDCT係数Xkをブロック毎に逆MDCT変換することにより、時間軸のデジタル音声信号Sound2を求める。
レベル再現部48は、記憶装置12に記憶されたビットシフト数shift_bitに基づいて、IMDCT部47が求めたデジタル音声信号Sound2のレベルを調整することによりデジタル音声信号Sound1を生成する。
次に、本実施形態に係る音声処理装置の動作について説明する。
まず、図5に示すフローチャートを用いて、音声処理装置10の符号化処理について説明する。符号化部15−1は、音声入力装置11からデジタル音声信号を供給されると、図5に示すフローチャートに従って符号化処理を実行する。
DC削除部21は、式(1)に従って、デジタル音声信号Sound0の直流成分を削除する(ステップS11)。
フレーム化部22は、直流成分が削除されたデジタル音声信号Sound1をフレームに分割する(ステップS12)。
レベル調整部23は、1フレームに分割されたデジタル音声信号Sound1のレベルを調整する(ステップS13)。
MDCT部24は、レベル調整されたデジタル音声信号Sound2をブロック毎に周波数変換する(ステップS14)。
正規化部25は、ブロック毎に算出されたMDCT係数Xkをそれぞれ正規化する(ステップS15)。
帯域分割部26は、正規化されたMDCT係数Xk_regを、聴覚の特性に合わせて低域ほど狭く、高域ほど広くなるように対数的に分割する(ステップS16)。
包絡生成部27は、正規化されたMDCT係数Xk_regに基づいて分割帯域b_i毎に包絡値env_iを求める(ステップS17)。
包絡除算部28は、正規化されたMDCT係数Xk_regのそれぞれを、対応する分割帯域b_iの包絡値env_iで除算する(ステップS18)。
量子化部29は、各包絡値env_iで除算済みのMDCT係数Xk_eのそれぞれを、分割帯域b_i毎に予め定められた量子化ビット数のうち対応する分割帯域b_iの量子化ビット数でそれぞれ量子化する(ステップS19)。
フラグ生成部30は、フラグFlag_kを周波数毎に生成し、このフラグFlag_kを連結してフラグ列Flags_bef_rotを生成する(ステップS20)。
符号化部15−1は、フラグ列Flags_bef_rotを生成した後、フラグ符号化処理(ステップS21)を実行する。フラグ符号化処理については、図6に示すフローチャートを参照して詳細に説明する。
フラグ符号化処理では、まず、フラグローテート部31は、生成されたフラグ列Flags_bef_rotの中から最も長く「0」が続くビット列のを検索する(ステップS31)。なお、フラグローテート部31は、フラグ列Flags_bef_rotが周波数の低い順に生成されている場合、最も高い周波数のフラグの次には最も低い周波数のフラグが続いているものとして、ビット列を検索する。
フラグローテート部31は、例えば、「0」のみからなるビット列のビット数(ビット長)を格納するビット数格納用変数Bit_cntと、「0」のみからなるビット列のうち最長のビット列のビット数を格納する最長ビット数格納用変数Bit_cnt_maxと、「0」のみからなるビット列のうち最長のビット列の最後のビットの位置を格納する最終ビット位置格納用変数Bit_max_posと、を用いてビット位置を求める。
フラグローテート部31は、ビット数格納用変数Bit_cntと、最長ビット数格納用変数Bit_cnt_maxと、最終ビット位置格納用変数Bit_max_posと、を全て「0」に初期化する。そして、フラグローテート部31は、位置が「0」であるビット、すなわち、フラグ列Flags_bef_rotの最初のフラグ(例えば、最も低い周波数に対応するフラグ)から順に、各フラグFlag_kが「0」か否かを判別し、判別結果に応じた処理を実行する。
フラグローテート部31は、判別結果が「0」である場合は、ビット数格納用変数Bit_cntをインクリメントしてから次のフラグのチェックに移行する。
一方、フラグローテート部31は、判別結果が「1」である場合は、さらにビット数格納用変数Bit_cntの値が最長ビット数格納用変数Bit_cnt_maxの値より大きいか否かを判別する。
フラグローテート部31は、ビット数格納用変数Bit_cntの値の方が大きいと判別したときは最長ビット数格納用変数Bit_cnt_maxにビット数格納用変数Bit_cntの値を格納し、前のビットの位置を最終ビット位置格納用変数Bit_max_posに格納し、ビット数格納用変数Bit_cntの値を「0」にクリアしてから次のフラグのチェックに移行する。一方、フラグローテート部31は、ビット数格納用変数Bit_cntの値の方が小さい(又は同じ)と判別したときは、ビット数格納用変数Bit_cntの値を「0」にクリアして次のフラグのチェックに移行する。
フラグローテート部31は、全てのフラグをチェックした後、さらに判別結果が「1」となるフラグのチェックを終了すると、検索を終了する。なお、最終ビット位置格納用変数Bit_max_posに格納されている値が最も長く「0」が続くビット列の最後のビットの位置となる。
次に、フラグローテート部31は、最も長く「0」が続くビット列の最後のビットの位置に基づいて、当該最も長く「0」が続くビット列が最後尾にくるようにフラグ列Flags_bef_rotをローテートする(ステップS32)。フラグローテート部31は、例えば、周波数の低い方にローテートする場合は、最も長く「0」が続くビット列の最後のビットの位置をローテート数としてローテートする。
図7を参照して、フラグ列Flags_bef_rotをローテートする例を説明する。図7に示すように、周波数帯域は6つの分割帯域b_iに分割され、1〜6の分割帯域b_iにはそれぞれ「2」、「3」、「4」、「6」、「9」、「14」個のMDCT係数Xk_qが含まれているものとして説明する。
図7に示すように、量子化部29による量子化、或いは、データ削除部34によるデータの削除により、MDCT係数Xk_qが「0」とされた周波数のフラグFlag_kは「0」、他の周波数のフラグFlag_kは「1」に設定される。
ローテート前のフラグ列が図7に示すような値である場合、フラグローテート部31は、ステップS31の処理により、最も長く「0」が続くビット列の最後のビットの位置として「6」を検出する。フラグローテート部31は、ローテート数Rotateを「6」として設定し、フラグ列を左に「6」ビット分ローテートすることにより、図7に示すようなフラグ列Flags_aft_rotを求める。
エントロピー符号化部32は、ローテート数Rotateとあらかじめ記憶装置12に記憶された1つ前のフレームのローテート数Rotate_oldとの差分をとり、求めたローテート数の差分Rotate_difを符号化する。(ステップS33)。
エントロピー符号化部32は、ローテート数Rotateをローテート数Rotate_oldとして記憶装置12に記憶する(ステップS34)。
エントロピー符号化部32は、フラグ列Flags_aft_rotのうち符号化されていない全てのフラグが全て「0」であるか否かを判別する(ステップS34)。エントロピー符号化部32は、例えば、符号化済みのフラグ数と記憶装置12に記憶された最長ビット数格納用変数Bit_cnt_maxの値との和がフラグ列Flags_bef_rotのフラグ数と一致するか否かにより判別する。
エントロピー符号化部32は、符号化されていないフラグのいずれかが「0」ではないと判別したときは(ステップS35:NO)、フラグ列Flags_aft_rotのフラグを1つ符号化する(ステップS36)。
エントロピー符号化部32は、符号化されていない全てのフラグが全て「0」であると判別したときは(ステップS35:YES)、残りのフラグが全て0であることを示す符号である「残りは0符号」を出力する(ステップS37)。
符号化部15−1は、「残りは0符号」を出力するとフラグ符号化処理を終了する。なお、フラグ符号化処理においては、フラグ列Flags_aft_rotは先頭のフラグから符号化するものとして説明した。
エントロピー符号化部32は、フラグ列Flags_aft_rot及びローテート数の差分Rotate_difをエントロピー符号化した後、その他のデータをエントロピー符号化する(ステップS22)。具体的には、エントロピー符号化部32は、フラグ列Flags_bef_rotの値が「1」である周波数のMDCT係数Xk_qと、ビットシフト数shift_bitと、ゲインgainと、包絡値env_iとを符号化する。なお、エントロピー符号化部32は、フラグ列Flags_bef_rotの連結順序に合わせて、MDCT係数Xk_qを周波数の小さい順に符号化する。
符号量比較部33は、エントロピー符号化部32が符号化した1フレーム分の符号化データのデータ量が目標符号量以下であるか否かを判別する(ステップS23)。
符号量比較部33が、符号化データのデータ量が目標符号量以下であると判別すると(ステップS23:YES)、符号化処理が完了する。
一方、符号量比較部33が、符号化データのデータ量が目標符号量以下ではないと判別したときは(ステップS23:NO)、データ削除部34に符号化データの削減を指示する信号を供給する。
データ削除部34は、符号量比較部33から供給された符号化データの削減を求める信号に応答して、符号化データを削除する(ステップS24)。データ削除部34は、周波数毎に重要度を求め、重要度が最も低い周波数のMDCT係数Xk_qを「0」に設定するとともに、符号化データを削減したことを示す信号をフラグ生成部30に供給する。
フラグ生成部30は、符号化データを削減したことを示す信号をデータ削除部34から供給されると、フラグ列Flags_bef_rotを生成する処理を再度実行する(ステップS20)。
次に、図8に示すフローチャートを用いて、音声処理装置10の復号化処理について説明する。復号化部15−2は、図8に示すフローチャートに従って復号化処理を実行することにより、記憶装置12に記憶された符号化データをデジタル音声信号に復号する。
エントロピー復号化部41は、フラグに関するデータ以外のデータを復号化する(ステップS41)。具体的には、エントロピー復号化部41は、記憶装置12に記憶された符号化データをエントロピー復号化することにより、符号化対象であった周波数のMDCT係数Xk_qと、ビットシフト数shift_bitと、ゲインgainと、包絡値env_iとを求める。
エントロピー復号化部41は、エントロピー復号化によりフラグに関するデータを復号化する(ステップS42)。フラグ復号化処理については、図9に示すフローチャートを参照して詳細に説明する。
エントロピー復号化部41は、記憶装置12に記憶された符号化データをエントロピー復号化することにより、ローテート数の差分Rotate_difを求める(ステップS51)。
エントロピー復号化部41は、ローテート数の差分Rotate_difとあらかじめ記憶装置12に記憶された1つ前のフレームのローテート数Rotate_oldとから、ローテート数Rotateを求め、求めたローテート数Rotateをローテート数Rotate_oldとして記憶装置12に記憶する(ステップS52)。
エントロピー復号化部41は、記憶装置12に記憶された符号化データのうちフラグ列Flags_aft_rotに対応する部分読み出し、先頭から順に対応する符号が「残りは0符号」か否かを判別し、判別結果に応じた処理を実行する。(ステップS53)。
エントロピー復号化部41は、対応する符号が「残りは0符号」ではないと判別したときは(ステップS53:NO)、対応する符号を1つのフラグとして復号化し(ステップS54)、次の符号が「残りは0符号」か否かを判別する(ステップS53)。
一方、エントロピー復号化部41は、対応する符号が「残りは0符号」であると判別したときは(ステップS53:YES)、残りのフラグを全て「0」に設定したフラグ列Flags_aft_rotを生成する(ステップS55)。
フラグローテート部42は、ステップS55で求めたフラグ列Flags_aft_rotを、ステップS52で求めたローテート数Rotateの分だけ符号化のときと逆方向にローテートすることにより、フラグ列Flags_bef_rotを生成する(ステップS56)。復号化部15−2は、フラグ列Flags_bef_rotを生成すると、フラグ復号化処理を終了する。
除外データ補完部43は、ステップS41で求めたMDCT係数Xk_qとステップS56で求めたフラグ列Flags_bef_rotとに基づいて、各周波数のMDCT係数Xk_qを生成する(ステップS43)。具体的には、除外データ補完部43は、フラグ列Flags_bef_rotのうち対応するフラグが「0」、すなわち符号化対象でなかった周波数のMDCT係数Xk_qには全て「0」を補完することにより、全ての周波数のMDCT係数Xk_qを生成する。
逆量子化部44は、ステップS43で生成したMDCT係数Xk_qを、分割帯域b_i毎に予め定められた精度で、それぞれ逆量子化する(ステップS44)。
包絡乗算部45は、ステップS44で逆量子化されたMDCT係数Xk_eのそれぞれに、記憶装置12に記憶された包絡値env_iのうち対応する分割帯域b_iの包絡値env_iを乗算する(ステップS45)。
ゲイン合成部46は、ステップS45で包絡値env_iが乗算されたMDCT係数Xk_regのそれぞれに、記憶装置12に記憶されたゲインgainを乗算する(ステップS46)。
IMDCT部47は、ステップ46でゲインgainが乗算されたMDCT係数Xkをブロック毎に逆MDCT変換することにより、時間軸のデジタル音声信号Sound2を求める(ステップS47)。
レベル再現部48は、記憶装置12に記憶されたビットシフト数shift_bitに基づいて、ステップS47で求めたデジタル音声信号Sound2のレベルを調整する(ステップS48)。レベル再現部48がデジタル音声信号Sound2のレベルを調整することによりデジタル音声信号Sound1を生成すると復号化処理が完了する。
上述のように、本実施形態に係る音声処理装置10は、フラグローテート部42が最後尾に最も長く「0」が続くフラグ列Flags_aft_rotになるようにフラグ列Flags_bef_rotをローテートし、エントロピー符号化部32が「残りは0符号」を用いてフラグ列をエントロピー符号化する。このため、本実施形態に係る音声処理装置10によれば、符号化効率の向上を期待できる。
ここで、図10を用いて、フラグ列Flags_bef_rotをローテートするメリットを説明する。図10(A)は、母音部分に相当するブロックを周波数変換したときの周波数fとMDCT係数Xk_regの関係の一例を示す図である。図10(B)は、子音部分に相当するブロックを周波数変換したときの周波数fとMDCT係数Xk_regの関係の一例を示す図である。
図10(A)に示すように、母音部分に相当するブロックを周波数変換したときは、1、2及び6番目の分割帯域b_iに含まれるMDCT係数Xk_regの絶対値が小さい値となる。一方、図10(B)に示すように、子音部分に相当するブロックを周波数変換したときは、1、2及び3番目の分割帯域b_iに含まれるMDCT係数Xk_regの絶対値、並びに、6番目の分割帯域b_iに含まれるMDCT係数Xk_regのうち比較的高周波側のMDCT係数Xk_regの絶対値が小さい値となる。
このようにMDCT係数Xk_regの絶対値が小さい値となる周波数のフラグFlag_kは、フラグ生成部30により「0」とされる可能性がきわめて高くなる。この理由は、量子化部29による量子化によりMDCT係数Xk_qが「0」とされる確率が高いことに加え、データ削除部34によりMDCT係数Xk_qが「0」とされる可能性が極めて高いためである。
ここで、母音部分に相当するブロックを周波数変換したときは、1番目と2番目の分割帯域b_iに属する周波数のフラグFlag_kが連続して「0」となる可能性が極めて高く、また、6番目の分割帯域b_iに属する周波数のフラグFlag_kが連続して「0」となる可能性が極めて高い。以下、理解を容易にするため、1、2及び6番目の分割帯域b_iに属する周波数のフラグFlag_kは全て「0」であると仮定して説明する。
エントロピー符号化部32は、「残りの符号は全て0である」ことを示す符号を用いてフラグ列をエントロピー符号化する。このため、フラグ生成部30が生成したフラグ列Flags_bef_rotをそのままエントロピー符号化する場合、6番目の分割帯域b_iに属する周波数のフラグFlag_kについてのみ「残りの符号は全て0である」ことを示す符号を用いて符号化することになる。
一方、フラグローテート部31がフラグ列Flags_bef_rotをローテートしたフラグ列Flags_aft_rotを符号化する場合、6番目の分割帯域b_iに属する周波数のフラグFlag_kに加え1番目及び2番目の分割帯域b_iに属する周波数のフラグFlag_kについても「残りの符号は全て0である」ことを示す符号を用いて符号化することができる。
子音部分に相当するブロックを周波数変換したときは、フラグが「0」となる周波数が比較的高周波側にシフトする。しかしながら、フラグが「0」となる周波数は、低周波側と高周波側に分かれていることは同様であるため、フラグ列Flags_bef_rotをローテートするメリットは損なわれない。このように、フラグ列Flags_bef_rotをローテートしたフラグ列Flags_aft_rotを符号化することにより、符号化効率の向上が期待できる。
また、本実施形態に係る音声処理装置10は、エントロピー符号化部32は、本フレームのローテート数Rotateそのものでなく、ローテート数の差分Rotate_difを符号化する。このため、さらなる符号化効率の向上が期待できる。これは、連続するフレームでは、ローテート数も近い値となる可能性が高いためである。
(変形例)
上記実施形態では、復号時にローテート数Rotateを得るために、ローテート数の差分Rotate_difを符号化していた。しかし、ローテート数の差分Rotate_dif自体も一定の容量をもつため、符号化データにはローテート数の差分Rotate_difを含まない方が好ましい。以下、符号化時に前述の包絡値env_iに基づいてフラグ列Flags_bef_rotをローテートすることにより、符号化データにローテート数の差分Rotate_difを含まずに、復号時にローテート数Rotateを得る例について説明する。
なお、変形例に係る音声処理装置は、上記実施形態に係る音声処理装置10と同様の構成であり、フラグ符号化処理及びフラグ復号化処理のみが異なる。このため、変形例に係る音声処理装置については、構成の説明は省略し、フラグ符号化処理及びフラグ復号化処理について図面を参照しながら説明する。
まず、図11に示すフローチャートを用いて、変形例に係る音声処理装置のフラグ符号化処理について説明する。
包絡生成部27は、全ての周波数のフラグFlag_kが「0」である分割帯域b_iの包絡値env_iを「0」に設定する(ステップS61)。
なお、データ削除部34により重要度が最も低い周波数のMDCT係数Xk_qが「0」に設定される(ステップS24)と、フラグ生成部30は、フラグ列Flags_bef_rotを生成する処理を再度実行する(ステップS20)。このため、包絡生成部27は、包絡生成(ステップS17)と同様の処理を実行することにより、全ての周波数のフラグFlag_kが「0」である分割帯域b_iの包絡値env_iを「0」に設定することができる。
なお、全ての周波数のフラグFlag_kが「0」である分割帯域b_iに含まれる周波数のMDCT係数Xk_qは全て符号化しないため、当該分割帯域b_iの包絡値env_iは復号化の際に使用しない。このため、符号化及び復号化の際にローテート数Rotateを求めるためにこの包絡値env_iを利用することができる。
フラグローテート部31は、分割帯域b_i単位でフラグ列Flags_bef_rotをローテートした場合に、末尾に長く0が続くフラグ列Flags_aft_rotにするためのローテート数Rotateを包絡値env_iに基づいて検索する(ステップS62)。
図12を参照して、フラグ列Flags_bef_rotを包絡値env_iに基づいてローテートする例を説明する。
包絡値env_iが「0」である分割帯域b_iに含まれる周波数のフラグを全て「0」、包絡値env_iが「0」以外である分割帯域b_iに含まれる周波数のフラグを全て「1」としたときの分割帯域単位のフラグ列をフラグ列Flagsb_bef_rotと定義する。仮に、ステップS61により、1、2及び6番目の分割帯域b_iの包絡値env_iが「0」に設定されたとすると、フラグ列Flagsb_bef_rotは、図12に示したフラグ列になる。
このフラグ列Flagsb_bef_rotを周波数が小さい方に2ビット、3ビット、4ビット、6ビット、9ビット、14ビットと分割帯域b_i毎(各分割帯域b_iに含まれる周波数の個数毎)にローテートさせた場合に、末尾に最も長く「0」が続くのは、フラグ列Flagsb_bef_rotを2+3=5ビット分ローテートさせたときである。図12に示すように、フラグ列Flagsb_bef_rotを周波数が小さい方に5ビット分ローテートさせると、フラグ列Flagsb_aft_rotのようなフラグ列になる。このフラグ列Flagsb_aft_rotは、フラグ列の最初に「0」が1ビットだけ残るため末尾に最も長く「0」が続いたフラグ列ではないが、末尾に長く「0」が続いたフラグ列となる。
このようにして、フラグローテート部31は、分割帯域単位フラグ列Flagsb_bef_rotを分割帯域b_i単位でローテートさせたときに、末尾に最も長く「0」が続くようにローテートしたときのローテート数Rotateを検出する。
フラグローテート部31は、求めたローテート数Rotateに基づいてフラグ列Flagsb_bef_rotをローテートし、フラグ列Flagsb_aft_rotを求める(ステップS63)。
以下、ステップS64〜ステップS66の処理は、図6のフローチャートに示したフラグ符号化処理のステップS35〜ステップS37と同様であるため説明を省略する。
次に、図13に示すフローチャートを用いて、変形例に係る音声処理装置のフラグ復号化処理について説明する。
エントロピー復号化部41は、記憶装置12に記憶された符号化データのうちフラグ列Flags_aft_rotに対応する部分を読み出し、順に対応する符号が「残りは0符号」か否かを判別し、判別結果に応じた処理を実行する。(ステップS71)。
エントロピー復号化部41は、対応する符号が「残りは0符号」ではないと判別したときは(ステップS71:NO)、対応する符号を1つのフラグとして復号化し(ステップS72)、次の符号が「残りは0符号」か否かを判別する(ステップS71)。
一方、エントロピー復号化部41は、対応する符号が「残りは0符号」であると判別したときは(ステップS71:YES)、残りのフラグを全て0に設定してフラグ列Flags_aft_rotを生成(ステップS73)した後、記憶装置12に記憶された包絡値env_iに基づいてローテート数を求める(ステップS74)。
フラグローテート部42は、ステップS74では、フラグ符号化処理においてフラグローテート部31が実行したステップS62と同様の処理を実行する。さらに、ローテート数Rotateを求めるために用いる包絡値env_iはステップS74とステップS62とで同じであるため、フラグローテート部42は、ステップS62においてフラグローテート部31が求めたローテート数Rotateと同じローテート数Rotateを求めることができる。
フラグローテート部42は、ステップS74で求めたローテート数Rotateに基づいて、フラグ列Flags_bef_rotを求める(ステップS75)。
変形例に係る音声処理装置によれば、ローテート数Rotateあるいはローテート数の差分Rotate_difを符号化せずに符号化の際のローテート数Rotateを復号化の際に得ることができるため、符号化効率の向上を図ることができる。
なお、上記実施形態に係る音声処理装置の符号化処理及び復号化処理と、上記変形例に係る音声処理装置の符号化処理及び復号化処理とを組み合わせてもよい。
すなわち、ローテート数Rotate又はローテート数の差分Rotate_difを符号化してまでベストなローテート数Rotateを用いた方が符号化効率が良いのか、それともローテート数Rotate又はローテート数の差分Rotate_difを符号化せずに包絡値env_iから求めたローテート数Rotateを用いた方が符号化効率が良いのかを求め、符号化効率の良い方を選択して符号化することもできる。
例えば、両方の方法で符号化した後に、両方の符号化効率を比較して符号化効率の良い方の方法を採用してもよいし、符号化の前にあらかじめ用意した計算式の計算結果等からいずれの方法で符号化するかを決定するようにしてもよい。なお、復号化の際は、ローテート数Rotate又はローテート数の差分Rotate_difの有無により、いずれの方法で符号化したかを判別することができる。
また、上記実施形態に係る音声処理装置では、ローテート数の差分Rotate_difを符号化していたが、ローテート数Rotateそのものを符号化するようにしてもよい。
また、上記実施形態に係る音声処理装置では、周波数変換にMDCTを用いていたが、時間軸のデータを周波数軸のデータに変換するものであればDCTなど他の周波数変換を用いても良い。
また、所定のビットレートに符号量を抑えるために削除するデータを選択する方法や、量子化の方法などが上述した実施形態に限定されないことは勿論である。
上記実施形態では、符号化装置、復号化装置を音声処理装置に適用した場合について説明した。しかし、符号化装置、復号化装置は、音声処理装置に限るものではなく、例えば、携帯電話、携帯端末のような送受信装置に適用することができる。
また、上記実施形態では、プログラムが、それぞれメモリ等に予め記憶されているものとして説明した。しかし、符号化装置、復号化装置を、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
本発明の実施形態に係る音声処理装置の構成を示すブロック図である。 本発明の実施形態に係る音声処理装置の符号化部の構成を示すブロック図である。 周波数帯域の分割と包絡値とを説明するための図である。 本発明の実施形態に係る音声処理装置の復号化部の構成を示すブロック図である。 図2に示す符号化部が実行する符号化処理を示すフローチャートである。 図5のフローチャートに示すフラグ符号化処理を示すフローチャートである。 図6のフローチャートに示すフラグ符号化処理におけるフラグ列のローテート方法を説明するための図である。 図4に示す復号化部が実行する復号化処理を示すフローチャートである。 図8のフローチャートに示すフラグ復号化処理を示すフローチャートである。 (A)は、母音部分に相当するブロックを周波数変換したときの周波数とMDCT係数の関係を示す図である。(B)は、子音部分に相当するブロックを周波数変換したときの周波数とMDCT係数の関係を示す図である。 変形例に係る音声処理装置の符号化部が実行するフラグ符号化処理を示すフローチャートである。 図11のフローチャートに示すフラグ符号化処理におけるフラグ列のローテート方法を説明するための図である。 変形例に係る音声処理装置の復号化部が実行するフラグ復号化処理を示すフローチャートである。
符号の説明
10 音声処理装置
11 音声入力装置
12 記憶装置
13 ROM
14 RAM
15 CPU
15−1 符号化部
15−2 復号化部
21 DC削除部
22 フレーム化部
23 レベル調整部
24 MDCT部
25 正規化部
26 帯域分割部
27 包絡生成部
28 包絡除算部
29 量子化部
30 フラグ生成部
31 フラグローテート部
32 エントロピー符号化部
33 符号量比較部
34 データ削除部
41 エントロピー符号化部
42 フラグローテート部
43 除外データ補完部
44 逆量子化部
45 包絡乗算部
46 ゲイン合成部
47 IMDCT部
48 レベル再現部

Claims (10)

  1. デジタル信号を周波数変換して周波数変換係数を求める周波数変換手段と、
    前記周波数変換手段が求めた周波数変換係数を量子化する量子化手段と、
    対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第1の記号列を生成する記号列生成手段と、
    前記記号列生成手段が生成した第1の記号列をローテートすることにより特定の記号が末尾に多く連続する第2の記号列を生成するローテート手段と、
    前記量子化手段が量子化した周波数変換係数のうち前記記号列生成手段が生成した第1の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第2の記号列に基づいて第1の記号列を復元するための記号列復元用データとを符号化するとともに、残りの記号が全て特定の記号であることを示す符号を用いて前記ローテート手段が生成した第2の記号列を先頭から順に符号化する符号化手段と、
    前記符号化手段が符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別手段と、
    前記符号量超過判別手段により合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除手段と、を備え、
    前記記号列生成手段は、前記データ削除手段が削除した周波数変換係数については符号化対象から除外するように第1の記号列を生成する、
    ことを特徴とする符号化装置。
  2. 前記ローテート手段は、前記記号列生成手段が生成した第1の記号列をローテートすることにより得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第2の記号列として生成するとともに、第1の記号列から第2の記号列を生成するために必要なローテート数を求め、
    前記符号化手段は、前記ローテート手段が生成したローテート数を記号列復元用データとして符号化する、
    ことを特徴とする請求項1に記載の符号化装置。
  3. 前記符号化手段は、前記ローテート手段が生成したローテート数に換えて、当該ローテート数と前回の符号化の際に前記ローテート手段が生成したローテート数との差分を記号列復元用データとして符号化する、
    ことを特徴とする請求項2に記載の符号化装置。
  4. 前記周波数変換手段が求めた周波数変換係数の全周波数帯域を複数の分割周波数帯域に分割する周波数帯域分割手段と、
    分割周波数帯域毎に、前記周波数変換手段が求めた周波数変換係数のうち前記前記データ削除手段により削除されていない周波数変換係数の絶対値の最大値を包絡値として取得する包絡値取得手段と、をさらに備え、
    前記量子化手段は、各分割周波数帯域に含まれる周波数変換係数を、前記包絡値取得手段が取得した分割周波数帯域毎の包絡値のうち当該分割周波数帯域の包絡値で除算することにより量子化し、
    前記ローテート手段は、前記記号列生成手段が生成した第1の記号列を構成する各記号のうち、包絡値が0である分割周波数帯域に含まれる周波数に対応する記号を符号化対象から除外することを示す記号に置換し、包絡値が0ではない分割周波数帯域に含まれる周波数に対応する記号を符号化対象とすることを示す記号に置換した場合に得られる記号列を、各分割周波数帯域に含まれる周波数変換係数の個数ずつローテートした場合に得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第2の記号列として生成し、
    前記符号化手段は、前記包絡値取得手段が生成した分割周波数帯域毎の包絡値を記号列復元用データとして符号化する、
    ことを特徴とする請求項1に記載の符号化装置。
  5. 前記記号列生成手段が生成した第1の記号列をローテートすることにより得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第2の記号列として生成するとともに、第1の記号列から第2の記号列を生成するために必要なローテート数を求める第2のローテート手段、をさらに備え、
    前記符号化手段は、前記ローテート手段が生成した第2の記号列と前記第2のローテート手段が生成した第2の記号列とのうちいずれを符号化するかを選択し、前記ローテート手段が生成した第2の記号列を符号化することを選択した場合は、残りの記号が全て特定の記号であることを示す符号を用いて前記ローテート手段が生成した第2の記号列を先頭から順に符号化するとともに、前記ローテート手段が生成したローテート数又は前回の符号化の際に前記ローテート手段が生成したローテート数との差分を記号列復元用データとして符号化し、前記第2のローテート手段が生成した第2の記号列を符号化することを選択した場合は、残りの記号が全て特定の記号であることを示す符号を用いて前記第2のローテート手段が生成した第2の記号列を先頭から順に符号化するとともに、前記包絡値取得手段が生成した分割周波数帯域毎の包絡値を記号列復元用データとして符号化する、
    ことを特徴とする請求項4に記載の符号化装置。
  6. 請求項1乃至5のいずれか1項に記載の符号化装置によって符号化されたデータを周波数変換係数と第2の記号列と記号列復元用データとに復号化する復号化手段と、
    前記復号化手段が復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化手段が復号化した第2の記号列と記号列復元用データとに基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完手段と、
    前記復号化手段が復号化した周波数変換係数と前記除外データ補完手段が予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化手段と、
    前記逆量子化手段が逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換手段と、を備える、
    ことを特徴とする復号化装置。
  7. デジタル信号を周波数変換して周波数変換係数を求める周波数変換ステップと、
    前記周波数変換ステップで求めた周波数変換係数を量子化する量子化ステップと、
    対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第1の記号列を生成する記号列生成ステップと、
    前記記号列生成ステップで生成した第1の記号列をローテートすることにより特定の記号が末尾に多く連続する第2の記号列を生成するローテートステップと、
    前記量子化ステップで量子化した周波数変換係数のうち前記記号列生成ステップで生成した第1の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第2の記号列から第1の記号列を復元するための記号列復元用データとを符号化するとともに、残りの記号が全て特定の記号であることを示す符号を用いて前記ローテートステップで生成した第2の記号列を先頭から順に符号化する符号化ステップと、
    前記符号化ステップで符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別ステップと、
    前記符号量超過判別ステップにより合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除ステップと、を備え、
    前記記号列生成ステップは、前記データ削除ステップで削除した周波数変換係数については符号化対象から除外するように第1の記号列を生成する、
    ことを特徴とする符号化方法。
  8. 請求項7項に記載の符号化方法によって符号化されたデータを周波数変換係数と第2の記号列と記号列復元用データとに復号化する復号化ステップと、
    前記復号化ステップで復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化ステップで復号化した第2の記号列と記号列復元用データとに基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完ステップと、
    前記復号化ステップで復号化した周波数変換係数と前記除外データ補完ステップで予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化ステップと、
    前記逆量子化ステップで逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換ステップと、を備える、
    ことを特徴とする復号化方法。
  9. コンピュータを、
    デジタル信号を周波数変換して周波数変換係数を求める周波数変換手段、
    前記周波数変換手段が求めた周波数変換係数を量子化する量子化手段、
    対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第1の記号列を生成する記号列生成手段、
    前記記号列生成手段が生成した第1の記号列をローテートすることにより特定の記号が末尾に多く連続する第2の記号列を生成するローテート手段、
    前記量子化手段が量子化した周波数変換係数のうち前記記号列生成手段が生成した第1の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第2の記号列から第1の記号列を復元するための記号列復元用データとを符号化し、残りの記号が全て特定の記号であることを示す符号を用いて前記ローテート手段が生成した第2の記号列を先頭から順に符号化する符号化手段、
    前記符号化手段が符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別手段と、
    前記符号量超過判別手段により合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除手段、
    として機能させるためのプログラムであって、
    前記記号列生成手段は、前記データ削除手段が削除した周波数変換係数については符号化対象から除外するように第1の記号列を生成する、
    ことを特徴とするプログラム。
  10. コンピュータを、
    請求項9項に記載のプログラムによって符号化されたデータを周波数変換係数と第2の記号列と記号列復元用データとに復号化する復号化手段、
    前記復号化手段が復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化手段が復号化した第2の記号列と記号列復元用データとに基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完手段、
    前記復号化手段が復号化した周波数変換係数と前記除外データ補完手段が予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化手段、
    前記逆量子化手段が逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換手段、
    として機能させることを特徴とするプログラム。
JP2008049708A 2008-02-29 2008-02-29 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム Active JP5018557B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008049708A JP5018557B2 (ja) 2008-02-29 2008-02-29 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008049708A JP5018557B2 (ja) 2008-02-29 2008-02-29 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009205085A true JP2009205085A (ja) 2009-09-10
JP5018557B2 JP5018557B2 (ja) 2012-09-05

Family

ID=41147377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008049708A Active JP5018557B2 (ja) 2008-02-29 2008-02-29 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5018557B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018200475A (ja) * 2013-07-22 2018-12-20 フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ スペクトルエンベロープのサンプル値のコンテキストベースエントロピー符号化

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193043A (ja) * 2006-01-18 2007-08-02 Casio Comput Co Ltd 音声符号化装置、音声復号装置、音声符号化方法及び音声復号方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193043A (ja) * 2006-01-18 2007-08-02 Casio Comput Co Ltd 音声符号化装置、音声復号装置、音声符号化方法及び音声復号方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018200475A (ja) * 2013-07-22 2018-12-20 フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ スペクトルエンベロープのサンプル値のコンテキストベースエントロピー符号化
US10726854B2 (en) 2013-07-22 2020-07-28 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Context-based entropy coding of sample values of a spectral envelope
JP2020190747A (ja) * 2013-07-22 2020-11-26 フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ スペクトルエンベロープのサンプル値のコンテキストベースエントロピー符号化
US11250866B2 (en) 2013-07-22 2022-02-15 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Context-based entropy coding of sample values of a spectral envelope
JP7260509B2 (ja) 2013-07-22 2023-04-18 フラウンホッファー-ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ スペクトルエンベロープのサンプル値のコンテキストベースエントロピー符号化
US11790927B2 (en) 2013-07-22 2023-10-17 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Context-based entropy coding of sample values of a spectral envelope

Also Published As

Publication number Publication date
JP5018557B2 (ja) 2012-09-05

Similar Documents

Publication Publication Date Title
JP4548348B2 (ja) 音声符号化装置及び音声符号化方法
JP4942609B2 (ja) 高速格子ベクトル量子化
US7599833B2 (en) Apparatus and method for coding residual signals of audio signals into a frequency domain and apparatus and method for decoding the same
KR100840439B1 (ko) 음성부호화장치 및 음성복호장치
JP4958780B2 (ja) 符号化装置、復号化装置及びこれらの方法
KR101143792B1 (ko) 신호 부호화 장치 및 방법, 및 신호 복호 장치 및 방법
JP2008102520A (ja) オーディオ信号の2重変換符号化
JP4736812B2 (ja) 信号符号化装置及び方法、信号復号装置及び方法、並びにプログラム及び記録媒体
JP4978539B2 (ja) 符号化装置、符号化方法及びプログラム。
JP2005338200A (ja) 音声・楽音復号化装置および音声・楽音復号化方法
JP3344944B2 (ja) オーディオ信号符号化装置,オーディオ信号復号化装置,オーディオ信号符号化方法,及びオーディオ信号復号化方法
JP2006011091A (ja) 音声符号化装置、音声復号化装置、およびこれらの方法
JP5018557B2 (ja) 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム
JP4191503B2 (ja) 音声楽音信号符号化方法、復号化方法、符号化装置、復号化装置、符号化プログラム、および復号化プログラム
JP4578145B2 (ja) 音声符号化装置、音声復号化装置及びこれらの方法
JP4574320B2 (ja) 音声符号化方法、広帯域音声符号化方法、音声符号化装置、広帯域音声符号化装置、音声符号化プログラム、広帯域音声符号化プログラム及びこれらのプログラムを記録した記録媒体
JP4287840B2 (ja) 符号化装置
JP2009193015A (ja) 符号化装置、復号化装置、符号化方法、復号化方法及びプログラム
JP4327420B2 (ja) オーディオ信号符号化方法、及びオーディオ信号復号化方法
JP2013057895A (ja) 音声再生装置、音声再生方法及びコンピュータプログラム
JP4626261B2 (ja) 音声符号化装置及び音声符号化方法
JP5188913B2 (ja) 量子化装置、量子化方法、逆量子化装置、逆量子化方法、音声音響符号化装置および音声音響復号装置
JP2010034794A (ja) オーディオ符号化装置、オーディオ符号化プログラム及びオーディオ符号化方法
JP4767289B2 (ja) 信号処理方法、信号処理装置及びプログラム
JP2012118462A (ja) 符号化装置および符号化方法、復号装置および復号方法、並びにプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120528

R150 Certificate of patent or registration of utility model

Ref document number: 5018557

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3