説明

ピッチ同期化処理方式

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はピッチ同期化処理方式に関し、更に詳しくは適応符号帳及び雑音符号帳を励振源として最適な信号系列の組を探索するCELP(Code Excited Linear Predictive Coding )型符号方式における前記符号帳の読出ベクトルを当該フレームについて先に抽出済のピッチ周期により周期化するピッチ同期化処理方式に関する。
【0002】CELP型音声符号器は企業内通信やディジタル移動体無線通信等において音声品質を保ちつつ大幅な情報圧縮を実現するものとして要望が高まっており、実用性の高い4〜16kbpsの伝送速度において音声品質の一層の改善が望まれている。特に、ディジタル移動体通信のハーフレート方式(5.6kbps)における音声コーデック(PSI−CELP)の実現においては、併せて装置の小型化、低消費電力化が強く要求されており、そのためにはDSP(Digital Signal Processor)のファームウェアの高効率(少ない演算量、少ないメモリ量)な実現が欠かせない。
【0003】
【従来の技術】図10は従来技術を説明する図である。図10(A)は従来のCELP型音声符号器の機能ブロック図で、図において1は1フレーム前の駆動音源信号を保持するフーム遅延部(FLD)、201は駆動音源信号の周期的成分(ピッチベクトルP)を記憶する適応符号帳、202 は駆動音源信号の周期的成分を記憶している固定符号帳、301 ,302 は駆動音源信号を生成するための非周期成分(コードベクトルC)を記憶している雑音(ストカスティック)符号帳、6,9は加算器、7,8は乗算器、10は線形予測分析部、11は線形予測合成フィルタ、12は減算器、13は聴覚重み付波形歪み評価部、14は符号化制御部、15はセレクタである。
【0004】線形予測分析部10は、音声の入力信号を一定長(例えば80サンプル)のフレーム毎に線形予測分析を行い、重み付けベクトルAを生成する。しかる後、符号化制御部14は符号帳20,30にインデックス番号nward を与えてピッチベクトルP及びコードベクトルCを読み出し、これらにピッチゲインb及びコードゲインgを夫々乗算して駆動音源信号(bP+gC)を形成する。更に、線形予測合成フィルタ11は駆動音源信号(bP+gC)にベクトルAによる重み付けをして再生音声信号(AbP+AgC)を形成し、減算器12は音声の入力信号と再生音声信号(AbP+AgC)との差を求めて誤差信号eを形成する。更に、この誤差信号eを聴覚重み付波形歪み評価部13で評価し、その結果を符号化制御部14にフィードバックする。更に、符号化制御部14は、上記を繰り返すことにより波形歪みを最小とするようなピッチベクトルP及びコードベクトルCの組を探索し、得られたインデックス番号及び線形予測パラメータ(ゲインパラメータ等)を伝送する。
【0005】ところで、ディジタル移動体通信システムのハーフレート(5.6kbps)方式においては、PSI−CELP(ピッチ同期励振源駆動線形予測)方式が音声符号化仕様として規格化されている。本方式の主要技術として、雑音符号帳30のコードベクトルCを当該フレームで先に抽出済のピッチ周期Lで周期化するピッチ同期化(PSI化)処理がある。
【0006】図10(B)にPSI化処理の原理を示す。PSI化処理とは、ある時点のピッチ周期がL(但し、L<N)である時に、雑音符号帳30のインデックス番号iに対応する長さNのコードベクトルCi [0]〜Ci [N−1]より、長さLのサブコードベクトルCi [0]〜Ci [L−1]を必要な回数だけ切り出し、これらを長さNのPSI化コードベクトルCに組み立てる処理を言う。このようなPSI化処理を行うことで、ハーフレート方式における音声品質の改善が得られる。
【0007】
【発明が解決しようとする課題】しかし、このPSI処理の実現には、複雑なアドレッシング制御により雑音符号帳30から長さLのサブコードベクトルを繰り返し切り出す必要がある。例えば移動体通信への適用領域では、このPSI化機能をDSPにより実現することになるが、現在では回路規模を小さく抑えられる固定小数点演算方式が主流であり、データ長や命令長も16bit 等に制限されている。この16bit 命令長では、アドレッシング機能の制約によりPSI化処理の様なランダムメモリアクセス処理には多大なオーバヘッドサイクルが必要となる。例えば、この処理を何らの工夫もなく普通に行うと、作業メモリとして32×80=2560=2Kwordの領域が必要となり、演算量・メモリ量の両面での膨大な所要量が問題となる。このことは、小型・低消費電力な装置実現において大きな障害となる。
【0008】しかも、実際のPSI化処理では、ピッチ周期Lが小数値を持つため、図10(B)に示す様な単純な切出し作業では実現できず、繰返しブロックの要素数や先頭データの読出位置が微妙に変化する。本発明の目的は、簡単な構成及び制御アルゴリズムで効率良いPSI化処理を実現できるピッチ同期化処理方式を提供することにある。
【0009】
【課題を解決するための手段】上記の課題は例えば図1の構成により解決される。即ち、本発明(1)のピッチ同期化処理方式は、適応符号帳及び雑音符号帳を励振源として最適な信号系列の組を探索するA−b−S型音声符号化方式における前記符号帳の読出ベクトルを所望のピッチ周期により周期化するピッチ同期化処理方式において、ピッチ周期の整数部及び小数部の各情報に基づき予め規定されたテーブルを参照して、雑音符号帳のコードベクトルから所定長の周期化コードベクトルを生成するためのサブベクトルの個数、サブベクトル毎の要素の位相及びサブベクトル毎のベクトル長の各情報を生成するPSI化情報生成部と、PSI化情報生成部の生成出力に基づき雑音符号帳から各対応するサブベクトルをシーケンシャルに生成し、周期化コードベクトルを組み立てるPSI化ベクトル組立部とを備えるものである。
【0010】また本発明(2)のピッチ同期化処理方式は、適応符号帳及び雑音符号帳を励振源として最適な信号系列の組を探索するA−b−S型音声符号化方式における前記符号帳の読出ベクトルを所望のピッチ周期により周期化するピッチ同期化処理方式において、現時点より過去に遡る所定数の励振源サンプル信号をピッチベクトルとして保持するフレーム遅延部と、ピッチ周期の整数部及び小数部の各情報に基づき予め規定されたテーブルを参照して、フレーム遅延部のピッチベクトルから所定長の周期化ピッチベクトルを生成するためのサブベクトルの個数、サブベクトル毎の要素の位相及びサブベクトル毎のベクトル長の各情報を生成するPSI化情報生成部と、PSI化情報生成部の生成出力に基づきフレーム遅延部のピッチベクトルから各対応するサブベクトルをシーケンシャルに生成し、周期化ピッチベクトルを組み立てるPSI化ベクトル組立部とを備えるものである。
【0011】
【作用】本発明(1)のピッチ同期化処理方式において、PSI化情報生成部41は、ピッチ周期の整数部lagi及び小数部lagfの各情報に基づき予め規定されたテーブル{例えば図6(A),(B)の各テーブル}を参照して、結果として、雑音符号帳3のコードベクトルから所定長の周期(PSI)化コードベクトルを生成するためのサブベクトルの個数elm 、各サブベクトル毎の要素の位相及びサブベクトル毎のベクトル長 num[i]の各情報を生成する。そして、PSI化ベクトル組立部45は、PSI化情報生成部41の生成出力に基づき雑音符号帳3から各対応するサブベクトルdata[j]をシーケンシャルに生成し、周期(PSI)化コードベクトルpsiwrd[k]を組み立てる。
【0012】本発明(1)によれば、PSI化情報生成部41は、予め規定されたテーブルを参照して、雑音符号帳3をアクセスするためのサブベクトルの個数elm と、サブベクトル毎の要素の位相及びサブベクトル毎のベクトル長num [i]の系列を生成するので、実質的に小数部を含むようなピッチ周期の周期化コードベクトルを容易に組み立てることが可能となる。また、後段のPSI化ベクトル組立部(特にDSPによるベクトル組立部)45の処理負担が大幅に軽減される。かくして、演算量・メモリ量の削減化が図れ、装置の小型化・低消費電力化が望める。
【0013】また本発明(2)のピッチ同期化処理方式において、フレーム遅延部(又は適応符号帳)1は、現時点より過去に遡る所定数の励振源サンプル信号をピッチベクトルとして保持する。PSI化情報生成部41は、ピッチ周期の整数部lagi及び小数部lagfの各情報に基づき予め規定されたテーブル{例えば図8(A),(B)の各テーブル}を参照して、フレーム遅延部1のピッチベクトルから所定長の周期(PSI)化ピッチベクトルを生成するためのサブベクトルの個数elm 、各サブベクトル毎の要素の位相及びサブベクトル毎のベクトル長 num[i]の各情報を生成する。そして、PSI化ベクトル組立部45は、PSI化情報生成部41の生成出力に基づきフレーム遅延部1のピッチベクトルから各対応するサブベクトルdata[j]をシーケンシャルに生成し、周期(PSI)化ピッチベクトルpsiwrd[k]を組み立てる。
【0014】本発明(2)によれば、PSI化情報生成部41は、予め規定されたテーブルを参照して、結果として、フレーム遅延部1をアクセスするためのサブベクトルの個数elm 、各サブベクトル毎の要素の位相及びブベクトル毎のベクトル長 num[i]の系列を生成するので、実質的に小数部を含むようなピッチ周期の周期化ピッチベクトルを容易に組み立てることが可能となる。また、後段のPSI化ベクトル組立部(特にDSPによるベクトル組立部)45の処理負担が大幅に軽減される。かくして、演算量・メモリ量の削減化が図れ、装置の小型化・低消費電力化が望める。また、雑音符号帳3に対する上記PSI化処理との間には、構成及びその制御アルゴリズムにおいて多くの共通性があるので、例えばCELP型音声符号器への適用例では、PSI化情報生成部41をスイッチ信号swにより切り替えてコードベクトル又はピッチベクトルの処理に共用することが可能となり、音声品質の改善と、装置の小型化・低消費電力化が同時に得られる。
【0015】好ましくは本発明(3)においては、上記本発明(1)又は(2)において、生成すべきサブベクトルの個数elm を計数するカウンタと、ピッチ周期の小数部lagfの情報とカウンタ計数値i とで参照されるアドレスにその回に生成可能なサブベクトルのベクトル長の上限値lim の情報を記憶している上限値テーブルscb-tbl/acb-tbl とを備え、PSI化情報生成部41は、ピッチ周期の整数部lagiの情報と上限値テーブルからの各回の読出上限値 lim[i]とを比較すると共に、ピッチ周期の整数部lagiの情報が上限値テーブルからのその回の読出上限値lim を上回ったことにより、その時点のカウンタ計数値i に基づきサブベクトルの個数elm を生成するものである。本発明(3)によれば、上記の様な上限値テーブルscb-tbl/acb-tbl を備える構成により、ピッチ周期が整数/小数によらず、所要のサブベクトルの個数elmを容易に生成できる。
【0016】また好ましくは本発明(4)においては、上記本発明(3)において、ピッチ周期の小数部lagfの情報とカウンタ計数値i とで参照されるアドレスにピッチ周期の整数部の情報の補正値delta を記憶している補正テーブルscb-delta/acb-delta を備え、PSI化情報生成部41は、ピッチ周期の整数部lagiの情報を補正テーブルからのその回の読出補正値delta で補正した情報をサブベクトルのベクトル長 num[i]の情報とする。本発明(4)によれば、上記の様な補正テーブルscb-delta/acb-delta を備える構成により、ピッチ周期が整数/小数によらず、毎回の所要のサブベクトル長num[i]を容易に生成できる。
【0017】また好ましくは本発明(5)においては、上記本発明(1)において、PSI化ベクトル組立部45は、PSI化情報生成部41が生成したサブベクトルの位相情報に従って雑音符号帳3から対応する位相のサブベクトルの要素を生成する。従って、メモリの節約となる。
【0018】また好ましくは本発明(6)においては、上記本発明(1)において、雑音符号帳3のコードベクトルに対して各所定分位相のずれたコードベクトルを記憶しているscb用テーブル(拡張テーブル)4を備え、PSI化情報生成部41は、サブベクトル毎の要素の位相情報を生成する代わりに、雑音符号帳3及びscb用テーブルから前記位相情報に対応するコードベクトルを読み出すためのアドレス情報adrs[i] を生成し、かつPSI化ベクトル組立部45は、前記アドレス情報adrs[i] に従って対応するコードベクトルを読み出す。
【0019】本発明(6)によれば、雑音符号帳3のコードベクトルに対して各所定分(例えば1/nサンプル分)位相のずれた内容のコードベクトルを記憶しているscb用テーブル(拡張テーブル)4を備えるので、SI化情報生成部は、サブベクトル毎の要素の位相の情報を生成する代わりに、雑音符号帳及びscb用テーブルから前記位相の情報に対応するコードベクトルを読み出すためのアドレス情報を容易に生成でき、かつPSI化ベクトル組立部は、前記アドレス情報に従って対応する位相のコードベクトルを容易に読み出せる。従って、ピッチ周期Lが小数値を持つ時の複雑なPSI化演算が大幅に削減される。
【0020】また好ましくは本発明(7)においては、上記本発明(2)において、PSI化ベクトル組立部45は、PSI化情報生成部41が生成したサブベクトル毎の要素の位相情報に従ってフレーム遅延部1のピッチベクトルから対応する位相のサブベクトルの要素を生成する。従って、メモリの節約となる。
【0021】また好ましくは本発明(8)においては、上記本発明(2)において、フレーム遅延部1のピッチベクトルに対して各所定分位相のずれたピッチベクトルを記憶するacb用テーブル(拡張テーブル)5を備え、PSI化情報生成部41は、サブベクトル毎の要素の位相情報を生成する代わりに、フレーム遅延部1及びacb用テーブル5から前記位相情報に対応するピッチベクトルを読み出すためのアドレス情報adrs[i] を生成し、かつPSI化ベクトル組立部45は、前記アドレス情報adrs[i] に従って対応するピッチベクトルを読み出す。
【0022】本発明(8)によれば、フレーム遅延部1のピッチベクトルに対して各所定分(例えば1/nサンプル分)位相のずれた内容のコードベクトルを記憶しているacb用テーブル(拡張テーブル)5を備えるので、PSI化情報生成部41は、サブベクトル毎の要素の位相の情報を生成する代わりに、フレーム遅延部1及びacb用テーブル5から前記位相の情報に対応するピッチベクトルを読み出すためのアドレス情報adrs[i] を容易に生成でき、かつPSI化ベクトル組立部45は、前記アドレス情報adrs[i] に従って対応するピッチベクトルを容易に読み出せる。従って、ピッチ周期Lが小数値を持つ時の複雑なPSI化演算が大幅に削減される。
【0023】
【実施例】以下、添付図面に従って本発明による実施例を詳細に説明する。なお、全図を通して同一符号は同一又は相当部分を示すものとする。図2は実施例の音声符号装置の機能ブロック図で、図において1はフーム遅延部(FDL)、21 はRAMから成る適応符号帳、22 はROMから成る固定符号帳、31 ,32 はROMから成る雑音符号帳、41 ,42 ,51 ,52 はPSI化処理部(PSI)、6,9は加算器、7,8は乗算器、10は線形予測分析部、11は線形予測合成フィルタ、12は減算器、13は聴覚重み付波形歪み評価部、14は符号化制御部、15はセレクタである。
【0024】本実施例の音声符号装置は、図10と同様のCELP方式をベースにしたものであり、フーム遅延部1及び符号帳2,3以外の各種機能ブロックは不図示のDSPのファームウエアにより実現される。例えば図には4つのPSI化処理部41 ,42 ,51 ,52 を示したが、これらはDSPのファームウエアにより必要な時に実現される。
【0025】また、スイッチ信号swはPSI化処理部の処理の一部を変更するためのものであり、sw=1はピッチベクトルPのPSI化処理、sw=0はコードベクトルCのPSI化処理に夫々対応する。本実施例のPSI化処理の大部分はピッチベクトルP及びコードベクトルCの処理に共通であり、よって効率良いPSI化処理が少ないメモリで実現される。
【0026】始めに、コードベクトルCのPSI化処理を説明する。この処理は、DSPが図5の雑音符号帳3及びscb用(拡張)テーブル4と、図6の上限値テーブルscb-tbl 及び補正テーブルscb-delta を参照することで効率よく行われる。図5に雑音符号帳3及びscb用テーブル4の構成を示す。なお、これらをまとめて雑音符号帳3と呼んでも良い。
【0027】雑音符号帳3は基準となる位相のコードベクトルC0 を記憶しており、またscb用テーブル4はコードベクトルC0 に対して1サンプル周期より短い時間分位相がオフセットした内容のコードベクトルC1/4 ,C-1/4,C-1/2を記憶している。即ち、アドレス46〜125の80個のコードベクトルC0 は図10の雑音符号帳30の内容と同一である。これに対してアドレス0〜45の46個のコードベクトルC1/4 は位相が1/4サンプル周期だけ遅れている。またアドレス126〜170の45個のコードベクトルC-1/4は位相が1/4サンプル周期だけ進んでいる。更に、アドレス171〜235の65個のコードベクトルC-1/2は位相が1/2サンプル周期だけ進んでいる。scb用テーブル4の各コードベクトルC1/4 ,C-1/4,C-1/2は基準となるコードベクトルC0 を夫々1/4,−1/4,−1/2サンプル周期だけ移相させた場合の補間演算により予め形成されている。雑音符号帳3及びscb用テーブル4の行アドレスはインデックス番号nwrd=0〜31により共通に参照され、また列アドレスの読出開始位置はベースアドレスレジスタbase-adrs =0,46,126,171で参照される。
【0028】上記に加え、PSI化処理の複雑な制御を簡単に実現するため、ピッチ周期値lagfと繰り返し番号iとに各回の読出上限値や読出要素数の補正値を対応させる微調整テーブルを採用した。図6(A)に上限値テーブルscb-tbl の構成を示す。上限値テーブルscb-tbl は、雑音符号帳3又はscb用テーブル4から1回に連続して読み出せるコードベクトル要素数の上限値をマトリックス状に記憶したもので、その行アドレスはレジスタlagf-pointで参照され、列アドレスは読出回数レジスタiで参照される。
【0029】レジスタlagf-pointには、後述の処理によりlagf×6が入力される。このlagfはピッチ周期Lの小数部を表すコードであり、lagf=0=「1/4」,lagf=1=「0」(即ち、整数に相当),lagf=2=「−1/4」,lagf=3=「−1/2」に夫々対応する。コードlagfに応じてレジスタlagf-point=lagf×6=0,6,12,18となる。
【0030】一例として入力の最大ピッチ周期LMAX =96とする。これは整数(lagf=1)であり、lagf-point=6に対応する。1回目(i=0)の読出上限値=80(PSI化ベクトル長に相当)であるから、この場合は1回目で80個のベクトル要素を読み出すと処理終了する。この場合のPSI化ベクトル長=80×1=80となる。
【0031】また入力のピッチ周期L=40とすると、これも整数であり、lagf-point=6に対応する。上記同様にして1回目(i=0)の上限値=80であるから、この場合は1回目でL=40<80により40個のベクトル要素を読み出せる。しかし、2回目(i=1)の上限値=40であるから、2回目の読出ではL=40≦40により残りの40個のベクトル要素を読み出すと処理終了する。この場合のPSI化ベクトル長=40×2=80となる。
【0032】更に、入力の最小ピッチ周期LMIN =16とすると、これも整数であり、lagf-point=6に対応する。この場合は、1回目(i=0)ではL=16<80により16個を読み出せる。2回目(i=1)ではL=16<40により更に16個を読み出せる。3回目(i=2)ではL=16<27により更に16個を読み出せる。4回目(i=3)ではL=16<20により更に16個を読み出せる。この時点で合計16×4=64個を読み出している。しかし、5回目(i=4)の上限値=16であるから、L=16≦16により残りの16個のベクトル要素を読み出すと処理終了する。この場合のPSI化ベクトル長=16×5=80となる。
【0033】入力のピッチ周期Lが小数部lagf=0,2,3を有する場合は基本のサブコードベクトルC0 と位相のずれたサブコードベクトルC1/4 ,C-1/4,C-1/2とをつなげることで周期化を実現する。従って、テーブルscb-tbl の各上限値はlagf=1の場合と異なる。上限値の各内容は予めlagf=0,2,3の場合について夫々最適に計算され、図示の如くテーブルに記録されている。
【0034】図6(B)に補正テーブルscb-delta の構成を示す。補正テーブルscb-delta は、雑音符号帳3又はscb用テーブル4から1回に連続して読み出すコードベクトル要素数の補正値をマトリックス状に記憶したもので、上記と同様に、その行アドレスはレジスタlagf-pointで参照され、列アドレスは読出回数レジスタiで参照される。
【0035】lagf=1(整数)の場合はピッチ周期Lの整数部lagiを補正する必要はない。従って、全読出回数iについて補正値=0である。即ち、整数部lagiと同じ個数のコードベクトルを読み出す。lagf=0,2,3の場合は、読出回数iに応じて予め補正値が図示の如く求められており、補正値=1の時はlagi+1の個数を読み出し、また補正値=−1の時はlagi−1の個数を読み出す。
【0036】図2に戻り、本実施例のPSI化処理部は、DSPの効率良い処理を考慮したことにより、図3のPSI化情報生成処理と、図4のPSI化ベクトル組立処理とに分けられている。図3に実施例のPSI化情報生成処理のフローチャートを示す。PSI化情報生成処理では、ピッチ周期Lの整数部lagi及び小数部lagfとインデックス番号nwrdとに基づき、切出ベクトルの個数elm と、実アドレスadrs[i](i=0,1,2,…)及び読出要素数num [i](i=0,1,2,…)の系列を生成する。ここでは、コードベクトルCのPSI化処理を説明する。
【0037】ステップS1ではスイッチsw=1か否かを判別する。sw=0の場合はコードベクトルCのPSI化処理を意味し、ステップS2の制御用テーブルの設定処理に進む。ステップS2では、レジスタtbl-point に上限値テーブルのベースアドレスscb-tbl をセットし、レジスタdelta-point に補正テーブルのベースアドレスscb-delta をセットし、そして、レジスタfracに「1」(lagf=1:整数に相当)をセットする。
【0038】ステップS3では、個数カウンタelm を「0」に初期化し、読出残数レジスタtmp にPSI化コードベクトル長の「80」をセットし、そして、レジスタlagf-pointにlagf×6をセットする。ステップS4では、読出回数カウンタiを「0」に初期化する。ステップS5では予め個数カウンタelm に+1を行う。
【0039】ステップS6ではスイッチsw=1か否かを判別する。sw=0の場合はコードベクトルCのPSI化処理を意味し、ステップS7のベースアドレス生成処理に進む。ステップS7では、fracの内容0〜3に従い、図5のレジスタbase-adrs に「0」,「46」,「126」又は「171」のベースアドレスをセットする。最初はステップS2の処理によりfrac=1であるので、base-adrs =46である。これは図5のコードベクトルC0 の先頭番地(相対アドレス)を指している。
【0040】ステップS8では切出ベクトルの実アドレスadrs[i]を、adrs[i]=base-adrs [frac]+STEP×nwrdにより求める。ここで、STEP=236(図5の符号帳の列サイズ)であり、nwrdはある時点のインデックス番号である。ステップS9では、ピッチ周期Lの整数部lagiが上限値テーブルscb-tbl の読出上限値以上か否かを判別する。ここで、*( )は上限値テーブルscb-tbl のアドレス(tbl-point +lagf-point+i)が指す内容を意味しており、この内容は読出回数カウンタiに従って変化する。
【0041】整数部lagiが読出上限値を越えない場合は、ステップS10に進み、切出要素数 num[i]を、num[i]=lagi+*(delta-point +lagf-point+i)
により求める。ステップS11ではレジスタfracの内容を、frac=(frac+lagf−1)&0x3により更新する。ここで、&0x3の項は()内の演算結果の下位2ビット以外をマスクすることを意味する。
【0042】ステップS12では読出残数レジスタtmp の内容を、tmp =tmp − num[i]
により更新する。ステップS13では読出カウンタiに+1し、ステップS5に戻る。上記ステップS11のfracは、上記ステップS7で示したように、図5の符号帳のどの位相のコードベクトルを切り出すかを決める制御情報であり、読出回数毎に変化する。表1にfracの遷移を示す。
【0043】
【表1】


【0044】また、表2にfracに対応するbase-adrs の遷移を示す。
【0045】
【表2】


【0046】lagf=1(整数)の時は、毎回コードベクトルC0 からlagiに相当するベクトル要素数を繰り返し切り出せば良いので、fracは常に「1」である。従って、base-adrs は常に「46」である。これに対して、lagf=0(1/4)の場合は、fracは「1」,「0」,「3」,「2」,「1」と変化する。これに応じてbase-adrs は「46」,「0」,「171」,「126」,「46」と変化する。lagf=2(−1/4),lagf=3(−1/2)についても同様である。
【0047】上記ステップS5〜S13の処理を必要回数だけ繰り返し、やがて、ステップS9で整数部lagiが読出上限値以上と判別されると、ステップS14に進み、その時点の num[i]に読出残数tmp をセットし、処理を抜ける。上記の処理を、例えばピッチ周期L=16.25の場合について具体的に説明する。L=16.25はlagi=16,lagf=0(1/4)に相当する。
【0048】図6(A)の上限値テーブルscb-tbl においては、lagf-point=0の行が選択される。また、lagi=16により、読出回数カウンタiは4まで、個数カウンタelm は5まで更新される。図6(B)の補正テーブルscb-delta においては、上記同様にしてlagf-point=0の行が選択され、読出回数i=0〜4に対応する補正数の系列は「0,1,0,0,0」である。従って、各回の読出要素数num [i]の系列は「16,17,16,16,15」となる。
【0049】更に表2においては、lagf=0の行が選択され、実アドレスadrs[i]の系列は base-adrs「46,0,171,126,46」の系列に夫々(STEP×nwrd)を加えたものになる。以上により、lagi=16,lagf=0(1/4)及びnwrdの入力から、サブベクトルの個数elm =5と、実アドレスadrs[i]の系列「46+STEP×nwrd,0+STEP×nwrd,171+STEP×nwrd,126+STEP×nwrd,46+STEP×nwrd」と、読出要素数num [i]の系列「16,17,16,16,15」とが効率よく得られる。
【0050】図4は実施例のPSI化ベクトル組立処理のフローチャートである。PSI化ベクトル組立処理では、図5の符号帳からadrs[i],num [i]の各サブベクトルをシーケンシャルにelm 回読み出して不図示のメモリのアドレスpsiwrd[k]に格納する。ステップS31では読出回数カウンタi及び書込要素数カウンタkを共に「0」に初期化する。ステップS32では読出ベースアドレスレジスタpsi-partにadrs[i]をセットする。ステップS33では読出要素数カウンタjを「0」に初期化する。ステップS34〜S36では図5の符号帳の実アドレスadrs[i]から num[i]個のベクトル要素を読み出し、これをメモリのpsiwrd[k]に格納する。ステップS37では読出回数カウンタiに+1し、ステップS38ではi=elm になるまで上記の処理を繰り返す。
【0051】以上を上記の数値例(L=16.25)の場合で具体的に説明すると、最初はコードベクトルC0 から16個、次はコードベクトルC1/4 から17個、次はコードベクトルC-1/2から16個、次はコードベクトルC-1/4=16個、次はコードベクトルC0 から15個の各ベクトル要素psi-part[j]を切り出して、これらをメモリのpsiwrd[k]に格納する。従って、得られたPSI化コードベクトルpsiwrd[k]は実質的にL=16.25のピッチ周期に同期している。
【0052】次に、ピッチベクトルPのPSI化処理を説明する。適応符号帳2のピッチベクトルPについても上記と同様のPSI化処理(acb処理)を行うことで音声品質の改善が図れる。図7は実施例の適応符号帳を説明する図である。acb処理は、端的に言うと、現在の処理フレームの開始位置から過去にピッチ周期L(即ち、lagi+lagf)だけ遡ったピッチベクトルPの情報より現在のPSI化ピッチベクトルPを生成する処理である。この処理を行うため、適応符号帳2(又はフレーム遅延部1)のアドレス45〜140には現時点から過去に遡る96サンプル分のピッチベクトルP0 が展開される。時間的には、アドレス45の側が古く、アドレス140の側が新しい。
【0053】図8(A)に上限値テーブルacb-tbl の構成を示す。また図8(B)に補正テーブルacb-delta の構成を示す。これらのテーブの用い方は上記scb処理で説明したものと同様である。図3に戻り、ステップS1ではスイッチsw=1か否かを判別する。sw=1の場合はピッチベクトルPのPSI化処理を意味し、ステップS21のacb用テーブル生成処理を行う。
【0054】即ち、図7のフレーム遅延されたピッチベクトルP0 を基準とし、これより1/4サンプル周期分位相の遅れた45個のピッチベクトルP1/4 を生成してこれらをacb用テーブルのアドレス0〜44に展開記憶する。また1/4サンプル周期分位相の進んだ45個のピッチベクトルP-1/4を生成してこれらをacb用テーブルのアドレス141〜185に展開記憶する。更に、1/2サンプル周期分位相の進んだ65個のピッチベクトルP-1/2を生成してこれらをacb用テーブルのアドレス186〜250に展開記憶する。
【0055】ステップS22ではacb制御用テーブルの設定処理を行う。即ち、レジスタtbl-point に上限値テーブルのベースアドレスacb-tbl をセットし、レジスタdelta-point に補正テーブルのベースアドレスacb-delta をセットし、そして、レジスタfracにピッチ周期Lの小数部lagf(コード)をセットする。以下、ステップS3〜S5は上記コードベクトルに対するのと共通の処理を行い、ステップS6ではスイッチsw=1か否かを判別する。sw=1の場合はピッチベクトルPのPSI化処理を意味し、ステップS23のベースアドレス生成処理に進む。
【0056】即ち、ステップS23では、fracの内容0〜3に従い、図7のレジスタbase-adrs に「44」,「140」,「185」又は「250」のベースアドレスをセットする。これらは各ピッチベクトルP1/4 ,P0 ,P-1/4,P-1/2のエリアの末尾番地に対応している。最初は上記ステップS22の処理によりfrac=lagfであるので、base-adrs もlagfの内容に従う。
【0057】ステップS24ではacb用テーブルの切出ベクトルの先頭データが格納されている実アドレスadrs[i]を、adrs[i]= base-adrs[frac]−lagi+1− acb-delta[i]
により求める。即ち、adrs[i]は末尾番地 base-adrs[frac]より(lagi−1)だけ過去に遡った番地から補正値 acb-delta[i]を差し引いた番地である。
【0058】続くステップS9,S10は上記コードベクトルに対するのと共通の処理を行い、ステップS11ではレジスタfracの内容を、frac=(frac+lagf−1)&0x3により更新する。表3にacb処理の場合のfracの遷移を示す。
【0059】
【表3】


【0060】また、表4にfracに対応するbase-adrs の遷移を示す。
【0061】
【表4】


【0062】こうして、ピッチベクトルPについても、ピッチ周期Lの整数部lagi及び小数部lagfの情報に基づき、切出ベクトルの個数elm と、実アドレスadrs[i](i=0,1,2,…)及び読出要素数num [i](i=0,1,2,…)の系列が生成される。従って、図4の共通のPIS化ベクトル組立処理によりPSI化ピッチベクトルを生成できる。
【0063】以上は、図2のPSI化処理部4,5をDSPのファームウエアにより実現する場合を述べた。本実施例によれば、複雑なPSI化情報生成処理が、上記拡張テーブルと制御用テーブルの採用により、簡単なテーブル参照と論理演算処理とで実現されている。従って、以下に示すような専用回路化による実現も容易に可能となる。
【0064】図9は実施例のコードベクトルCに対するPSI化処理部のブロック図で、図において41はPSI化情報生成部、42は elm生成部、43は num[i]生成部、44はadrs[i]生成部、45はPSI化ベクトル組立部である。elm生成部42において、カウンタ421はリセット信号XRSTによりリセットされ、その後のタイミングクロック信号TCLKを計数する。カウンタ421の出力は読出回数の計数値iである。上限値テーブル422はlagfとiで参照するアドレスより読出上限値lim を読み出す。コンパレータ423はlagiとlim とを比較し、lagi<lim の間はカウンタ421の計数を付勢する。こうして、各TCLKのタイミングにiをインクリメントし、やがてlagi≧lim を満足すると、PSI化処理終了信号end をアクティブにする。これによりiのインクリメントも停止し、該iに加算器424で「1」を加えたものがサブベクトルの個数elm である。
【0065】adrs[i]生成部44において、frac更新部441 はリセット信号XRSTのタイミングにfrac=プリセット情報 PRS(この例では PRS=1)をセットされ、その後は各TCLKのタイミングにfracを、frac=(frac+lagf−1)&0x3 により更新する。更に、base-adrs 変換テーブル442はfracの系列をbase-adrs ( 0,46,126又は171)の系列に変換し、これらに加算器443でSTEP×nwrdを加えたものが実アドレスadrs[i]の系列である。
【0066】num[i]生成部43において、補正テーブル431はlagfとiで参照するアドレスよりlagiに対する補正値delta を読み出す。加算器432はlagiにdeltaを加えて num[i]の系列を生成する。一方、レジスタ434は始めに tmp=PSI化フレーム長の所定値 FRL(この例では FRL=80)をセットされ、その後はその出力を減算器433出力の tmp= tmp− num[i]により更新する。セレクタ435は、コンパレータ423の判別出力がlagi<lim の区間は加算器432の出力の num[i]の系列を選択出力し、判別出力がlagi≧lim を満足するとその時点のレジスタ434の出力の読出残数 tmpを選択出力する。セレクタ435の出力が各回で読み出すべきサブベクトルの要素数 num[i]の系列である。
【0067】本実施例のPSI化情報生成部41によれば、lagi,lagf,nwrdを入力とし、外部より簡単なタイミング信号XRST,TCLKを加えるだけで、サブベクトルの個数elm と、実アドレスadrs[i]及び要素数 num[i]の系列が自動的に得られる。各出力信号elm ,adrs[i], num[i]はDSPが図4のファームウエア処理でPSI化ベクトルpsiwrd[k]を組み立てるのに好適な形をしており、しかも、図4のPSI化ベクトル組立処理のオーバヘッドは少ない。従って、ハードウエアによるPSI化情報生成部41と、ファームウエアによるPSI化ベクトル組立部とのペアにより、効率よいPSI化処理部4を実現できる。
【0068】なお、図示しないが、ピッチベクトルPに対するPSI化処理部も図3の処理アルゴリズムに従い容易にハードウエア化できる。更に、コードベクトルCとピッチベクトルPとに対応する各専用部分(即ち、制御用テーブルscb,acb等)を夫々個別に設け、これらをスイッチ信号swで選択するようにすれば、コードベクトルC及びピッチベクトルPに共通なハードウエアによるPSI化処理部を形成できる。
【0069】ところで、上記PSI化情報生成部41に加え、PSI化ベクトル組立部45も図9に示す如く専用回路化すれば、更に効率よいPSI化処理部4/5を実現できる。PSI化ベクトル組立部45において、カウンタ451及びダウンカウンタ452は始めはリセット信号XRSTによりリセットされる。その後、最初のTCLKが発生すると、最初のadrs[i]をカウンタ451にロードし、同時に最初の num[i]をダウンカウンタ452にロードする。これによりダウンカウンタ452のボロー信号BOはL(ノンアクティブ)となり、カウンタ451,452は計数可能となる。しかる後、カウンタ451は外部のリードクロック信号RCLKによりアップカウントして符号帳から最初のサブベクトルpsi-part[j]を読み出す。一方、ダウンカウンタ452は同リードクロック信号RCLKによりカウントダウンし、最初の num[i]分を計数する。この区間は不図示の外部メモリの書込イネーブル信号WCKE/ がL(アクティブ)となり、外部メモリにPSI化サブベクトルpsiward [k]が書き込まれる。やがてボロー信号BOがH(アクティブ)になると、そのサイクルの読/書を停止する。
【0070】次のTCLKが発生すると、2番目のadrs[i], num[i]について上記同様の処理を行い、これを必要な回数繰り返す。やがて、end がアクティブになると、その読/書サイクルを終了後、PSI化処理を終了する。本実施例によれば、PSI化情報の生成と同時に、PSI化ベクトルの組立が進行する。従って、elm を生成する必要はなく、加算器424等のハードウエアを省略できる。しかも、ハードウエア処理によりPSI化ベクトルpsiward [k]が一挙に生成されるので、DSPの処理負担も少なく、処理効率が良い。
【0071】なお、上記本発明に好適なる複数の実施例を述べたが、本発明思想を逸脱しない範囲内で、構成及び制御の様々な変更が行えることは言うまでも無い。
【0072】
【発明の効果】以上述べた如く本発明によれば、符号帳用拡張テーブルと該テーブルを利用した簡単な論理演算アルゴリズムの採用により効率良いPSI化処理を実現できる。また、論理演算アルゴリズムの一部又は全部を専用回路化することで、更に効率的なPSI化処理を実現できる。
【図面の簡単な説明】
【図1】図1は本発明の原理を説明する図である。
【図2】図2は実施例の音声符号装置のブロック図である。
【図3】図3は実施例のPSI化情報生成処理のフローチャートである。
【図4】図4は実施例のPSI化ベクトル組立処理のフローチャートである。
【図5】図5は実施例の雑音符号帳を説明する図である。
【図6】図6は実施例のscb制御用テーブルを説明する図である。
【図7】図7は実施例の適応符号帳を説明する図である。
【図8】図8は実施例のacb制御用テーブルを説明する図である。
【図9】図9は実施例のPSI化処理部のブロック図である。
【図10】図10は従来技術を説明する図である。
【符号の説明】
41 PSI化情報生成部
45 PSI化ベクトル組立部

【特許請求の範囲】
【請求項1】 適応符号帳及び雑音符号帳を励振源として最適な信号系列の組を探索するA−b−S型音声符号化方式における前記符号帳の読出ベクトルを所望のピッチ周期により周期化するピッチ同期化処理方式において、ピッチ周期の整数部及び小数部の各情報に基づき予め規定されたテーブルを参照して、雑音符号帳のコードベクトルから所定長の周期化コードベクトルを生成するためのサブベクトルの個数、サブベクトル毎の要素の位相及びサブベクトル毎のベクトル長の各情報を生成するPSI化情報生成部と、PSI化情報生成部の生成出力に基づき雑音符号帳から各対応するサブベクトルをシーケンシャルに生成し、周期化コードベクトルを組み立てるPSI化ベクトル組立部とを備えることを特徴とするピッチ同期化処理方式。
【請求項2】 適応符号帳及び雑音符号帳を励振源として最適な信号系列の組を探索するA−b−S型音声符号化方式における前記符号帳の読出ベクトルを所望のピッチ周期により周期化するピッチ同期化処理方式において、現時点より過去に遡る所定数の励振源サンプル信号をピッチベクトルとして保持するフレーム遅延部と、ピッチ周期の整数部及び小数部の各情報に基づき予め規定されたテーブルを参照して、フレーム遅延部のピッチベクトルから所定長の周期化ピッチベクトルを生成するためのサブベクトルの個数、サブベクトル毎の要素の位相及びサブベクトル毎のベクトル長の各情報を生成するPSI化情報生成部と、PSI化情報生成部の生成出力に基づきフレーム遅延部のピッチベクトルから各対応するサブベクトルをシーケンシャルに生成し、周期化ピッチベクトルを組み立てるPSI化ベクトル組立部とを備えることを特徴とするピッチ同期化処理方式。
【請求項3】 生成すべきサブベクトルの個数を計数するカウンタと、ピッチ周期の小数部の情報と前記カウンタ計数値とで参照されるアドレスにその回に生成可能なサブベクトルのベクトル長の上限値の情報を記憶している上限値テーブルとを備え、PSI化情報生成部は、ピッチ周期の整数部の情報と上限値テーブルからの各回の読出上限値とを比較すると共に、ピッチ周期の整数部の情報が上限値テーブルからのその回の読出上限値を上回ったことにより、その時点のカウンタ計数値に基づきサブベクトルの個数の情報を生成することを特徴とする請求項1又は2に記載のピッチ同期化処理方式。
【請求項4】 ピッチ周期の小数部の情報とカウンタ計数値とで参照されるアドレスにピッチ周期の整数部の情報の補正値を記憶している補正テーブルを備え、PSI化情報生成部は、ピッチ周期の整数部の情報を補正テーブルからのその回の読出補正値で補正した情報をサブベクトルのベクトル長の情報とすることを特徴とする請求項3に記載のピッチ同期化処理方式。
【請求項5】 PSI化ベクトル組立部は、PSI化情報生成部が生成したサブベクトルの要素の位相情報に従って雑音符号帳から対応する位相のサブベクトルの要を生成することを特徴とする請求項1に記載のピッチ同期化処理方式。
【請求項6】 雑音符号帳のコードベクトルに対して各所定分位相のずれたコードベクトルを記憶しているscb用テーブルを備え、PSI化情報生成部は、サブベクトル毎の要素の位相情報を生成する代わりに、雑音符号帳及びscb用テーブルから前記位相情報に対応するコードベクトルを読み出すためのアドレス情報を生成し、かつPSI化ベクトル組立部は、前記アドレス情報に従って対応するコードベクトルを読み出すことを特徴とする請求項1に記載のピッチ同期化処理方式。
【請求項7】 PSI化ベクトル組立部は、PSI化情報生成部が生成したサブベクトル毎の要素の位相情報に従ってフレーム遅延部のピッチベクトルから対応する位相のサブベクトルの要素を生成することを特徴とする請求項2に記載のピッチ同期化処理方式。
【請求項8】 フレーム遅延部のピッチベクトルに対して各所定分位相のずれたピッチベクトルを記憶するacb用テーブルを備え、PSI化情報生成部は、サブベクトル毎の要素の位相情報を生成する代わりに、フレーム遅延部及びacb用テーブルから前記位相情報に対応するピッチベクトルを読み出すためのアドレス情報を生成し、かつPSI化ベクトル組立部は、前記アドレス情報に従って対応するピッチベクトルを読み出すことを特徴とする請求項2に記載のピッチ同期化処理方式。

【図1】
image rotate


【図6】
image rotate


【図4】
image rotate


【図8】
image rotate


【図2】
image rotate


【図3】
image rotate


【図5】
image rotate


【図7】
image rotate


【図9】
image rotate


【図10】
image rotate


【特許番号】特許第3356570号(P3356570)
【登録日】平成14年10月4日(2002.10.4)
【発行日】平成14年12月16日(2002.12.16)
【国際特許分類】
【出願番号】特願平7−5759
【出願日】平成7年1月18日(1995.1.18)
【公開番号】特開平8−194496
【公開日】平成8年7月30日(1996.7.30)
【審査請求日】平成10年10月15日(1998.10.15)
【出願人】(000005223)富士通株式会社 (25,993)
【参考文献】
【文献】特開 平4−344699(JP,A)
【文献】特開 平5−19794(JP,A)
【文献】特開 平5−19795(JP,A)
【文献】特開 平5−19796(JP,A)
【文献】特開 平7−92999(JP,A)