(57)【特許請求の範囲】
【請求項１】
少なくとも１つのインパルス応答および少なくとも１つの残余について再帰的コンボリューション計算を実行し、前記再帰的コンボリューションの結果を提供するデジタル・シグナル・プロセッサ・コア（ＤＳＰ）手段と、
前記再帰的コンボリューションの前記結果を受信しそして前記再帰的コンボリューションの前記結果に応じてピッチ又はコードブック値に関する最小化サーチを実行するための、前記デジタル・シグナル・プロセッサ・コア手段とは別個の最小化プロセッサ手段とを具備し、
前記最小化プロセッサ手段は、
最小化サーチに関する中止基準を決定する手段と、そして
平均二乗エラーが最小化された場合に最小化サーチを中止する手段と、
を含むことを特徴とするボコーダ用装置。
【請求項２】
前記デジタル・シグナル・プロセッサ・コア手段は前記再帰的コンボリューションを合成スピーチサンプルの第１シーケンス及び前記合成スピーチサンプルの第２シーケンスに基づいて行い、前記デジタル・シグナル・プロセッサ・コア手段は、
前記再帰的計算を実行する計算手段と、
前記第１シーケンスを格納及び提供する第１ランダムアクセスメモリ手段と、
前記第２シーケンスを格納及び提供する第２ランダムアクセスメモリ手段と、
追加のシーケンシャルデータを格納及び提供する第３ランダムアクセスメモリ手段と、
を具備することを特徴とする請求項１記載の装置。
【請求項３】
データサンプルのシーケンスに基づいてブロック正規化を実行する手段を更に具備することを特徴とする請求項１記載の装置。
【請求項４】
量子化された音響データのシーケンスを受信するための入力部を有し、対応する合成スピーチサンプルのシーケンスを生成する、デジタル・シグナル・プロセッサ・コア手段と、
前記デジタル・シグナル・プロセッサ・コア手段に接続される入力部を有し、該合成スピーチサンプルのシーケンスを受信するための最小化プロセッサと、
を具備し、
前記最小化プロセッサは、合成スピーチサンプルと前記量子化された音響データとの間の最小差を決定し、前記デジタル・シグナル・プロセッサ・コア手段がその生成機能を実行するとともに前記最小化プロセッサがその決定機能を実行し、前記最小差はシーケンス値について判断され、そしてこのシーケンス値にわたって平均二乗エラーが計算され、前記最小化プロセッサ手段は、
最小化サーチに関する中止基準を決定する手段と、そして
平均二乗エラーが最小化された場合に最小化サーチを中止する手段と、
を含むことを特徴とするボコーダ用装置。
【請求項５】
第１音響データを入力する入力部、及び出力部を有する量子化された音響インターフェースを更に具備し、前記デジタル・シグナル・プロセッサ・コア手段の入力部は前記量子化された音響インターフェースの出力部に接続されることを特徴とする請求項４記載の装置。
【請求項６】
マイクロプロセッサデータを入力する入力部、及び出力部を有するマイクロプロセッサインターフェースを更に具備し、前記量子化された音響インターフェースは第２入力部を有し、この量子化された音響インターフェースの第２入力部は前記マイクロプロセッサインターフェース出力部に接続されることを特徴とする請求項５記載の装置。
【請求項７】
クロック信号を入力する入力部、及び出力部を有するクロック発生器を更に具備し、前記デジタル・シグナル・プロセッサ・コアは前記クロック発生器出力部に接続されることを特徴とする請求項４記載の装置。
【請求項８】
シーケンスにわたって最小平均二乗エラー（ＭＳＥ）を決定するために、デジタル・シグナル・プロセッサ（ＤＳＰ）コアからのスピーチ・サンプルの第１のシーケンスと、該デジタル・シグナル・プロセッサ・コアからの合成スピーチ・サンプルの第２のシーケンスを受信する最小化プロセッサであって、
該第２のシーケンスの自己相関を決定するためのロジック手段と、
該第１のシーケンスと該第２のシーケンスとの相互相関を決定するためのロジック手段と、
再帰的コンボリューションを実行する該デジタル・シグナル・プロセッサ・コアに平行して、該自己相関および相互相関に応答し、二乗平均エラーを計算して最小化サーチを行い、最小平均二乗エラーを決定するためのロジック手段とを具備し、
前記最小化プロセッサ手段は、
最小化サーチに関する中止基準を決定する手段と、そして
中止基準が満足された場合に最小化サーチを中止する手段とを含む、
ことを特徴とする、最小化プロセッサ。
【請求項９】
前記デジタル・シグナル・プロセッサ・コアと組み合わされる、請求項８に記載の最小化プロセッサであって、該デジタル・シグナル・プロセッサ・コアは少なくとも１つのインパルス応答および少なくとも１つの残余を含む複数の値の再帰的コンボリューションを行い、該デジタル・シグナル・プロセッサ・コアは複数のランダム・アクセス・メモリ（ＲＡＭｓ）にアクセスし、該ランダム・アクセス・メモリのそれぞれは、該デジタル・シグナル・プロセッサ・コアによって処理されるように、該複数のランダム・アクセス・メモリから、それぞれ平行して、該複数の値をフェッチできるように、それぞれの値を格納する、ことを特徴とする、最小化プロセッサ。
【請求項１０】
請求項９に記載の最小化プロセッサであって、該複数のランダム・アクセス・メモリは、重み付けされた合成スピーチサンプルを表す第１の組の値を格納するための第１のランダム・アクセス・メモリと、フォルマント・フィルタのインバルス応答を表す第２の組の値を格納するための第２のランダム・アクセス・メモリと、フォルマント残余のシーケンスを表す第３の組の値を格納するための第３のランダム・アクセス・メモリと、を含むことを特徴とする最小化プロセッサ。
【請求項１１】
請求項１０に記載の最小化プロセッサであって、デジタル化されたスピーチのサンプルを、除算すること無く正規化するためのシフトレジスタを含むブロック正規化回路をさらに具備していることを特徴とする、最小化プロセッサ。
【請求項１２】
移動電話機と組み合わされる、請求項８に記載の最小化プロセッサ。
【請求項１３】
さらに移動電話システムと組み合わされる、請求項１２に記載の最小化プロセッサ。
【請求項１４】
中止基準はさらなる最小化が不可能であることを示す、請求項８に記載の最小化プロセッサ。
【請求項１５】
中止基準は現在のＭＳＥが最小値であることを示す、請求項１４に記載の最小化プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は音声処理に関する。特に本発明は特定用途集積回路（ASIC : application specific integrated circuit）内に組み込まれるボコーダ（vocoder）用の改良された新しい方法及び装置に関する。
【０００２】
【従来の技術】
デジタル技術による音声の送信は一般的な技術で、特に長距離のデジタル無線電話は一般に普及している。音声が単にサンプリング及びデジタル化により送信される場合、従来のアナログ電話の品質を得るには約６４キロビット毎秒（kbps）のデータ速度が必要となる。しかし、音声分析、並びに適当なコード化、送信及び受信器での合成により、著しくデータ速度を減少することができる。送信機で適当な音声分析及びコード化を行い、受信器で合成を行う装置はボコーダとして知られている。
【０００３】
デジタル細胞状電話標準（digital cellular telephone standards）及びシステムの最近の発展によりボコーダに関する要求が益々大きなものとなった。利用できる送信帯域をより効率的に使用し、受信器で元の音声をより忠実に再現する進歩したボコーディングアルゴリズムに対する要望により、それら更に複雑なボコーディングアルゴリズムを実行するのに必要な大きなコンピュータ処理能力を有するプロセッサに関する要求が増大した。
【０００４】
ボコーダは音声における長い或いは短い期間の冗長性の利用し、コンピュータの高度な数値処理を必要とする。これら動作には長い連続的コンボリューション（convolutions）、マトリクス反転、長い連続的相関（correlations）等が含まれる。音声の送信における許容できないないほどのコーディング（coding）及びデコーディング（decoding）遅延を起こさずにリアルタイムでこれらの動作を行うには、強力なコンピュータ資源が必要になる。
【０００５】
デジタル信号プロセッサ（ＤＳＰｓ）の出現は、ボコーダアルゴリズムをリアルタイムで導入することを可能にする上で重要な要因であった。
【０００６】
ＤＳＰｓはボコーダアルゴリズムに一般的な演算動作を実行する上で非常に効率的である。ＤＳＰｓの利点はそれら計算能力を約４千万インストラクション毎秒（４０ＭＩＰＳ）以上に増大した。
【０００７】
例示的用途に用いられるボコーディングアルゴリズムは、可変速度のコード励起線形予測（CELP : code excited linear prediction）アルゴリズムであり、これは同時継続中の出願（シリアル番号０８／００４，４８４、１９９３年１月１４日出願、発明の名称”可変速度ボコーダ”）に詳細されており、この出願は本発明の譲渡人に譲渡されている。前記出願の内容は本明細書に参考として含まれている。
【０００８】
表Ｉは代表的ＤＳＰを用いたときの例示的ボコーディングアルゴリズムのエンコーディング部の単一の２０ミリ秒音声フレームの実行時間の概要を示す。例示的ボコーディングアルゴリズムのエンコーディング部はデコーディング部より著しく処理量を必要とするので、エンコーデイング処理のみを表Ｉは示している。表Ｉで参照されるＤＳＰは４０ＭＨｚのクロックで演算処理及び他の処理をその動作に応じて各々１又はそれ以上のクロックサイクルで行う。第１コラムは例示的ボコーディングアルゴリズムの主動作を示す。第２コラムはその例示的ＤＳＰを使用してボコーダアルゴリズムの特定動作を各々実行するのに必要なクロックサイクル数を示す。第３のコラムはその特定動作に必要となる総合処理のパーセンテージを示す。例示的ボコーディングアルゴリズムでは、例示的ボコーディングアルゴリズムをリアルタイムに処理するには、全ての動作が２０ミリ秒以内に行われることが必要である。これはそのアルゴリズムを導入するために選ばれたＤＳＰが２０ミリ秒フレーム内で所望処理を完了する速度又はそれ以上のクロック速度で動作できることが必要となる。これにより表Ｉに示す代表的ＤＳＰでは、クロックの数は８００，０００までに制限される。
【表１】
0004194851.tif 000002
【０００９】
【発明が解決しようとする課題】
表Ｉから分かるように、ピッチサーチ（pitch search）及びコードブックサーチ（codebook search）動作は、ボコーダアルゴリズムのエンコーディング部の中で、処理時間の７５％以上を消費する。計算負荷の大部分はこれら２つのサーチアルゴリズム内にあるので、ボコーディングを実行するよう設計された効率的ＡＳＩＣの主要目的は、これら２つの動作を実行するのに必要なクロックサイクルの数を減少することである。
【００１０】
本発明の方法及び装置は、これらサーチ動作を実行するのに必要な命令サイクルの数を大幅に減少する。本発明は、ボコーディングアルゴリズムに特に重要なより効率的動作を行うよう最適化された方法及び装置を提供する。本発明の方法及び装置の用途は、例示的ボコーディング動作の実行、又は音声のエンコーディング又はデコーディングに限られるものではない。この発明の方法及び装置は、エコーキャンセラ及びチャンネルイコライザのようなデジタル信号処理アルゴリズムを用いるあらゆるシステムに適用できるものである。
【００１１】
【課題を解決するための手段】
本発明はボコーディングアルゴリズムを実行するための改良された新しい方法及び装置である。
【００１２】
本明細書で詳細に説明される本発明の一実施例は、前述の同時継続中特許出願に詳細された可変速度ＣＥＬＰアルゴリズムを導入したＡＳＩＣである。本発明の特徴はあらゆる線形予測コーディング（ＬＰＣ）アルゴリズムに同様に適用できる。本発明はボコーダアルゴリズムを少ない消費電力及び少ないクロックサイクル数で実行するために最適化された構成を提供する。最終的目標は消費電力の減少である。このアルゴリズムを実行するのに必要なクロック数の減少は又、低消費電力化に関して直接及び間接的に作用する減少したクロック速度として関係していた。直接的な効果は、コンプリメンタリ金属・酸化物半導体（ＣＭＯＳ）装置の電力消費とクロック速度との関係によるものである。間接的な効果はＣＭＯＳ装置での電力消費と電圧との二乗則の関係、及び少ないクロック速度で電圧を下げる能力によるものである。ボコーダＡＳＩＣの効率はクロックサイクル毎に実行される処理量である。効率の向上により、そのアルゴリズムを実行するのに必要な全クロックサイクル数が減少される。
【００１３】
ボコーディングアルゴリズムを実行する上で効率を上昇するための第１の技術は、専用ＤＳＰを中心とした構成である。ＤＳＰを中心とした一実施例は、３つのランダムアクセスメモリ（ＲＡＭ）要素を提供することにより、メモリ処理能力を増加する。３つのＲＡＭ要素の各々は、専用メモリアドレス発生ユニットを持っている。このメモリの３分割方式により、オペランドを提供し、結果を提供し、結果を格納する全ての動作を単一のサイクル内で行い、再帰的コンボリューション（recursive convolution）のような動作を効率的に実行できる。オペランドのフェッチ、結果の計算、及び結果の格納は１つの結果に対する完全な再帰的コンボリューションが３サイクルに渡って実行され、しかも新たな結果が各サイクルで得られるように、パイプライン処理が行われる。３分割されたメモリは、ボコーダアルゴリズムでの他の動作に要求されるクロックサイクルも減少する。再帰的コンボリューションの効率的実行はボコーダアルゴリズムにおける最も重要な節約を提供する。
【００１４】
ボコーデイングアルゴリズムの性能における効率を増加する第２の技術は、ＤＳＰコア（core）に最小化プロセッサと呼ばれる分離スレーブプロセッサを提供することである。最小化プロセッサは相関を実行し、二乗平均エラー（ＭＳＥｓ）を計算し、そしてＤＳＰコアにより供給されたデータに関して最小ＭＳＥをサーチする。最小化プロセッサは高度な相関計算及びＤＳＰコアによる最小化タスクを分担する。最小化プロセッサには、最小化プロセッサの動作をモニタし、ある条件下でＭＳＥ最小化タスクの決定的動作を行える制御要素が提供される。この条件とは、継続サーチが数学的制限により現在の最小ＭＳＥ以下のＭＳＥを提供できないような場合である。ＭＳＥ最小化タスクを短縮する方法は最小化プロセッサの節電モードと呼ばれる。
【００１５】
ボコーディングアルゴリズムの実行効率を向上するための一実施例による第３の手段は、プロック正規化（block normalization）を効率的に行う専用ハードウエアを提供することである。ボコーディングアルゴリズムを計算する上で、計算精度をできるだけ高いレベルに維持することが必要になる。専用ハードウエアを提供することにより、ブロック正規化はボコーダアルゴリズムでの他の動作と同時に実行でき、これによりボコーディングアルゴリズムを実行するために要求される命令サイクルの数を減少できる。
【００１６】
本発明の特徴、目的、効果は図面を参照して行われる以下の詳細な説明により明確になる。全ての図面を通して、同一参照符号は同一の要素を示す。
【００１７】
【発明の実施の形態】
図面を参照し、図５ａ〜ｄに示される図１のＤＳＰコア４は、３つに分割されたランダムアクセスメモリ（ＲＡＭ）（ＲＡＭ Ａ１０４、ＲＡＭ Ｂ１２２、及びＲＡＭ Ｃ１８２）、リードオンリーメモリ（ＲＯＭ）（ＲＯＭ Ｅ１１４）、及び効率的演算ロジックユニット（ＡＬＵ）（ＡＬＵ １４３）を含んで設計される。３分割ＲＡＭはＡＬＵを更に効率よく使用する手段を提供し、単一のＲＡＭで達成できる領域以上にＲＡＭ領域を増加する。専用ＲＯＭ、ＲＯＭ Ｅ１１４は１６ビット定数を提供する。ＲＡＭ部分ＲＡＭＡ、ＲＡＭ Ｂ１２２及びＲＡＭ Ｃ１８２及びＲＯＭ、ＲＯＭ Ｅ１１４はＡＬＵにデータを提供する。ＲＡＭ Ｃ１８２は、ＲＡＭ Ａ１０４及びＲＡＭ Ｂ１２２が１６ビットデータを送受信している間に、ＡＬＵ１４３（図５ｂ）に対して３２ビットデータを受信及び提供し、１６ビットオペランドによる計算、及び３２ビットの格納を行うことにより、効率が著しく向上している。
【００１８】
各分割部分は専用アドレス発生ユニットを持っている。ＲＡＭ Ａ１０４はアドレスユニットＡ１０２を有し、ＲＡＭＢはアドレスユニットＢ１２０及びＲＡＭ ＣはアドレスユニットＣ１８６、ＲＯＭ Ｅ１１４はアドレスユニットＥ１１２を持っている。各アドレスユニットはレジスタ、マルチプレクサ及び加算器／減算器要素（図示されず）を具備している。１クロックサイクルで、ＤＳＰコア４は３つのメモリ動作、３つのアドレス更新、演算動作（例えば乗算・加算・正規化）、及び最小化プロセッサ（minimization processor）６へのデータ移動を行う。
【００１９】
命令ＲＯＭ、ＲＯＭ Ｉ１９４はＤＳＰコア４の実行シーケンスを制御する命令を格納する。ＲＯＭ Ｉ１９４内に格納された命令のシーケンスは、ＤＳＰコア４により実行される処理機能を示す。ＲＯＭ Ｉ１９４は専用アドレス発生ユニット、ＩＰカウンタ及びスタック１９４を持っている。
【００２０】
ＲＡＭアドレス発生ユニット即ちレジスタファイル、アドレスユニットＡ１０２、アドレスユニットＢ１２０及びアドレスユニットＣ１８６は、対応するＲＡＭの動作で用いられるアドレス及びデータを提供する。データは同一アドレスユニット内で、レジスタファイル要素から他のレジスタファイル要素、即ち各ＲＡＭに移動できる。一実施例では、アドレスユニットＡ１０２はマルチプレクサ１０６を介して、ＲＡＭ Ａ１０４にデータを提供し、アドレスユニットＢ１２０はマルチプレクサ１２４を介してＲＡＭ Ｂ１２２にデータを提供し、アドレスユニットＣ１８６はマルチプレクサ１８０を介してＲＡＭＣ １８２にデータを提供する。
【００２１】
レジスタファイル要素は同一アドレスユニット内で、即時データＩＭＭ（図５ａ〜ｄに示す）、他のレジスタファイル要素からのデータ、即ちＲＡＭからのデータを受け入れる。以後、全ての場合で、単語”即時データ（immediate data）”の説明は、命令デコーダ１９２によって提供されるデータに関係している。一実施例では、ＲＡＭ Ａ１０４はマルチプレクサ１００を介してデータをアドレスユニットＡ１０２に提供し、ＲＡＭ Ｂ１２２はマルチプレクサ１１８を介してデータをアドレスユニットＢ１２０に提供し、及びＲＡＭ Ｃ１８２はマルチプレクサ１８４を介してデータをアドレスユニットＣ１８６に提供する。各アドレスユニットは自動ポストインクリメント（post-increment）及びポストデクリメント（post-decrement）を内部に設けた加算器／減算器（図示されず）により提供する。一実施例において、アドレスユニットＢ１２０は直接メモリアクセス（ＤＭＡ）用のポインタとして使用される自動モジュロアドレッシング及び２つの専用レジスタファイル要素（図示されず）を提供する。
【００２２】
アドレスユニットＥ１１２は係数検索用に最適化される。これはマルチプレクサ１１０を介して即時データを受け入れるベースレジスタ、及びマルチプレクサ１１０を介して即時データ又はマルチプレクサ１６８及び１１０を介してアキュムレータ（Ｃ０ＥＲＧ１６４又はＣ１ＲＥＧ１６６）からデータを受け入れるオフセットレジスタを具備する。このオフセットレジスタは自動ポストインクリメント及びポストデクリメントを内部に設けられた加算器／減算器（図示されず）により提供する。
【００２３】
ＩＰカウンタ及びスタック１９６はアドレッシングＲＯＭ Ｉ１９４の機能を実行するためのアドレスポインタを含む。アドレスシーケンシング（address sequencing）は命令デコーダ１９２により制御される。アドレスデータはＩＰカウンタ及びスタック１９５内を移動するか、又は即時データとして受信される。
【００２４】
データはＲＡＭ Ａ１０４、ＲＡＭ Ｂ１２２又はＲＡＭ Ｃ１８２からＡＬＵ１４３内のレジスタへ移動できる。又、データはアキュムレータ（Ｃ０ＥＲＧ１６４又はＣ１ＲＥＧ１６６）からＲＡＭ Ａ１０４、ＲＡＭ Ｂ１２２又はＲＡＭＣ１８２へ移動できる。データはＯＲＥＧ１６２からＲＡＭ Ｃ１８２へ移動できる。
【００２５】
ＲＡＭ Ａ１０４はマルチプレクサ１０６を介してアドレスユニットＡ１０２からのデータを受け入れる。ＲＡＭ Ａ１０４は又、マルチプレクサ１６８及び１０６を介してアキュムレータ（Ｃ０ＥＲＧ１６４又はＣ１ＲＥＧ１６６）からのデータを入力する。ＲＡＭ Ｂ１２２はマルチプレクサ１２４を介してアドレスユニットＢ１２０からのデータを入力する。ＲＡＭ Ａ１０４も又、マルチプレクサ１６８及び１２４を介してアキュムレータ（Ｃ０ＥＲＧ１６４又はＣ１ＲＥＧ１６６）からのデータを入力する。又ＲＡＭ Ｂ１２２はＤＭＡ＿ＩＮＰＵＴ（図５ａ〜ｄ参照）からのデータ、又はマルチプレクサ１２４を介してＩＮＲＥＧ１２８からのデータを入力する。ＲＡＭ Ｃ１８２はマルチプレクサ１８０を介してアドレスユニットＣ１８６からのデータを入力する。ＲＡＭ Ｃ１８２は又、マルチプレクサ１６８及び１８０を介してアキュムレータ（Ｃ０ＥＲＧ１６４又はＣ１ＲＥＧ１６６）からのデータを入力する。ＲＡＭＡ１０４はアドレスユニットＡ１０２へデータをマルチプレクサ１００を介して提供し、マルチプレクサ１０８を介してＡＲＥＧ１３０にデータを提供する。ＲＡＭ Ｂ１２２はデータを、マルチプレクサ１１８を介してアドレスユニットＢ１２０へ、ＲＡＭＢ＿ＤＯＵＴ（図５ａ〜ｄ参照）へ、マルチプレクサ１２６を介してＳＲＥＧ１３６へ、マルチプレクサ１１６を介してＢＲＥＧ１３４へ、及びマルチプレクサ１５８を介してＤＲＥＧ１５６へ提供する。
【００２６】
ＡＲＥＧ１３０は即時データ、ＲＯＭ Ｅ１１４からのデータ、又はＲＡＭ Ａ１０４からマルチプレクサ１０８を介してデータを入力する。ＢＲＥＧ １３４は又、マルチプレクサ１６８及び１１６を介してアキュムレータ（Ｃ０ＥＲＧ１６４又はＣ１ＲＥＧ１６６）からデータを入力する。
【００２７】
Ｃ０ＥＲＧ１６４及びＣ１ＲＥＧ１６６はマルチプレクサ１４８を介したデータ、ＲＡＭ Ｃ１８２からのデータ、加算器１４６からのデータ、論理ＡＮＤ要素１４４、又は論理ＯＲ要素１４２からデータを入力する。
【００２８】
シフトインデックスレジスタＳＲＥＧ１３６は即時データ又はマルチプレクサ１２６を介してＲＡＭＢ１２２からデータを入力する。
【００２９】
ＡＬＵ１４３は乗算、加算、減算、乗算累計、乗算加算、乗算減算、まるめ（round）、インクリメント、クリア、否定（negate）、及び論理ＡＮＤ、ＯＲ、及び反転動作を行う。乗算器１３２、ＡＲＥＧ１３０及びＢＲＥＧ１３４への入力はゲートされ（図示されず）、乗算が行われるときにのみ入力が変化するように構成することにより、乗算器１３２での消費電力を減少する。ＡＬＵ１４３は効率向上のために２つの３６ビットアキュムレータ（Ｃ０ＥＲＧ１６４及びＣ１ＲＥＧ１６６）、及び正規化（normalization）のために２つのバレルシフター（barrel shifters）、バレルシフター１４０及び１５０を提供する。左右１６ビット位置へのシフトアップは、バレルシフター１４０及び１５０により提供される。シフトインデックスは即時データを介して詳細に行われるか、又は専用シフトインデックスレジスタＳＲＥＧ１３６によりマルチプレクサ１４９を介して行われる。シフトインデックスレジスタＳＲＥＧ１３６はバレルシフター１４０及び１５０、ビットワイズ（bitwise）論理ＯＲ要素１６０及びＯＲＥＧ１６２と共に、ブロック正規化を実行するときのオーバーヘッドを最小にするために提供される。ＡＬＵ１４３は命令デコーダ１９２にステータスを提供することで、演算及びＣ０ＥＲＧ１６４及び／又はＣ１ＲＥＧ１６６の論理状態に基づく条件ジャンプが可能となる。例えば、一実施例において、Ｃ０ＥＲＧ１６４及びＣ１ＲＥＧ１６６の値の符号が比較され、符号変化に基づく条件ジャンプを提供する。ジャンプは即時データがＩＰカウンタ及びスタック１９６に提供されたときに発生する。アキュムレータのオーバーフロー及びアンダーフローが検出され、オーバーフローの場合は１６進法の０ｘ７ＦＦＦＦＦＦＦを、アンダーフローの場合は０ｘ８００００００１を、２の補数演算に従って提供することにより、自動的に飽和が行われる。
【００３０】
命令実行シーケンスは、フェッチ（fetch）、デコード（decode）、実行である。アドレス値はＩＰカウンタ及びスタック１９６により命令ＲＯＭ Ｉ１９４に提供される。このＲＯＭ１１９４はこれに応答して命令を命令デコーダ１９２に提供する。命令デコーダ１９２はこの入力命令に応答して、命令をデコードし、ＤＳＰコア４内の適当な要素に命令実行のための制御信号を提供する。
【００３１】
専用ループカウンタ及びスタック１９０はＩＰカウンタ及びスタック１９６に従って、小さいオーバーヘッド、ネストされた（nested）サブルーチンコール及びネストされたループを提供する。命令フェッチは単一命令ループの間は禁止され、電力消費を削減している。ループカウンタ及びスタック１９０はマルチプレクサ１８８を介して即時データを入力し、固定長ループを実行する。ループカウンタ及びスタック１９０は又、アキュムレータ（Ｃ０ＥＲＧ１６４、Ｃ１ＲＥＧ１６６）からマルチプレクサ１６８及び１８８を介してデータを入力し、可変長ループを実行する。ＲＯＭ Ｉ１９４内の２５６ワードスタティック命令キャッシュ（図示されず）は、最も頻繁に行われるループ及びサブルーチンのための低電力命令フェッチを提供する。ＷＡＩＴ命令は命令フェッチ及び命令デコードを禁止し、イベントを保留し電力消費を削減する。このような例としては、ＤＭＡ転送、 ＰＣＭインターフェース２からのタイミングストローブ、又は外部イベントが含まれる。
【００３２】
外部データ及び制御は、ＰＯＲＴ＿ＩＮＰＵＴ（図５ａ〜ｄ参照）、ＰＣＭインターフェース２からのＤＭＡ＿ＩＮＰＵＴ、及び条件ジャンプ命令で使用されるスタティックテストビットを介して、ＤＳＰコア４に提供される。データはＣＲＥＧを介して（図５ａ〜ｄ及び図６ａ〜ｂ参照）及びＲＡＭ Ｂ＿ＤＯＵＴを介して、ＤＳＰコア４により外部から提供される。ＤＳＰコア４及びＰＣＭインターフェース２間のＤＭＡは周知のサイクルスチーリング（cycle stealing）により実行される。Ｃ０ＲＥＧ１６４又はＣ１ＲＥＧ１６６からのデータはマルチプレクサ１６８を介して，命令デコーダ１９２からのＯＵＴＲＥＧ＿ＥＮ（図５ａ〜ｄ及び図６ａ〜ｂ参照）信号と共に提供される。アクティブＯＵＴＲＥＧ＿ＥＮ信号は最小化プロセッサ６に提供された有効ＣＲＥＧデータが存在することを意味する。
【００３３】
図６ａ〜ｂの最小化プロセッサ６は、ピッチ及びコードブックサーチ（codebook searches）の複雑な計算を部分的に支援する。最小化処理を行うために、最小化プロセッサ６は知覚的に重み付けされた（perceptually weighted）入力スピーチサンプルのシーケンス、一組のゲイン値、及びＤＳＰコア４からの合成されたスピーチサンプルの一組を受信する。最小化プロセッサ６は合成されたスピーチの自動相関（自己相関）（auto-correlation）及び合成されたスピーチと知覚的に重み付けされた入力スピーチ間の交差相関（相互相関）（cross-correlation）を計算する。これらの相関から、合成されたスピーチと入力スピーチ間の平均二乗エラー（ＭＳＥ）の相対測定値が、合成されたスピーチゲイン及びインデックスの関数として判断される。最小化プロセッサ６はインデックス及び最小ＭＳＥに生じたゲインを報告する。電力を節約する特徴により、最小化を続けるのが不可能な場合、ＭＳＥ計算を中止する。最小化プロセッサ６はＣＲＥＧ、ポートＩ／Ｏ、及び専用ＤＳＰコア命令を介してＤＳＰコア４と通信する。
【００３４】
最小化プロセッサ６の動作は制御要素２２０により決定する。制御要素２２０は現在のインデックス値の追跡を維持するカウンタ、最適ピッチ又はコードブックサーチ結果を保持するレジスタ、ＲＡＭ Ｘ２１２をアクセスするためのアドレス発生回路、及び入出力回路を具備する。更に制御要素２２０はマルチプレクサ２２４、２３４、２３０及び２４６上の選択信号を制御する機能を有し、ラッチ２１０、２１２２６、２２８、２３６、２３８、２４４及び２５０上のイネーブル（enables）を制御する。又、制御要素２２０は最小化プロセッサ６の要素内の様々な値をモニタし、所定のサーチ終了条件の下でサーチを省略する電力節約モードを制御し、及び循環バッファ（circular buffer）２５９内のゲイン値の循環を制御する。
【００３５】
更に、制御要素２２０は入出力動作を行う機能を有する。制御要素２２０は入力ポーチ１２を介して、最小値結果（即ち最適ピッチラグ及びピッチゲイン又は最適コードブックインデックス及び各サーチで判断されたコードブックゲイン）をＤＳＰコア４に提供する機能を有する。ＯＵＴＲＥＧ＿ＥＮ信号が制御要素２２０に提供され、この信号はラッチ２１０への入力データが有効で、アキュムレータ出力信号ＣＲＥＧ上に存在することを示す。制御要素２２０はそれに応答してイネーブル信号を発生し、そのイネーブル信号をラッチ２１０に提供し、そのデータを受信する。
【００３６】
ＯＵＴＰＯＲＴ＿ＥＮ（図５ａ〜ｄ、図６ａ〜ｂ参照）及びＰＯＲＴ＿ＡＤＤ（図５ａ〜ｄ、図６ａ〜ｂ参照）信号はＤＳＰコア４から制御要素２２０に提供される。ＰＯＲＴ＿ＡＤＤ信号は最小化プロセッサ６にアドレスを提供する。最小化プロセッサ６は、ＰＯＲＴ＿ＡＤＤ値が最小化プロセッサ６に関するデータを特定し、ＯＵＴＰＯＲＴ＿ＥＮが有効ＰＯＲＴ＿ＡＤＤ値を示すときにデータを入力する。制御及びデータは以下のように最小化プロセッサ６に提供される。
【００３７】
図１は本発明による構成の一実施例を示すブロック図である。ＰＣＭインターフェース２はコーデック（codec）（図示されず）に対して、パルスコード変調（ＰＣＭ）スピーチサンプルデータを入出力する。このデータは本実施例では、μ法（μ-law）又はＡ法（A-low）でコンパンドされた（companded）サンプルデータ又は線形サンプルデータである。ＰＣＭインターフェース２はクロック発生器１０からタイミング情報を受信し、データ及び制御情報をマイクロプロセッサインターフェース８から受信する。
【００３８】
ＰＣＭインターフェース２はＤＳＰコア４に、コーデック（図示されず）からエンコード用に受信したＰＣＭスピーチサンプルデータを提供する。ＰＣＭインターフェース２はＤＳＰコア４からＰＣＭスピーチサンプルデータを受信し、このデータはコーデック（図示されず）に提供される。ＰＣＭデータはＤＳＰコア４とＰＣＭインターフェース２間でＤＭＡを介して転送される。ＰＣＭインターフェース２はタイミング情報をクロック発生器１０に、コーデック（図示されず）から受信したサンプルのタイミングに基づいて提供する。
【００３９】
ＤＳＰコア４はデータ及び制御情報を副プロセッサ即ち最小化プロセッサ６に提供する。ＤＳＰコア４は又、出力ポート１４にデータを提供し、入力ポート１２からデータを受信する。ＤＳＰコア４はクロック発生器１０からタイミング情報を受信する。ＤＳＰコア４は又、外部アドレス情報を提供し、外部の命令及びデータを受信できる。
【００４０】
最小化プロセッサ６はクロック発生器１０からタイミング情報を受信し、ＤＳＰコア４からデータ及び制御を受信する。最小化プロセッサ６は最小化処理の結果を入力ポート１２を介してＤＳＰコア４に提供する。
【００４１】
クロック発生器１０はタイミング情報を他の全ブロックに提供する。クロック発生器１０は外部クロック信号を受信し、マイクロプロセッサインターフェース８及びＰＣＭインターフェース２からタイミング信号を受信する。
【００４２】
ジョイントアクショングループ（JTAG：Joint Test Action Group）インターフェース１６はＡＳＩＣの機能をテストする能力がある。ＪＴＡＧインターフェース１６は外部データ及び制御情報を受信し、外部データを提供する。
【００４３】
出力ポート１４はＤＳＰコア４からデータを受信し、このデータをマイクロプロセッサインターフェース８に提供し、又、データを外部装置（図示されず）に提供できる。
【００４４】
入力ポート１２はマイクロプロセッサインターフェース８及び最小化プロセッサ６からデータを受信し、このデータをＤＳＰコア４に提供する。又、入力ポート１２は外部装置（図示されず）からデータを受信し、このデータをマイクロプロセッサインターフェース８に提供できる。
【００４５】
マイクロプロセッサインターフェース８はマイクロプロセッサ（図示されず）に対してデータ及び制御情報を入出力できる。この情報は他のブロックに提供される。
【００４６】
本発明の一実施例では、ボコーダＡＳＩＣは可変速度ＣＥＬＰアルゴリズムを行う。このアルゴリズムは同時継続中の米国特許出願Ｎｏ．０８／００４，４８４（出願日：１９９３年１月１４日、発明の名称：”可変速度ボコーダ（Variable Rate Vocoder）”譲渡人は本発明と同一）に詳述されている。
【００４７】
図２はこのＡＳＩＣ内で実行される主要機能を示す。図２において、エンコードされるサンプルはボコーダＡＳＩＣにＰＣＭインターフェース３０を介してコーデック（図示されず）から提供される。そして、これらのサンプルはデコンパンディング（decompanding）要素３２に提供される。この要素３２はμ法又はＡ法のサンプルを線形サンプルに変換する。線形フォーマットで提供されたサンプルはデコンパンディング要素３２を介して無変更で送られる。線形サンプルは送信音響処理要素３４に提供される。この処理要素３４は、音声差動スイッチ（ＶＯＸ）３６、音響イコライザ要素３８、ＱＣＥＬＰエンコーディング要素４０、及びデュアルトーンマルチ周波数（DTMF : dual tone multi-frequency）検出要素４１を具備する。そして、送信音響処理要素３４はマイクロプロセッサインターフェース４２を介してエンコードされたスピーチパケット（speech packets）をＡＳＩＣ外部のマイクロプロセッサ（図示されず）に提供する。
【００４８】
エンコードされたスピーチパケットはマイクロプロセッサ（図示されず）によりマイクロプロセッサインターフェース４２を介して受信音響処理要素４４に提供され、ここでそれらはスピーチサンプルにデコードされる。受信音響処理要素４４はＱＣＥＬＰデコーディング要素４６、音響イコライザ４８、及びＤＴＭＦ発生要素４７を具備する。デコードされたサンプルはコンパンディング要素５０に提供され、このコンパンディング要素５０は線形サンプルをμ法又はＡ法フォーマットに変換するか、又は線形サンプルを無変更でＰＣＭインターフェース３０に送る。ＡＳＩＣはＰＣＭインターフェース３０を介してデコードされたサンプルをＡＳＩＣ外部のコーデック（図示されず）に提供する。
【００４９】
デコンパンディング要素３２として図２に示されるデコンパンディング動作、及びコンパンディング要素５０として図２に示されるコンパンディング動作は、図５ａ〜ｄ内にＤＳＰコア４により行われる。送信音響要素３４として図２に示される送信音響処理動作は、図６ａ〜ｂに示されるＤＳＰコア４及び最小化プロセッサ６により行われる。図２に受信音響処理要素４４として示される受信音響処理動作は、図５ａ〜ｄに示されるＤＳＰコア４により行われる。
【００５０】
一実施例ではコーデック（図示されず）から８ビットのμ法又は８ビットＡ法フォーマットで提供されたサンプルは、１４ビット線形フォーマットに変換される。μ法と線形の間の関係を式１に示す。
2Y=-IS(33+2M)2N-33                                    （１）
ここで、Ｙは線形値（−４０１５．５〜４０１５．５）、Ｎはべき指数（exponent）（０〜７）、Ｍは大きさの値（０〜１５）、及びＳは符号（ブラスのとき０、マイナスのとき１）である。Ａ法と線形の間の関係を式２及び３に示す。
【００５１】
2Y=-1S(1＋2M)22Y          Ｎ＝０の場合                （２）
2Y=-1S(33＋2M)2N          Ｎ＝１の場合                （３）
ここでＹは（−４０３２〜４０３２）、Ｎ、Ｍ及びＳは前述と同一。
【００５２】
図５ａ〜ｄにおいて、図２のＰＣＭインターフェース３０を介して提供されたサンプルは、ＲＯＭ Ｅ１１４内に格納されている参照テーブルにより線形フォーマットに変換される。好適実施例において、ハーフサイズ１２８×１４μ法から線形、及びＡ法から線形への参照テーブルがこの変換を行うために用いられる。好適実施例では、次の式４に示される特徴を有するフルサイズ変換テーブルを利用する。
ROM(n+128)=-ROM(n)        0≦n≦127                  （４）
入力スピーチ信号内のＤＣ成分の除去が、自動相関係数及びＬＰＣ係数の計算の前に必要となる。ＤＣ除去動作はＤＳＰコア４内で、ローパス濾波されたスピーチサンプル平均、即ちＤＣバイアスを現在のウインドウ内の各入力サンプルから減算することにより行われる。即ち、現在のフレームのＤＣバイアスは、現在及び以前のフレームのサンプル平均の重み付けされた平均である。ＤＣバイアスの計算を次の式５に示す。
ＤＣバイアス＝ａ（以前のフレームの平均）＋（１−ａ）（現在のフレームの平均）                                                      （５）
この好適実施例では、ａ＝０．７５。ローパス濾波はフレーム境界での大きな不連続を防止するために用いられる。この動作はＤＳＰ内で現在のフレーム及び以前のフレームに関するサンプル平均をＲＯＭ Ｅ１１４により提供される補間因数（interolation factor）ａと共に、ＲＡＭ要素（即ちＲＡＭ Ａ１０４、ＲＡＭ Ｂ１２２又はＲＡＭ Ｃ１８２）の１つに格納することにより行われる。加算は加算器１４６により行われ、乗算は乗算器１３２により行われる。ＤＣ除去機能はマイクロプロセッサ制御の下にイネーブル（enabled）又はディセーブル（disabled）することができる。
【００５３】
ＤＣ成分のない入力スピーチ信号ｓ（ｎ）はウインドウ化され、スピーチシーケンスを固定長フレームに分割する影響を減少する。ハミングウインドウ（Hamming window）関数が一実施例で用いられる。フレーム長 Ｌ＝１６０について、ウインドウ化されたスピーチＳw（ｎ）は次の式６に示すように計算される。
sW(n)=s(n+60)WH(n)、                  0≦n≦LA-1          （６）
ここでハミングウインドウは次の式７及び８により定義される。
【００５４】
WH(n)=0.54-0.46cos［2πn/(LA-1)］、    0≦n≦LA-1          （７）
WH(n)=0                              他の場合            （８）
好適実施例では、Ｗ（ｎ）は対象偶関数（even-symmetric function）であるから、参照テーブルの８０個の係数、半数のハミングウインドウ係数がＲＯＭ Ｅ１１４に格納される。ウインドウ化はアドレスユニットＥ１１２により提供されるアドレス値に従って、ウインドウ係数ＷＨ（ｎ）をマルチプレクサ１０８〜ＡＲＥＧ１３０を介してＲＯＭ Ｅ１１４から提供することにより行われる。ＡＲＥＧ１３０はこのデータを乗算器１３２の第１入力に提供する。スピーチサンプルｓ（ｎ＋６０）はＲＡＭ Ｂ１２２によりＢＲＥＧ１３４に提供される。ＢＲＥＧ１３４はこの値を乗算器１３２の第２入力に提供する。乗算器１３２の出力はウインドウ化されたスピーチサンプルで、このサンプルはＣ０ＲＥＧ１６４、そしてＲＡＭ Ｃ１８２に乗算器１６８を介して提供される。
【００５５】
ブロック正規化処理は２つの機能部分よりなる。即ち、正規化因数の決定と意図したデータの正規化である。一実施例では、データは２の補数で表され格納される。ウインドウ化されたサンプルが上記の式７に従って計算される。ＲＯＭ Ｉ１９４からの正規化命令ＤＥＴＯＮＲＭの場合、Ｃ０ＲＥＧ１６４にその結果発生されたウインドウ化サンプル値は次の処理を受ける。即ち、Ｃ０ＲＥＧ１６４内の値がマイナスの場合、反転要素１５２はその数の二進数を反転し、ビット反転した値を加算器１４６の第１入力に送る。加算器１４６の第２入力にはマルチプレクサ１３７及び１３８を介して０が与えられる。加算器１４６はそのキャリー入力（図示されず）により、ビット反転した値に１を加える。Ｃ０ＲＥＧ１６４の値がプラスの場合、その値はマルチプレクサ１６８及び１５４を介して反転要素１５２及び加算器１４６にそのまま送られる。この処理の目的はＣ０ＲＥＧ１６４の絶対値を計算することである。この絶対値はビットワイズ論理ＯＲ要素１６０の第１入力に提供される。ビットワイズ論理ＯＲ要素１６０の第２入力はＯＲＥＧ１６２が提供する。上記絶対値の計算を次の式８ａ〜ｃに示す。
OREGnew=(ABS(C0REG))OR(OREGold)                      （８ａ）
ここで、
ABS(C0REG)=C0REG、      C0REG≧                  （８ｂ）
=C0REG、      C0REG＜0                  （８ｃ）
式８ａ〜ｃに示される動作は、正規化を意図したデータがＣ１ＲＥＧ１６６内にある場合、ＤＥＴＮＯＲＭ命令を用いてＣ１ＲＥＧ１６６上で同様に実行できる。ＯＲＥＧ１６２は正規化動作の開始時にクリアされる。この処理は、動作の終わりで、ＯＲＥＧ１６２に格納された値が、ウインドウ化された全てのサンプルの絶対値のビットワイズ論理ＯＲを示すように、ウインドウ化された全てのサンプル（意図したデータ）について繰り返される。ＯＲＥＧ１６２内の最上位ビットセットからスケール因数が決定される。なぜなら、ＯＲＥＧ１６２内の値はウインドウかされたサンプルのブロック内で最も大きな値以上だからである。ＯＲＥＧ１６２内の値はマルチプレクサ１６８を介してＲＡＭＣ １８２に転送される。この値はＣ０ＲＥＧ１６４内にロードされる（loaded）。正規化因数はＣ０ＲＥＧ１６４内の値の右又は左シフトの数を計数することにより判断されるウインドウ化されたデータのこの量だけのシフトにより、次の動作に用いられる所望ピーク量を有する値が提供される。このスケーリング因数（scaling factor）は正規化因数としても知られている。正規化はシフトにより行われるので、正規化因数は２の乗数である。
【００５６】
ウインドウ化されたサンプルをできるだけ高い精度に保つため、最も大きな値が次の動作に与えられる最大ビット数を占めるように、意図した値には正規化因数が乗算される。正規化因数は２の乗数であるから、意図したデータの正規化は正規化因数により特定される数だけ単にシフトすることにより達成できる。正規化因数はマルチプレクサ１２６を介してＲＡＭ Ｂ１２２によりＳＲＥＧ１３６に提供される。そしてウインドウ化されたサンプルはＲＡＭ Ｃ１８２から、乗算器１５８を介してＤＲＥＧ１５６に提供される。そしてＤＲＥＧ１５６はこれらの値を、マルチプレクサ１５４及びディセーブルされたインバータ１５２を介して、バレルシフター１５０に提供する。
【００５７】
そこで、それらの値はＳＲＥＧ１３６によりマルチプレクサ１４９を介してバレルシフター１５０に提供された正規化因数に従ってシフトされる。バレルシフター１５０の出力はディセーブルされた加算要素１４６及びマルチプレクサ１４８を介してＣ０ＲＥＧ１６４に送られる。そして正規化及びウインドウ化されたサンプルは、マルチプレクサ１６８を通り、マルチプレクサ１２４及び１８０を介して、ＲＡＭ Ｂ１２２及びＲＡＭ Ｃ１８２に各々提供される。この結果、正規化されウインドウ化されたサンプルの２つのコピーがＲＡＭに格納され、これにより次の自動相関係数の計算効率を更に上げることができる。
【００５８】
Ｐ＋１自動相関係数Ｒ（ｋ）の計算は次の式９に従って行われる。
【数１】
0004194851.tif 000003
【００５９】
ここでＰはエンコーダ内のフォルマント予測フィルタ（formant prediction filter）の次数（order）である。この実施例ではＰ＝１０である。正規化されウインドウ化されたサンプルｓw（ｍ）は、ＲＡＭ Ｂ１２２により、マルチプレクサ１１６及びＢＲＥＧ１３４を介して、乗算器１３２の第１入力に提供される。正規化されウインドウ化されたサンプルの遅延形式ｓw（ｍ＋ｋ）はＲＡＭ Ｃ１８２によって、マルチプレクサ１４８及びＣ１ＲＥＧ１６６、ＲＡＭ Ａ４及びＡＲＥＧ１３０を介して、乗算器１３２の第２入力に提供される。各Ｒ（ｋ）はＬA−ｋ値の累計である。各Ｒ（ｋ）の第１の反復について、乗算器１３２の出力は、マルチプレクサ１３８及びバレルシフター１４０を介してアキュムレータＣ０ＲＥＧ１６４、加算器１４６に提供される。
【００６０】
マルチプレクサ１５４は０を加算器１４６の第２入力に、ディセーブルされたバレルシフター１５０を介して提供する。次の反復に対して、乗算器１３２の出力は、マルチプレクサ１３８及びバレルシフター１４０を介して、加算器１４６の第１入力に提供される。加算器１４６の第２入力には、マルチプレクサ１６８及び１５４、ディセーブルされた反転要素１５２及びディセーブルされたバレルシフター１５０を介して、Ｃ０ＲＥＧ１６４の出力が提供される。この処理は各Ｒ（ｋ）について繰り返される。
【００６１】
全ての自動相関係数はＲ（０）より小さい。この実施例では、Ｒ（０）が計算された後、その正規化因数が決定される。この正規化因数は既に計算されたＲ（０）及び他の自動相関係数に、それらが計算されたように適用される。この段階での自動相関係数の正規化は、次のＬＰＣ係数の計算での精度を最大限に上げる。
【００６２】
次に図３のブロック６２に進み、ＬＰＣ係数が計算され、スピーチサンプル内の短い相関（冗長性）を除く。
【００６３】
次数Ｐを有するフォルマント予測フィルタは伝送関数Ａ（ｚ）を有し、これを式１０に示す。
【数２】
0004194851.tif 000004
【００６４】
各ＬＰＣ係数ａiは正規化されウインドウ化された入力スピーチの自動相関値から計算される。ダービンのリカージョン（Durbin's recursion）（Rabiner , L.R．and Schafer, R.W., "Digital Processing of Speech Signals," Prentice-Hall, 1978 参照）と呼ばれる効率的反復法が、この実施例でＬＰＣ係数を計算するのに用いられる。この反復法を式１１−１７に示す。
【数３】
0004194851.tif 000005
【００６５】
ｉ＜Ｐの場合、ｉをインクリメントし、１２に移行する        （１６）
最終的ＬＰＣ系数値は：  a’j=a(P)j,  1≦j≦Ｐ                  （１７）
ダービンの反復アルゴリズムは、入力信号が０平均を有するときにのみ機能し、あらゆるＤＣバイアスは、自動相関計算が前述したように実行された後に除去される必要がある。
【００６６】
この実施例において、１８Ｈｚの帯域幅拡大が用いられ、これにより、フォルマント予測フィルタの安定性が確保される。これは本質的フォルマント合成の極をスケーリングすることにより行われる。帯域拡大は以下に示す式１８に従ってＬＰＣ係数を半径方向内側に（radially inwards）スケーリングすることにより行われる。
ai=βia’j,          1≦i≦P                              （１８）
この実施例ではβ＝０．９８８３である。１０個の拡大係数βi（１≦ｉ≦Ｐについて）がＲＯＭ Ｅ１１４に提供された参照テーブル内に格納される。ブロック６２の機能はＤＳＰコア４内で実行される。
【００６７】
次に図３のブロック６４に進み、スピーチデータの現在のフレームについてエンコーディング速度が決定される。この速度は各フレーム内の音声作用の測定に基づいている。この音声作用は前述したようにフレームエネルギＲ（０）に従って測定される。フレームｉについてエンコーディング速度を決定するために、フレームエネルギは次の式１９〜２に定義される３つの閾値と比較される。
T1(Bi)=-(5.544613・10-6)Bi2+(4.047152)Bi+362                  （１９）
T2(Bi)=-(1.529733・10-6)Bi2+(8.750045)Bi+1136                （２０）
T3(Bi)=-(3.957050・10-6)Bi2+(18.899622)Bi+3347                （２１）
ここで各フレームｉでの背景ノイズレベルＢｉは次の式２２に示すように各フレームで更新される。
Bi=min［Ri-1(0),160000,max[100547Bi-1,Bi-1+1]］                （２２）
速度はフレームエネルギが３つのどの閾値よりも少ない場合は１／８、フレームエネルギがＴ１（Ｂｉ）及びＴ２（Ｂｉ）の間の場合は１／４、フレームエネルギがＴ２（Ｂｉ）とＴ３（Ｂｉ）の間の場合は１／２、フレームエネルギがＴ３（Ｂｉ）以上の場合は最大定格速度である。速度がマイクロプロセッサ（図示されず）により、マイクロプロセッサインターフェース８を介して設定される場合を除き、データ速度は特定速度まで任意の速度に設定できるが、各フレームについて１ステップ以下の割合（例えば１／２から１／４）でのみ低めることができる。ＤＳＰコア４において、これらの閾値に関係する係数はＲＯＭ Ｅ１１４内の参照テーブルに提供される。
【００６８】
関数的速度アルゴリズムも好適実施例では提供され、これにより、最大平均速度をマイクロプロセッサインターフエース６を介して、マイクロプロセッサ（図示されず）により制限できるようになる。速度制限因数Ｓが与えられると、ボコーダの最大平均速度は連続する最大速度のフレームの数を制限することにより、（２Ｓ＋１）／［２（Ｓ＋１）］に制限される。
【００６９】
次に図３のブロック６６に進み、帯域拡大されたＬＰＣ係数は、ラインスペクトルペア（LSP : line spectrum pair）周波数に変換される（Soong and Juang ,"Line Spectrum Pair（LSP）and Speech Data Compression,”ICASSP,1984参照）。ＬＳＰ周波数は送信及び格納に関して著しく優れた特性を持ち、ＬＰＣ係数より更に効率よくエンコードできることが示された。１０個のＬＰＣ係数を示すＬＳＰ周波数は、以下の式２３及び２４に示す多公式の１０個のルート（ten roots）である。
P’(ω)=cos5(2πω)+p’1cos4(2πω)+…..+p’4cos(2πω)+0.5p’s    （２３）
Q’(ω)=cos5(2πω)+q’1cos4(2πω)+…..+q’4cos(2πω)+0.5p’s    （２４）
ここでＰ’ｉ及びＱ’ｉ（１≦ｉ≦５）はＤＳＰコア４内で次の式２５〜２７に従って計算される。
P’0=q’0=1                                              （２５）
P’i=-ai-a11-i-p’i-1        1≦i≦5                          （２６）
q’i=-ai+a11-i+q’i-1        1≦i≦5                          （２７）
Ｐ’（ω）のルートは、各π／３２ラジアン内に多くとも１つのルートがあることを推測することにより検出できる。Ｐ’（ω）はπ／３２ラジアン毎に、０からπラジアンまで評価される。いずれかのπ／３２ラジアンにルートが存在すると、その期間に亘って関数Ｐ’（ω）の符号が変化する。
【００７０】
ルートが検出された場合、二進サーチが行われ、π／２５６サイズの領域でそのルートを分離する。この二進サーチは、現在の領域の中心でのＰ’（ω）の評価を含み、どの１／２領域がルートを含んでいるかを判断する。この中心領域は、そのルートを含んでいると検出された１／２領域のみを含ようになるまで狭められる。この処理はそのルートがπ／２５６サイズの領域内に分離されるまで続けられる。そして線形補間が行われ、π／２５６ラジアン領域でのルートの位置を概算する。
【００７１】
ＬＳＰのオーダリング特性（ordering property）により、Ｑ’（ω）の１つのルートはＰ’（ω）のルートの各ペアの間に存在することが保証されている。Ｑ’（ω）の５番目のルートはＰ’（ω）の５番目のルートとπラジアンの間に存在する。前述の二進サーチは、Ｐ’（ω）のルートの各ペア間、及びＰ’（ω）の５番目のルートとπラジアン間で行われ、Ｑ’（ω）のルートが判断される。
【００７２】
二進サーチはルートの位置がπ／２５６サイズの領域内に分離されるまで続けられるので、０とπの間で均等に位置する２５６個のコーサイン値（cosine values）が必要になる。これらの関数評価はＬＰＣ係数からＬＳＰ周波数への変換において、最もコンピュータ処理が必要になる部分である。ブロック６６の機能はＤＳＰコア４内で行われる。
【００７３】
次に図３のブロック６８に進み、ＬＳＰ周波数が量子化される。各ＬＳＰ周波数の中心は、それに関係するバイアス値周辺にある。量子化の前に、このバイアスは、関係する各ＬＳＰ周波数から減算され、量子化に必要なビット数を減少する。このバイアスは次の式２８に示すように計算される。
【数４】
0004194851.tif 000006
【００７４】
ＬＳＰ周波数からバイアスが減算された後、そのＬＳＰ周波数は差動パルスコード変調（ＤＰＣＭ）量子化装置を用いて量子化される。ＤＰＣＭ量子化装置が使用される理由は、ＬＳＰ周波数は時間と共に徐々に変化し、ＬＳＰ周波数の変化の量子化により、ＬＳＰ周波数を直接量子化する場合より、量子化に必要なビット数を減少できるからである。ＤＳＰコア４では、ＬＳＰ周波数のバイアス値はＲＯＭ Ｅ１１４内の参照テーブルに格納される。使用される量子化ビット数及び量子化ステップサイズは、１０個のＬＳＰ周波数の中で量子化される周波数の関数であり、又、エンコーディング速度の関数である。量子化のビット数、及びステップサイズは、各エンコーディング速度で各ＬＳＰ周波数について、ＲＯＭ Ｅ１１４内の参照テーブルとして格納される。前述の参照テーブルを表ＩＩに示す。例えば、最大定格速度でのＬＳＰ周波数ω１は４ビットを用いて量子化され、ステップサイズは０．０２５である。
【表２】
0004194851.tif 000007
【００７５】
量子化と補間の後、テストが行われ、フォルマントフィルタが量子化の後で安定していることが確認される。各ＬＳＰ周波数は、結果的フォルマントフィルタの安定性を確保するために、少なくとも８０Ｈｚは離れていなければならない。ＬＳＰ周波数の中で８０Ｈｚ以下で隣合う周波数がある場合、帯域拡大が再び行われる。ブロック６８の機能はＤＳＰコア４内で行われる。
【００７６】
次に図３のブロック７０に進み、ＬＳＰ周波数は低帯域濾波され、以下の式２９に示すように量子化の影響を減少する。
【数５】
0004194851.tif 000008
【００７７】
この実施例では、最大定格速度でＳＭ＝０、１／２定格でＳＭ＝０．１２５である。１／４定格及び１／８定格において、１／４又は１／８定格フレームの連続数が１０より少ない場合、ＳＭ＝０．２５であり、その他の場合、ＳＭ＝０．９である。
【００７８】
ＬＳＰ周波数は各ピッチサブフレームについて補間される。ピッチサブフレームについて補間されたＬＳＰ周波数は、１／８定格以外の対応するコードブックサブフレームのペアに使用される。ＬＳＰ周波数は以下の式３０に従って補間される。
【数６】
0004194851.tif 000009
【００７９】
ここで重みαωは各ピッチサブフレーム及び各定格でのコードブックサブフレームについてＲＯＭ Ｅ１１４内の参照テーブルに格納されている。前述の参照テーブルを表ＩＩＩに示す。例えば、最大定格速度でのαωは、ピッチサブフレーム１及びコードブックサブフレーム１及び２について、０．７５である。
【表３】
0004194851.tif 000010
【００８０】
補間されたＬＳＰ周波数は、ピッチ及びコードサーチに使用されるＬＰＣ係数に変換され戻される。ＬＰＣ係数は以下の式３１〜３３に示すように、ＰＡ（ｚ）及びＱＡ（ｚ）から計算される。
A(z)=［PA(z)+QA(z)］/2                                （３１）
ここで、
【数７】
0004194851.tif 000011
【００８１】
この実施例において、テイラー（Taylor）の直列展開がＤＳＰコア４内で評価され、ＰＡ（ｚ）及びＱＡ（ｚ）でのコーサイン値を計算する。テイラーの直列展開は前述のルートサーチに用いられたものより更に正確なコーサイン値を提供する。ＰＡ（ｚ）及びＱＡ（ｚ）の値はＤＳＰコア４内で、上記の式３２〜３３に示される二次方程式のコンボリューション（convolution）を行うことにより計算される。
【００８２】
次に図３のブロック７２に進み、合成ピッチサーチ動作により広範な分析が行われる。この徹底的なサーチ処理は、ブロック７２〜７４により形成されるループにより示される。ピッチ予測がこの実施例では１／８定格以外のピッチサブフレームについて行われる。図７に示すピッチエンコーダは合成による分析を行って、ピッチ予測パラメータ（即ちピッチラグ（pitch lag）Ｌ、及びピッチゲインｂ）を決定する。選択されたパラメータは、知覚的に重み付けされた入力スピーチとこれらのピッチ予測パラメータを用いて発生された合成スピーチの間のＭＳＥを最小にするようなパラメータである。
【００８３】
本発明の好適実施例においては、図７に示すように絶対的な知覚的重み付けが、ピッチ予測パラメータの抽出に用いられる。図７において、式３４に示す応答性を有する知覚的重み付けフィルタが、フィルタ３２０及びフィルタ３２４のカスケードとして構成される。
W(z)=(A(z))/(A(z/ζ)                                    （３４）
絶対的な知覚的重み付けは、フィルタ３２０の出力をオープンループフォルマントの誤差として再使用することにより、知覚的重み付け濾波の複雑なコンピュータ処理を減少する。式３４のフィルタを２つの部分に分けるこの動作は、ピッチサーチでの１つのフィルタ動作を省略する。
【００８４】
入力スピーチサンプルｓ（ｎ）はフォルマント予測フィルタ３２０を通る。この予測フィルタ３２０の係数は前述した図３のブロック７０でのＬＳＰ補間及びＬＳＰからＬＰＣへの変換により得られたものである。フォルマント予測フィルタ３２０の出力はオープンループフォルマント残余ｐ０（ｎ）である。オープンループフォルマント残余ｐ０（ｎ）は次の式３５に示される伝達関数により重み付けされたフォルマント合成フィルタ３２４を通る。
【数８】
0004194851.tif 000012
【００８５】
重み付けされたフォルマント合成フィルタ３２４の出力は知覚的に重み付けされたスピーチｘ（ｎ）である。初期フィルタ状態又は重み付けされたフォルマント合成フィルタ３２４のフィルタメモリの影響は、重み付けされたフォルマント合成フィルタ３２４の出力から、重み付けされたフォルマント合成フィルタ３２４の０入力応答（ＺＩＲ）を減算することにより除去できる。重み付けされたフォルマント合成フィルタ３２４のＺＩＲの計算は、ＺＩＲ要素３２８内で行われる。ＺＩＲ ａＺＩＲ（ｎ）は知覚的に重み付けされたスピーチｘ（ｎ）から加算器３２６で減算される。各ピッチサブフレームの開始点で、ＺＩＲ要素３２８のフィルタメモリと重み付けされたフォルマント合成フィルタ３２４のフィルタメモリは同一である。
【００８６】
ピッチサーチにおいて、コードブックベクトルからの０の貢献が、オープンループフォルマント残余の計算における現在のサブフレームについて仮定される。このピッチサーチは前述のオープンループフォルマント残余ｐ０（ｎ）とクローズループフォルマント残余ｐｃ（ｎ）の両方を用いて行われる。クローズループフォルマント残余ｐｃ（ｎ）は、以前のサブフレームの間にピッチ合成フィルタ３２２内で再構成されたサンプルである。ピッチ合成フィルタ３２２の伝達関数を式３６に示す。
1/P(z)=1/(1-bz-L)                                        （３６）
ここでピッチラグＬ及びピッチゲインｂは、以前のピッチサブフレームについてのピッチサーチ処理の時に計算される。ピッチ合成フィルタ３２２への入力は、励起ベクトル（excitation vector）Ｃｂ（ｎ）であり、このベクトルはインデックスＩについてのコードブック入力Ｃｂ（Ｉ）と、以前のコードブックサブフレームについてのコードブックサーチ処理の間に計算されたコードブックゲインＧを乗算することにより発生する。従って発生するフォルマント残余はクローズループフォルマント残余と呼ばれる。
【００８７】
この実施例ではｐｃ（ｎ）は１４３個のクローズループ再構成サンプルからなる。サーチは大きなオープンループサーチから大きなクローズループに、ピッチサブフレームの長さのウインドウについて移動する。長さＬｐのピッチサブフレームについて、ｎは−ＬＭＡＸ＝−１４３とＬｐ−１７の間で変化する。好適実施例では、サンプルｐｃ（ｎ）とｐ０（ｎ）は、マルチプレクサ３３２によって示すように連続的に格納され、これによりｐｃ（ｎ）とｐ０（ｎ）値は長さＬｐ＋１４３のサンプルの単一ブロックとして次々にアクセスすることができる。これらのサンプルはＲＡＭ Ｂ１２２に格納される。
【００８８】
フォルマント残余ｐ（ｎ）はｐｃ（ｎ）とｐ０（ｎ）からなり、式３７に示す伝達関数を有する重み付けされたフォルマント合成フィルタ３３０を通る。
H(z)=1/(A(z/ζ))    ここでζ=0.8                        （３７）
重み付けされたフォルマント合成フィルタ３３０は、各ピッチラグＬの値について、Ｌｐの重み付けされた合成スピーチサンプルｙＬ（ｎ）のシーケンスを発生するために用いられる。重み付けされた合成スピーチシーケンスｙＬ（ｎ）及び重み付けされたスピーチシーケンスｘＰ（ｎ）は最小化プロセッサ３３４に提供される。重み付けされたフォルマント合成フィルタ３２４の初期状態の影響は減算で除かれたので、重み付けされたフォルマント合成フィルタ３３０のインパルス応答のみを計算すればよい。ｙＬ（ｎ）の計算は、重み付けされたフォルマント合成フィルタ３３０のインパルス応答ｈ（ｎ）を、適当なｐ（ｎ）内のサブシーケンスによりコンボリューション計算し、各ピッチラグＬについて重み付けされた合成スピーチサンプルｙＬ（ｎ）を得る必要がある。
【００８９】
このコンボリューションはＤＳＰコア４内で、図５ａ〜ｄに示すように再帰的（recursive）な方法で行われる。ｙＬ（ｎ）値のセットは各ピッチラグ値について、Ｌ＝１７からＬ＝１４３まで計算される。重み付けされたフォルマント合成フィルタ３３０のインパルス応答ｈ（ｎ）は、この実施例では最初の１２個のサンプルに省略され、ＲＡＭ Ａ１０４に格納される。フォルマント残余ｐ（ｎ）はＲＡＭ Ｂ１２２に格納される。最初のピッチラグＬ＝１７についてのコンボリューションは、式３８に示すように非再帰的な方法で行われる。
【数９】
0004194851.tif 000013
【００９０】
ここでＬＰはピッチサブフレーム長である。
【００９１】
最初のシーケンスｙ17（ｎ）が計算されＲＡＭ Ｃ１４２に格納される。ピッチラグＬ＝１８からＬ＝１４３までのサブシーケンスｙＬ（ｎ）は、式３９〜４１に示すように再帰的に計算される。
yL(n)=h(0)p(-L)                n=0                      （３９）
yL(n)=yL-1(n-1)+h(n)p(-L)        1≦n<20, 17<L≦143      （４０）
yL(n)=yL-1(n-1)                20≦n<Lp                （４１）
この関係を式４２に示す。
【００９２】
pL(n)=p(n-L)=pL-1(n-1),          17<L≦143,  0≦n<Lp      （４２）
再帰的コンボリューションの効率は、ＲＡＭを各々専用アドレッシングユニットを有する３つの部分に分割し、ロード及び格納動作を制御することにより最適化される。これは３分割ＲＡＭ（triple-partitioned RAM）と呼ばれる。式４０でのコンボリューション値の計算、及び結果の生成を各クロックサイクルで行うことが可能である。例えば単一のクロックサイクルで、ｙ18（１０）が計算され、ｙ18（９）が格納され、ｙ17（１０）がフェッチされ、及びｈ（１０）がフェッチされる。従って上記式４０は結果を各サイクルで生成できる。各サイクルで上記式４１の結果を生成することも可能である。例えば、単一サイクルで、ｙ18（２４）が計算され、ｙ17（２４）がフェッチされ、ｙ18（２３）が格納される。
【００９３】
以前計算された重み付けされた合成スピーチサンプルｙＬ-１（ｎ）を、各ピッチラグ更新の間に同一元のＲＡＭに移動することなく式４０及び４１を実行する能力は、ピンポン（ping-ponging）処理と呼ばれる方式及びハードウエア容量が必要になる。このピンポン方式では、ソース及び目的のＲＡＭは各ラグ更新の間でスワップされる（swapped）。等しいピッチラグ値についてｙＬ（ｎ）を計算したとき、ｙＬ-１（ｎ−１）値は３つのＲＡＭの中の第１のＲＡＭからフェッチされ、結果は第２のＲＡＭに格納される。奇数ピッチラグ値についてｙＬ（ｎ）を計算したとき、ｙＬ-１（ｎ−１）値は３つのＲＡＭの中の第２のＲＡＭからフェッチされ、結果は第１のＲＡＭに格納される。このピンポン方式により、各ピッチラグ更新の間で、新たに計算されたｙＬ（ｎ）をＲＡＭに移動し、及び以前に計算されたｙＬ-１（ｎ−１）値を同一のＲＡＭから移動する必要がなくなる。
【００９４】
図８はピッチサーチのコンボリューション部分（初期の非再帰的及び再帰的コンボリューションの両方）の実行するためのフロー図の一実施例である。ブロック３５０では、ピッチラグＬは最も小さな値に初期化される。この値は本実施例では１７である。サンプル番号ｎ及びフィルタインデックスｍは０にセットされ、ｙ17（ｎ）の値は０にセットされる。ブロック３５２から３６０は初期コンボリューションループを示し、このループは非再帰的方法で計算される。初期コンボリューションの計算（ここでＬ＝１７）は、次の式４３に従って行われる。
【数１０】
0004194851.tif 000014
【００９５】
初期コンボリューションの計算は固定長ループを使用して、計算の複雑性を減少している。このようにして、式４３の内部ループ（ブロック３５６〜３６０）内の可変長ループ構造を設定するために必要なオーバーヘッドが避けられる。各ｙ17（ｎ）値は、それが計算された後、最小化プロセッサ３３４に送られる。
【００９６】
ブロック３５２はサンプルインデックスｎをテストする。ｎがピッチサブフレーム長ＬＰに等しい場合、初期コンボリューションは完了し、フローはブロック３６２に移行する。ブロック３５２内で、ｎがピッチサブフレーム長より短い場合、フローはブロック３５６に移行する。ブロック３５２はインデックスｍをテストする。ｍがフィルタインパルス応答長２０に等しい場合、この実施例では、現在の反復は完了し、フローはブロック３５４に移行し、ｍは０に設定され、ｎはインクリメントされる。そしてフローはブロック３５２へ戻る。ブロック３５６で、ｍがインパルス応答長より短い場合、フローはブロック３６０に移行し、部分的合計が累計される。フローはブロック３５６に移行し、インデックスｍはインクリメントされ、フローはブロック３５６へ進む。
【００９７】
ブロック３５２から３６０により形成された初期コンボリューションループ内に含まれる動作はＤＳＰコア４内で実行される。そこで、パイプライン処理を行うことにより、ブロック３６０に示されるような積の累計が各クロックサイクルで可能となる。次の動作は計算のパイプライン処理を説明し、ＤＳＰコア４内で単一クロックサイクルに発生する。フィルタ応答値ｈ（ｍ＋１）がＲＡＭ Ａ１０４からフェッチされ、ＡＲＥＧ１３０に提供される。フォルマント残余値ｐ（ｎ−１７）がＲＡＭ Ｂ１２２からフェッチされ、ＢＲＥＧ１３４に提供される。Ｃ０ＲＥＧ１６４内に存在する部分和ｙ17（ｎ＋ｍ−１）はマルチプレクサ１６８及び１８０を介してＲＡＭ Ｃ１８２に提供される。部分和ｙ17（ｎ＋ｍ＋１）はＲＡＭ Ｃ１８２により、マルチプレクサ１５８を介してＤＲＥＧ １５６に提供される。ＡＲＥＧ１３０及びＢＲＥＧ１３４内の各値ｈ（ｍ）及びｐ（ｎ−１７）は乗算器１３２に提供される。乗算器１３２の出力はマルチプレクサ１３８を介してバレルシフター１４０に提供される。このバレルシフター１４０はＳＲＥＧ１３６によりマルチプレクサ１４９を介して提供されるスケーリング値に従って、その値を正規化する。ＳＲＥＧ１３６内の値はｐ（ｎ−１７）シーケンスを正規化するために必要な値である。この正規化因数をｐ（ｎ−１７）とｈ（ｍ）の積に適用することで、ｐ（ｎ−１７）の正規化と同一の効果を得ることができる。なぜなら、その積の最高精度は正規化がバレルシフター１４０内で行われる前に維持されるからである。部分和ｙ17（ｎ＋ｍ）はＤＲＥＧ１５６により、マルチプレクサ１５４、ディセーブルされたインバータ１５２及びバレルシフター１５０を介して加算器１４６の第２入力に提供される。加算器１４６の出力はマルチプレクサ１４８を介してＣ０ＲＥＧ１６４に提供される。インデックスｎがブロック３５２内の最大許容値に達すると、初期コンボリューションは完了し、ＲＡＭＣ１８２に存在する部分和はコンボリューションの最終値となる。
【００９８】
初期コンボリューションが完了すると、フローはブロック３６２に移行し、そこで再帰的コンボリューションは残りのピッチラグ値に関する計算の中で実行される。
【００９９】
ブロック３６２では、サンプルインデックスｎは０に設定され、ピッチラグインデックスＬがインクリメントされる。フローはブロック３６４に移行する。ブロック３６４はＬをテストする。Ｌが最大ピッチラグ値（本実施例では１４３）より大きい場合、フローはブロック３６６に移行し、そこでピッチサーチ動作は終結する。Ｌが１４３以下の場合、フローはブロック３６８に移行する。ブロック３６８はピンポン動作を前述したように制御する。ブロック３６８では、Ｌがテストされ、それが偶数か奇数か判断される。Ｌが偶数の場合、フローはブロック３７８に移行する（ケースＩで説明される動作）。Ｌが奇数の場合、フローはブロック３７０に移行する（ケースＩＩで説明される動作）。
【０１００】
ケースＩ（ピッチラグＬが偶数の場合）
ブロック３７８でｙＬ（０）は式３９に従って計算される。アドレスユニットＡ１０２はＲＡＭＡ１０４に対するアドレス値を提供し、ＲＡＭ Ａ１０４はそれに応答してｈ（０）をマルチプレクサ１０８〜ＡＲＥＧ１３０を介して提供する。同一クロックサイクルで、アドレスユニットＢ１２０はＲＡＭ Ｂ１２２に対するアドレス値を提供し、ＲＡＭＢ１２２はそれに応答してｐ（−Ｌ）をマルチプレクサ１１６からＢＲＥＧ１３４を介して提供する。次のクロックサイクルで、ＡＲＥＧ１３０はｈ（０）を提供し、ＢＲＥＧ１３４はｐ（−Ｌ）をマルチプレクサ１３２に提供し、そこで２つの値が乗算され、その積はマルチプレクサ１３８を介してバレルシフター１４０に提供される。バレルシフター１４０は、マルチプレクサ１４９を介してＳＲＥＧ１３６により与えられる値に応じて、その積を正規化し、正規化された積を加算器１４６の第１入力に提供する。加算器１４６の第２入力には、マルチプレクサ１５４、ディセーブルされたインバータ要素１５２及びバレルシフター１５２を介して０が提供される。加算器１４６の出力はマルチプレクサ１４８を介してＣ０ＲＥＧ１６４に提供される。同一クロックサイクルで、ｙＬ-１（０）及びｈ（１）がＲＡＭ Ｂ１２２及びＲＡＭ Ａ１０４からフェッチされ、マルチプレクサ１５８及び１０８を各々介してＤＲＥＧ１５６及びＡＲＥＧ１３０に提供される。プロック３８０では、合成されたスピーチサンプルインデックスｎがインクリメントされる。制御ブロック３８２では、合成されたスピーチサンプルインデックスｎが２０より少ない場合、フローはブロック３８４に進む。
【０１０１】
プロック３８４では、新たなｙＬ（ｎ）値が式４０に従って各クロックサイクルで計算される。ｙＬ-１（ｎ−１）及びｈ（ｎ）の値を初期化するためにブロック３８４の最初の反復に先だって必要な適切な設定は、前述したようにブロック３７８で達成された。最終値のｙＬ（１９）を格納するために、ブロック３８４の最後の反復の次に適切なクリーンアップ（cleanup）も必要である。
【０１０２】
ブロック３８４の最初の反復で、ブロック３７８で計算されたｙＬ（０）がＣ０ＲＥＧ１６４内に存在する。Ｃ０ＲＥＧ１６４はマルチプレクサ１６８及び１８０を介してＲＡＭ Ｃ１８２にｙＬ（０）を、アドレスユニットＣ１８４からのＲＡＭ Ｃ１８２に対するアドレス値と共に提供し格納する。ｙＬ（０）は、それがＲＡＭ Ｃ１８２に提供されるのと同時に、最小化プロセッサ３３４に提供される。
【０１０３】
ブロック３８４では次の動作が単一クロックサイクルの間に行われる。即ち、ｙＬ-１（ｎ）値は、アドレスユニットＢ１２０により提供されるアドレスに従って、マルチプレクサ１１６及び１５８を介して、ＲＡＭ Ｂ１２２により、ＤＲＥＧ１５６に提供される。インパルス応答値ｈ（ｎ＋１）はＲＡＭ Ａ１０４により、アドレスユニットＡ１０２により提供されるアドレスに従って、マルチプレクサ１０８を介してＡＲＥＧ１３０に提供される。ＤＲＥＧ１５６はｙＬ-１（ｎ−１）を、マルチプレクサ１５４、ディセーブルされたインバータ要素１５２、及びバレルシフター１５０を介して、加算器１４６の第１入力に提供する。ＡＲＥＧ１３０はｈ（ｎ）を、及びＢＲＥＧ１３４はｐ（−Ｌ）を乗算器１３２に提供し、そこで２つの値は乗算され、その積はマルチプレクサ１３８を介して乗算器１３２により、バレルシフター１４０に提供される。バレルシフター１４０はＳＲＥＧ１３６により提供される値に従って、その積の値を正規化し、正規化された積値を加算器１４６の第２入力に提供する。加算器１４６の出力は、マルチプレクサ１４８を介してＣ０ＲＥＧ１６４に提供される。以前の反復で計算されたＣ０ＲＥＧ１６４での値は、マルチプレクサ１６８及び１８０を介して、ＲＡＭ Ｃ１８２に提供及び格納され、最小化プロセッサに提供される。
【０１０４】
ブロック３８０では、合成されたスピーチサンプルインデックスｎがインクリメントされる。制御ブロック３８２では、合成されたスピーチサンプルインデックスｎが２０に等しい場合、最後の反復で計算されたｙＬ（１９）は、フローがブロック３９０に進む前に、マルチプレクサ１６８及び１２４を介して、ＲＡＭＢ１２２に提供され、循環バッフアに格納され、最小化プロセッサ３３４に提供される。ケースＩの終わり。
【０１０５】
ケースＩＩ（ピッチラグＬが奇数の場合）
ブロック３７０では、ｙＬ（０）が式３９に従って計算される。アドレスユニットＡ１０２はＲＡＭＡ１０４にアドレス値を提供し、ＲＡＭ Ａ１０４はそれに応じてｈ（０）をマルチプレクサ１０８を介してＡＲＥＧ１３０に提供する。同一のクロックサイクルで、アドレスユニットＢ１２０はアドレス値をＲＡＭ Ｂ１２２に提供し、ＲＡＭ Ｂ１２２はそりに応じてｐ（−Ｌ）をマルチプレクサ１１６を介してＢＲＥＧ１３４に提供する。次のクロックサイクルの間、ＡＲＥＧ１３０はｈ（０）を、及びＢＲＥＧ１３４はｐ（−Ｌ）を乗算器１３２に提供し、そこで２つの値が乗算され、その積はマルチプレクサ１３８を介してバレルシフター４０に提供される。バレルシフター４０は、マルチプレクサ１４９を介してＳＲＥＧ１３６により提供される値に応じて、その積を正規化し、正規化された積を加算器１４６の第１入力に提供する。加算器１４６の第２入力には、マルチプレクサ１５４、ディセーブルされたインバータ要素１５２、及びバレルシフター１５２を介して０が提供される。加算器１４６の出力はマルチプレクサ１４８を介してＣ０ＲＥＧ１６４に提供される。同一クロックサイクルの間に、ｙＬ-１（０）及びｈ（１）がＲＡＭ Ｃ１８２及びＲＡＭ Ａ１０４からフェッチされ、ＤＲＥＧ１５６及びＡＲＥＧ１３０にマルチプレクサ１５８及び１０８を各々介して提供される。
【０１０６】
ブロック３７２では、合成されたスピーチサンプルインデックスｎはインクリメントされる。制御ブロック３７４では、合成されたスピーチサンプルインデックスｎが２０より少ない場合、フローはブロック３６７に進む。
【０１０７】
ブロック３７６では、新たなｙＬ（ｎ）値が式４０に従って各クロックサイクルに計算される。ｙＬ-１（ｎ−１）及びｈ（ｎ）の値を初期化するために、ブロック３７６の最初の反復に先だって必要な適切なセットアップが前述したようにブロック３７０で行われた。ｙＬ（１９）の最終値を格納するために、ブロック３７６の最後の反復の次に適切なクリーンアップも必要である。
【０１０８】
ブロック３７６の最初の反復において、ブロック３７０で計算されたｙＬ（０）は、Ｃ０ＲＥＧ１６４内に存在する。Ｃ０ＲＥＧ１６４はマルチプレクサ１６８及び１８０を介して、ｙＬ（０）を、アドレスユニットＢ１２２からＲＡＭＢに対して与えられたアドレスと共にＲＡＭＢ１２２に提供し、格納する。ｙＬ（０）は、それがＲＡＭ Ｂ１２２に提供されるのと同時に、最小化プロセッサ３３４に提供される。
【０１０９】
ブロック３７６では、次の動作が単一サイクルで実行される。ｙＬ-１（ｎ）値はＲＡＭＣ１８２により、アドレスユニットＣ１８６から提供されたアドレスに従い、マルチプレクサ１５８を介して、ＤＲＥＧ１５６に提供される。インパルス応答値ｈ（ｎ＋１）は、ＲＡＭＡ１０４により、アドレスユニットＡ１０２によって提供されるアドレスに従い、マルチプレクサ１５４を介して、ＡＲＥＧ１３０に提供される。ＤＲＥＧ１５６はｙＬ-１（ｎ−１）を、マルチプレクサ１５４、ディセーブルされたインバータ要素１５２、及びバレルシフター１５０を介して、加算器１４６の第１入力に提供される。ＡＲＥＧ１３０はｈ（ｎ）を、ＢＲＥＧ１３４はｐ（−Ｌ）をマルチプレクサ１３２に提供し、ここで２つの値が乗算され、乗算器１３２により提供されるその積は、マルチプレクサ１３８を介してバレルシフター１４０に提供される。バレルシフター１４０は、ＳＲＥＧ１３６により提供される値に応じて、その積を正規化し、正規化された積を加算器１４６の第２入力に提供する。加算器１４６の出力はマルチプレクサ１４８を介してＣ０ＲＥＧ１６８に提供される。以前の反復で計算されたＣ０ＲＥＧ１６８の値は、マルチプレクサ１６８及び１２４を介してＲＡＭＢ１２２に格納され、及び最小化プロセッサ３３４に提供される。
【０１１０】
ブロック３７２では、合成されたスピーチサンプルインデックスｎはインクリメントされる。制御ブロック３７４では、合成されたスピーチサンプルインデックスｎが２０に等しい場合、最後の反復で計算されたｙＬ（１９）は、フローがブロック３９０に進む前に、マルチプレクサ１６８及び１２４を介して、ＲＡＭＢ１２２に提供され、ＲＡＭ Ｂ１２２内の循環バッファに格納され、及び最小化プロセッサ３３４に提供される。ケースＩＩの終わり。
【０１１１】
ブロック３９０の反復に先立って、ｙＬ-１（１９）がＲＡＭ Ｂ１２２内の循環バッファからフェッチされ、ＢＲＥＧ１３４にロードされ、ｙＬ-１（１９）はＢＲＥＧ１３４からＣ０ＲＥＧ１６４に移動され、その後、ｙＬ-１（２０）がＲＡＭ Ｂ１２２内の循環バッファからフェッチされ、ＢＲＥＧ１３４にロードされる。
【０１１２】
ブロック３９０では、新たなｙＬ（ｎ）が各クロックサイクルで、式４１に従って計算される。次に示す動作が単一クロックサイクルで行われる。即ち、ｙＬ-１（ｎ−２）がＢＲＥＧ１３４によりＣ０ＲＥＧ１６４に提供される。ｙＬ-１（ｎ−３）がＲＡＭ Ｂ１２２内の循環バッファからフェッチされ、ＢＲＥＧ１３４にロードされる。Ｃ０ＲＥＧ１６４に存在するｙＬ-１（ｎ−１）は最小化プロセッサ３３４に提供される。ブロック３９０の最後の反復の続いて、ｙＬ-１（ＬＰ−２）はＲＡＭ Ｂ１２２内の循環バッファから削除される。各ピッチラグで循環バッファに要素を加算し、各ピッチラグで循環バッファから要素を減算することにより、循環バッファのサイズはＬＰ−１９に維持される。
【０１１３】
循環バッファの導入は、アドレスユニットＢ１２０内の専用アドレスレジスタにより行われる。これはシーケンシャルメモリが循環形式で自動的にアドレスできるように、丸め込み点（wrap around points）を示す。
【０１１４】
ブロック３８６では、合成されたスピーチサンプルインデックスｎがインクリメントされる。制御ブロック３８８では、合成されたスピーチサンプルインデックスｎがＬＰより少ない場合、フローは再びブロック３９０に進む。合成されたスピーチサンプルインデックスｎがＬＰに等しい場合、全てのｙＬ（ｎ）値が現在のピッチラグ値Ｌについて計算され、フローはブロック３６２に戻る。
【０１１５】
合成されたスピーチサンプルｙＬ（ｎ）の計算に先立ち、知覚的に重み付けされたスピーチサンプルｘＰ（ｎ）の長さＬＰのシーケンスが、最小化プロセッサ３３４に提供される。前述したように、ラグ値Ｌ＝１７からＬ＝１４３までの長さＬＰのスピーチサンプルｘＰ（ｎ）のシーケンスは、初期及び再帰的コンボリューションの計算の間に、最小化プロセッサ３３４に提供される。合成されたスピーチサンプルは最小化プロセッサ３３４に次々と提供される。最小化プロセッサ３３４は合成された各スピーチサンプルシーケンスｙＬ（ｎ）の自動相関を計算し、合成された各スピーチサンプルシーケンスｙＬ（ｎ）と知覚的に重み付けされたスピーチサンプルｘＰ（ｎ）間の交差相関を計算する。
【０１１６】
これら相関値から、最小化プロセッサ３３４は、合成された各スピーチサンプルシーケンスｙＬ（ｎ）と知覚的に重み付けされたスピーチサンプルｘＰ（ｎ）間のＭＳＥの相対測定値を計算する。各ピッチラグＬに関して、ＭＳＥは合成されたスピーチサンプルシーケンスのピッチゲイン値ｂのあらゆる可能な値について計算される。最小化プロセッサ３３４は、現在のピッチラグＬ及び現在のピッチゲインＢにより、最小ＭＳＥの値を維持することにより、全ピッチラグ値Ｌ及びピッチゲイン値ｂのあらゆる可能な値についての最小値を検出する。最小ＭＳＥに対応するピッチラグ概算Ｌ＾及びピッチゲイン概算インデックスｂ＾も、最小化プロセッサ３３４によって維持される。新たなＭＳＥの各値は最小化プロセッサ３３４内に保持された最小ＭＳＥと比較される。
【０１１７】
新ＭＳＥが最小ＭＳＥより小さい場合、最小ＭＳＥは新ＭＳＥ値と置き代わり、ピッチラグ概算Ｌ＾及びピッチゲイン概算インデックスｂ＾は更新され、新たな最小ＭＳＥを反映する。最小化プロセッサ３３４に保持された最小ＭＳＥ及び対応するピッチラグ概算Ｌ＾及びピッチゲイン概算インデックスｂ＾は、ピッチサブフレームの間に計算された最初のマイナスのＭＳＥ値を使用して、各ピッチサブフレームで初期化される。全てのピッチラグ値Ｌ＾及び全てのピッチゲイン値ｂ＾を検討した後、ピッチラグ概算Ｌ＾及びピッチゲイン概算インデックスｂ＾は、現在のピッチサブフレームに対する最適ピッチラグインデックス及びピッチゲイン概算インデックスである。
【０１１８】
最小化プロセッサ３３４は最適ピッチラグＬ＾と最適ピッチゲインインデックスｂ＾をＤＳＰコア４に提供する。最適ピッチラグＬ＾と最適ピッチゲインインデックスｂ＾は、知覚的に重み付けされたスピーチサンプルｘｐ（ｎ）と重み付けされた合成スピーチサンプルｙＬ（ｎ）間の最小ＭＳＥを生じる値である。ＭＳＥは次式４４〜４６に示すように、ピッチラグＬとピッチゲインｂの関数である。
【数１１】
0004194851.tif 000015
【０１１９】
ＥｘＰｘＰは知覚的に重み付けされたスピーチサンプルｘＰ（ｎ）の自動相関である。ＥｘＰｙＬは知覚的に重み付けされたスピーチサンプルｘｐ（ｎ）と重み付けされた合成スピーチサンプルｙＬ（ｎ）間の交差相関である。ＥｙＬｙＬは重み付けされた合成スピーチサンプルｙＬ（ｎ）の自動相関である。
【０１２０】
知覚的に重み付けされたスピーチサンプルｘｐ（ｎ）の自動相関ＥｘＰｘＰは、ピッチゲインｂの関数ではない。ＥｘＰｘＰは各ピッチサブフレームの間で一定であるので、最適ピッチラグ及び最適ピッチゲインの選択に影響しない。ピッチラグＬ及びピッチゲインｂに対する最小化の式４４〜４６は、次の最小化の式４７と等価である。
MSE(L,b)=-2bExpyL+b2EyLyL                           （４７）
最小化プロセッサ３３４は、重み付けされた合成スピーチサンプルｙＬ（ｎ）の自動相関ＥｙＬｙＬ、及び知覚的に重み付けされたスピーチサンプルｘｐ（ｎ）と重み付けされた合成スピーチサンプルシーケンスｙＬ（ｎ）間の交差相関ＥｘＰｙＬを計算する。各相関対（ＥｘＰｙＬ、ＥｙＬｙＬ）について、最小化プロセッサ３３４は、前記の式４７に従って、相対ＭＳＥをピッチゲインｂの値の１セットについて計算する。ＥｘＰｙＬ及びＥｙＬｙＬの計算は、最小化プロセッサ３３４内で同時に行われる。相関値がピッチラグＬ＋１について計算されている間に、相対ＭＳＥ値が計算され、ＭＳＥ最小化に関する決定がピッチラグＬについて行われる。
【０１２１】
図６ａ及び６ｂは最小化プロセッサ３３４の一実施例を示す。知覚的に重み付けされたスピーチサンプルｘｐ（ｎ）はＤＳＰコア４によりラッチ２１０に提供され、制御要素２２０によって提供されるアドレスに従ってＲＡＭ Ｘ２１２内に格納される。ｂ＝０．２５〜ｂ＝２．０で０．２５ステップ毎にスケールされた（scaled）ピッチゲイン値−２ｂが、マルチプレクサ２６０を介してＤＳＰコア４により提供され、ラッチ２６４、２６８、２７２、２７６、２８０、２８４、２８８及び２９２に各々格納される。対応するスケールされたピッチゲイン値ｂ2はマルチプレクサ２６０を介してＤＳＰコア４により提供され、ラッチ２６２、２６６、２７０、２７４、２７８、２８２、２８６及び２９０に各々格納される。マルチプレクサ２６０はラッチ２６２に値を直接提供する。
【０１２２】
ラッチ２６２はラッチ２６４に値を直接提供する。ラッチ２７６はラッチ２７８に値をマルチプレクサ２９４を介して提供する。ラッチ２９０は値をラッチ２９２に直接提供する（以下同様）。ラッチ２６２〜２９２及びマルチプレクサ２９４を介して値をシフトすることにより、値はマルチプレクサ２６０を介して循環バッファ２５９内の全てのラッチに提供することができる。知覚的に重み付けされたスピーチサンプルｘｐ（ｎ）の格納、及び−２ｂとｂ2値の格納に続いて、重み付けされた合成スピーチサンプルｙＬ（ｎ）がラッチ２１０に提供される。重み付けされた合成スピーチサンプルｙＬ（ｎ）はラッチ２１０により、マルチプレクサ２１６の２つの入力に提供される。これは重み付けされた合成スピーチサンプルの二乗（ｙＬ（ｎ））2を生成する。
【０１２３】
ラッチ２１０も、重み付けされた合成スピーチサンプルｙＬ（ｎ）を乗算器２１８の第１入力に提供する。ＲＡＭ Ｘ２１２は知覚的に重み付けされたスピーチサンプルｘｐ（ｎ）を、ラッチ２１４を介して乗算器２１８の第２入力に提供する。乗算器２１８は積ｘｐ（ｎ）ｙＬ（ｎ）を計算する新たな二乗値（ｙＬ（ｎ））2、及び新たな積ｘｐ（ｎ）ｙＬ（ｎ）は、乗算器２１６及び２１８により各サイクルで各々計算される。サンプルインデックスｎは０からＬＰ−１まで、各ピッチラグＬについて変化する。
【０１２４】
重み付けされた合成スピーチサンプルの二乗値（ｙＬ（ｎ））2は、アキュムレータ２２１に提供される。積ｘｐ（ｎ）ｙＬ（ｎ）はアキュムレータ２３１に提供される。アキュムレータ２２１は各ピッチラグＬについてのＬＰの二乗の合計を計算する。アキュムレータ２３１は各ピッチラグＬについてＬＰの積の合計を計算する。
【０１２５】
新たな各ピッチラグの前に、ラッチ２２６にはマルチプレクサ２２４を介して０が提供される。これでアキュムレータ２２１は現在のピッチラグＬに関する自動相関ＥｙＬｙＬを計算する準備が整う。アキュムレータ２２１内で、二乗値（ｙＬ（ｎ））2は加算器２２２の第１入力に提供される。不足している合計はラッチ２２６により加算器２２２の第２入力提供される。新たに計算された不足している合計は加算器２２により、マルチプレクサ２２４を介してラッチ２２６に提供され格納される。ピッチラグＬに関する全てのＬＰ値に対する累計の後、自動相関ＥｙＬｙＬはラッチ２２８に提供され格納される。
【０１２６】
新たな各ピッチラグの前に、ラッチ２３６にはマルチプレクサ２３４を介して０が提供される。これでアキュムレータ２３１は、現在のピッチラグＬに関する交差相関ＥｘＰｙＬを計算する準備が整う。アキュムレータ２３１内で、積ｘｐ（ｎ）ｙＬ（ｎ）が、加算器２３２の第１入力に提供される。不足している合計はラッチ２３６により、加算器２３２の第２入力に提供される。新たに計算された不足している合計は加算器２３２により、マルチプレクサ２３４を介して、ラッチ２３６に提供され、格納される。ピッチラグＬに関する全てのＬＰ値に対する累計の後、交差相関ＥｘＰｙＬはラッチ２３８に提供され格納される。
【０１２７】
式４７に示されるＭＳＥは以下に説明する２つのサイクル処理において計算される。
【０１２８】
２つのサイクルの第１サイクルで、ラッチ２３８は知覚的に重み付けされたスピーチサンプルと重み付けされた合成スピーチサンプル間の交差相関ＥｘＰｙＬを、マルチプレクサ２３０を介して、乗算器２４０の第１入力に提供する。循環バッファ２５９はスケールされたピッチゲイン値−２ｂを、マルチプレクサ２９６を介して乗算器２４０の第２入力に提供する。積−２ｂＥｘＰｙＬは乗算器２４０により、加算器２４２の第１入力に提供される。加算器２４２の第２入力は、マルチプレクサ２４６を介して０が提供される。加算器２４２の出力はラッチ２４４に提供され格納される。循環バッファ２５９のラッチ２６２〜２９２内の値は、ラッチ２７６の出力をマルチプレクサ２９４を介してラッチ２７８に提供することにより、及びラッチ２９２の出力をマルチプレクサ２６０を介してラッチ２６２に提供することにより、回転される。
【０１２９】
この回転の後、ラッチ２６２、２６４、２６６、２６８、２７０、２７２、２７４、２７６、２７８、２８０、２８２、２８４、２８６、２８８、２９０及び２９２は、ラッチ２９２、２６２、２６４、２６６、２６８、２７０、２７２、２７４、２７６、２７８、２８０、２８２、２８４、２８６、２８８、２９０に以前に含まれていた値を各々含む。ピッチサーチにおいて、循環バッファは、ラッチ２６２〜２９２及び循環バッファのマルチプレクサ２６０及び２９４を含む。循環バッファ２５９の値を回転することにより、ラッチ２９２は第１及び第２サイクルで、−２ｂ及びｂ2を各々提供する。
【０１３０】
２つのサイクルの第２サイクルで、ラッチ２２８は重み付けされた合成スピーチサンプルの自動相関ＥｙＬｙＬを、乗算器２４０の第１入力に提供する。循環バッファ２５９はスケールされたピッチゲイン値ｂ2を、マルチプレクサ２９６を介して乗算器２４０の第２入力に提供する。積ｂ2ＥｙＬｙＬは乗算器２４０により、加算器２４２の第１入力に提供される。加算器２４２の第２入力には、マルチプレクサ２４６を介してラッチ２４４の出力積−２ｂＥｘｐｙＬが提供される。加算器２４２は−２ｂＥｘｐｙＬ＋ｂ2ＥｙＬｙＬを、ラッチ２４４に提供し格納する。循環バッファ２５９のラッチ２６２〜２９２の値は、前述したように回転される。
【０１３１】
以上の２サイクル処理は、スケールされたピッチゲイン値の全ての８対（−２ｂ、ｂ2）について繰り返される。現在のＭＳＥ値−２ｂＥｘｐｙＬ＋ｂ2ＥｙＬｙＬの計算に続く２つのサイクルの間、新たなＭＳＥ値が、−２ｂ及びｂ2値の新たな対を用いて計算される。ラッチ２４４が新ＭＳＥ値に更新される前に、現在のＭＳＥ値は、ラッチ２５０に格納された現在のピッチサブフレームに関する現在の最小ＭＳＥと比較される。現在のＭＳＥ値−２ｂＥｘｐｙＬ＋ｂ2ＥｙＬｙＬは、ラッチ２４４により減算器２４８のプラス入力に提供される。ラッチ２５０は現在の最小ＭＳＥ値を、減算器２４８のマイナス入力に提供する。制御要素２２０は減算器２４８からの差出力の結果をモニタする。
【０１３２】
この差がマイナスの場合、現在のＭＳＥ値は現在のサブフレームに関する新たな最小ＭＳＥであり、ラッチ２５０に格納され、対応するピッチラグ概算Ｌ＾及びピッチゲイン概算インデックスｂ＾は制御要素２２０内で更新される。その差がマイナスではない場合、現在のＭＳＥ値は無視される。
【０１３３】
各ピッチサブフレームの前に、ＤＳＰコア４はコマンドを最小化プロセッサ３３４に発送し、制御要素２２０に新たなピッチサブフレームが続くことを知らせる。このコマンドを受信すると、現在のピッチラグ及び現在のピッチゲインインデックスは制御要素２２０内で０に設定される。重み付けされた合成スピーチサンプルの新たな各シーケンスが最小化プロセッサ３３４に提供される前に、ＤＳＰコア４はコマンドを最小化プロセッサ３３４に発送し、制御要素２２０に重み付けされたスピーチサンプルの新たなシーケンスが続くことを知らせる。このコマンドを受信すると、制御要素２２０は現在のピッチラグ及び現在のピッチゲインインデックスを１だけインクリメントする。この値は１のピッチラグインクリメント及び０．２５のピッチゲインインクリメントに対応する。重み付けされた合成スピーチサンプルの第１シーケンスが最小化プロセッサ３３４に提供されている間、現在のピッチラグ及び現在のピッチゲインインデックスは１に等しくなる。この値はＬ＝１７のピッチラグ、及びｂ＝０．２５の正規化されたピッチゲインに対応する。
【０１３４】
又、各ピッチサブフレームの前に、現在のピッチラグ概算Ｌ＾及び現在のピッチゲイン概算インデックスｂ＾は０に設定され、無効ピッチラグ及びピッチゲインを示す。各ピッチサブフレームの間、制御要素２２０はラッチ２４４内の第１のマイナスＭＳＥを検出する。この値はラッチ２５０に格納され、対応するピッチラグ概算Ｌ＾及びピッチゲイン概算インデックスｂ＾は制御要素２２０内で更新される。これは各ピッチサブフレームでラッチ２５０内の最小化ＭＳＥを初期化するために行われる。ピッチサブフレームの間にマイナスのＭＳＥ値が生成されなかった場合、ピッチラグ概算Ｌ＾及びピッチゲイン概算インデックスｂ＾はサブフレームの終わりで０になる。
【０１３５】
これらの概算は制御要素２２０によりＤＳＰコア４に提供される。ＤＳＰコア４が無効ピッチラグ概算を受信した場合、最適ピッチゲインは０に設定され、ｂ＾＝０は零ＭＳＥに対応する。ピッチフィルタのピッチゲインが０に設定されることにより、ピッチラグは連続ではなくなる。ＤＳＰコア４が有効ピッチラグ概算Ｌ＾を受信すると、この値は最適ピッチラグとして使用され、使用される最適ピッチゲインは１〜８のピッチゲイン概算インデックスについて各々、０．２５、０．５、０．７５、１．０、１．２５、１．５、１．７５、及び２．０である。
【０１３６】
ピッチサーチにおいて、式４７のＭＳＥ関数の特性ＭＳＥ（Ｌ，ｂ）により、計算量を減少できる。現在のピッチラグの残りのＭＳＥ計算は、現在のピッチラグ内でまだ計算されている残りのＭＳＥ値が、ラッチ２５０に格納された現在の最小ＭＳＥより小さいＭＳＥ値を生じ得ないと判断された場合に中止できる。本実施例では、ピッチサーチ内の計算量を節約するための３つの技術が、最小化プロセッサ３３４内で採用される。１つの二次方程式が各ピッチラグ値Ｌについて形成される。これら二次方程式の全ては原点ｂ＝０及びＭＳＥ（Ｌ，ｂ）＝０を通過する。ピッチサーチ動作では詳しくサーチされないが、ピッチゲイン値ｂ＝０は可能なゲイン値のセットに含まれる。
【０１３７】
第１の計算的節約方法は、ＥｘｐｙＬがマイナスの時、現在のピッチサーチ処理でのＭＳＥ値の計算を中止することを含む。各サブフレームに関する最小ＭＳＥ上の上限を０に保証すると、全てのピッチゲイン値がプラスである。マイナスのＥｘｐｙＬはプラスのＭＳＥ値を生じ、従って次に最適な値である。
【０１３８】
第２の計算的節約方法は、ＭＳＥ関数の二次方程式的な特徴に基づく現在のピッチラグのピッチサーチ処理での残りのＭＳＥ値の計算を中止することを含む。ＭＳＥ関数ＭＳＥ（Ｌ，ｂ）は単調に増加するピッチゲイン値について計算される。プラスのＭＳＥ値が現在のピッチラグについて計算されたとき、現在のピッチラグに関する残りの全ＭＳＥ計算は、残りの全ＭＳＥ値が同様にプラスであるとして中止される。
【０１３９】
第３の計算的節約方法は、ＭＳＥ関数の二次方程式的特徴に基づく現在のピッチラグのピッチサーチ処理での残りのＭＳＥ値の計算を中止することを含む。ＭＳＥ関数ＭＳＥ（Ｌ，ｂ）は単調に増加するピッチゲイン値について計算される。新たな最小ＭＳＥではないと判断される現在のピッチラグ内で、ＭＳＥ値が計算されるとき、及び新たな最小ＭＳＥと判断された現在のピッチラグ内で、ＭＳＥ値が既に計算されたとき、現在のピッチラグ内の残りの全てのＭＳＥ計算は、新たな最小ＭＳＥより少ない値になり得ないとして中止される。以上３つの計算量節約方法は、最小化プロセッサ３３４の消費電力を著しく節約する。
【０１４０】
ブロック７６においてピッチ値は量子化される。各ピッチサブフレームについて、選択されたパラメータｂ＾及びＬ＾は送信コードＰＧＡＩＮ及びＰＬＡＧに変換される。最適ピッチラグインデックスｂ＾は１と１２７（１と１２７を含む）の間の整数である。
【０１４１】
ＰＬＡＧの値はｂ＾とＬ＾の両方に依存する。ｂ＾＝０の場合、ＰＬＡＧ＝０、その他の場合、ＰＬＡＧ＝Ｌ＾である。従って、ＰＬＡＧは７ビットを用いて示される。Ｂ＾＝０の場合、ＰＧＡＩＮ＝０、他の場合、ＰＧＡＩＮ＝ｂ＾−１である。従って、ＰＧＩＮは３ビットで示される。ここで、ｂ＾＝０及びｂ＾＝１は両方共、ＰＧＡＩＮ＝０を生じる。これら２つの場合はＰＬＡＧの値により区別され、第１の場合では０、第２の場合では０以外である。
【０１４２】
１／８の速度を除き、各ピッチサブフレームは、２つのコードブックサブフレームを包含する。各コードブックサブフフレームについて、最適コードブックインデックスＩ＾及び最適コードブックゲインＧ＾はブロック８０のコードブックサーチ処理内で判断される。１／８の速度について、１つのコードブックインデックス及び１つのコードブックゲインのみが判断され、そのコードブックインデックスは送信の前に放棄される。
【０１４３】
図９の実施例において、コードブック４００により提供される励起コードブックは２Ｍコードベクトルからなり、ここでＭ＝７である。
【０１４４】
この実施例での循環コードブックは、以下の表ＩＶに示される１２８個の値からなる。これらの値は１０進で示され、ＲＯＭ Ｅ１１４に格納されている。
【表４】
0004194851.tif 000016
【０１４５】
コードブックベクトルインデックスＩ及びコードブックゲインＧを選択するのに用いる方法は、ピッチサーチ処理に用いる方法と同様な合成分析法（analysis-by-synthesis method）である。選択されたコードブックインデックスＩ＾及び選択されたコードブックゲインＧ＾は、Ｉ＾及びＧ＾の許容値であり、これらの値は重み付けされた合成スピーチｙＩ（ｎ）と、ピッチ概算除去された知覚的に重み付けされたスピーチｘＣ（ｎ）の間の式５０の平均二乗エラーＭＳＥ（Ｉ，Ｇ）を最小にする値である。図９において、重み付けされたスピーチｘＣ（ｎ）は次のように発生する。現在のサブフレームに関するピッチサーチ内に発生した同一の知覚的に重み付けされたスピーチｘ（ｎ）がここでは使用される。
【０１４６】
１／８の速度内にピッチサーチがないために、ｘ（ｎ）がこの速度に関するコードブックサーチ内に発生される。ｘ（ｎ）は加算器４１０の第１入力に提供される。現在のサブフレーム及びピッチフィルタ５０６の現在の状態メモリに関するピッチサーチにおいて抽出された最適ピッチラグＬ＾及び最適ピッチゲインｂ＾を用いて、ピッチ合成フィルタ５０６のＺＩＲ ｐｚｉｒ（ｎ）がＺＩＲ要素４０６内で計算される。このＺＩＲは重み付けされた合成フィルタ４０８を通り、その出力ｐａｚｉｒ（ｎ）は加算器４１０のｘ（ｎ）から減算される。加算器４１０の出力ｘＣ（ｎ）は正規化され、最小化プロセッサ４１２に提供される。
【０１４７】
コードブックベクトルＣＩ（ｎ）が、コードブック４００により、コードブックインデックスＩに応答し、式５３に従って提供される。現在のピッチサブフレームに関するピッチサーチ処理において既に決定されている重み付けされた合成フィルタ４０４のインパルス応答ｈ（ｎ）が、この実施例では用いられる。しかし、１／８の速度では、ｈ（ｎ）は重み付けされた合成フィルタ４０４のコードブックサーチで計算される。本実施例では、インパルス応答ｈ（ｎ）は、最初の２０のサンプルに省略される。
【０１４８】
コードブックの再帰的特性のために、ピッチサーチで用いられるものと同様な再帰的コンボリューション処理が、コードブックサーチに使用される。このコンボリューションは次の式５２のようにして計算される。
【数１２】
0004194851.tif 000017
【０１４９】
インデックスＩに関するコードブックベクトルＣＩ（ｎ）は次式５３のように定義される。
【数１３】
0004194851.tif 000018
【０１５０】
全コンボリューションは式５４に従ってインデックスＩ＝０について行われる。出力ｙ０（ｎ）はＲＡＭ Ｃ１８２に格納される。他のインデックスＩ＝１〜Ｉ＝１２７について、コンボリューションは次式５５〜５７に示すように再帰的に行われる。
【数１４】
0004194851.tif 000019
【０１５１】
ピッチサーチでのように、コードブックサーチ再帰的コンボリューションの実行は、ＤＳＰコア４内の３分割ＲＡＭ及びＲＯＭ Ｅ１１４により最適化される。
【０１５２】
式５６内のコンボリューション値を計算し、各クロックサイクルで結果を生成することが可能となる。例えば、単一サイクルにおいて、ｙ１８（１０）が計算され、ｙ１８（９）が格納され、ｙ17（１０）がフェッチされ、ｈ（１０）がフェッチされる。従って、前述の式５６は各クロックサイクルで１つの結果を生成できる。各クロックサイクルで式５７に関する結果を生成することも可能である。例えば、単一クロックサイクルで、ｙ18（２４）が計算され、ｙ17（２４）がフェッチされ、ｙ18（２３）が格納される。
【０１５３】
式５６及び５７を実行することにより、各コードブックインデックス更新の間で、以前に計算した重み付けされた合成スピーチサンプルｙＩ-１（ｎ−１）を同一元のＲＡＭに移動する必要がない。この式５６及び５７を実行する能力は、ピンポン処理と呼ばれる格納機構及びハードウエア容量が必要になり、このピンポン処理は発送元（source）及び発送先（destination）のＲＡＭが各インデックス更新の間でスワップされる。奇数コードブックインデックス値についてｙＩ（ｎ）を計算するとき、ｙＩ-１（ｎ−１）値が３つのＲＡＭ中の第２のＲＡＭからフェッチされ、結果は第１のＲＡＭに格納される。このピンポン処理により、各コードブックインデックス更新の間に、以前計算したｙＩ-１（ｎ−１）値を同−ＲＡＭに移動する必要がなくなる。
【０１５４】
図１０はコードブックサーチの再帰的部分（初期の非再帰的及び再帰的コンボリューションの両方を含む）の実行を示すフローの一実施例である。ブロック４１４では、コードフックインデックスＩは最も小さい値（本実施例では０）に初期化される。サンプル番号ｎ及びインデックスｍは０に設定され、ｙ０（ｎ）の値は０に設定される。ブロック４１６〜４２４は、非再帰的方法で計算される初期コンボリューションループを形成する。初期コンボリューションの計算（ここでＩ＝０）は次式５８に従って行われる。
【数１５】
0004194851.tif 000020
【０１５５】
初期コンボリューションの計算は固定長ループを使用し、計算の複雑性を減少している。このようにして、式５８の内部ループ（ブロック３２０〜３２４）内に、可変長ループ構造を設定するために必要なオーバーヘッドは避けられる。各ｙ０（ｎ）値は、それが計算された後に最小化プロセッサ４１２に送られる。
【０１５６】
ブロック４１６はサンプルインデックスｎをテストする。ｎがコードブックサブフレーム長ＬＣに等しい場合、第１コンボリューションは完了し、フローはブロック４２６に移行する。ブロック４１６で、ｎがコードブックサブフレーム長より小さい場合、フローはブロック４２０に移行する。ブロック４３０はインデックスｍをテストする。ｍがこの実施例でフィルタインパルス応答長２０に等しい場合、現在の反復は完了し、フローはブロック４１８に移行し、ここでｍは０に設定され、ｎはインクリメントされる。フローはブロック４１６に戻る。ブロック４２０で、ｍがフィルタインパルス応答長２０より少ない場合、フローはブロック４３４に移行し、ここで部分的合計が累計される。フローはブロック４２２に移行し、ここでインデックスｍはインクリメントされ、フローはブロック４２０に進む。
【０１５７】
ブロック４１４から４２４により形成された初期コンボリューションループに含まれる動作は、ＤＳＰコア４内で実行され、ここで適切なピンポン処理が提供され、ブロック４２４に示すような積の累計を行うことができる。次の動作はピンポン計算処理を示し、これは単一クロックサイクルでＤＳＰコア４内で行われる。フィルタ応答値ｈ（ｍ＋１）がＲＡＭ Ａ１０４からフェッチされ、ＡＲＥＧ１３０に提供される。Ｃ０ＲＥＧ１６４内に存在する部分和ｙ０（ｎ＋ｍ−１）は、マルチプレクサ１６８及び１８０を介してＲＡＭ Ｃ１８２に提供される。
【０１５８】
この部分和ｙ０（ｎ＋ｍ−１）はＲＡＭ Ｃ１８２によりＤＲＥＧ１５６に提供される。ＡＲＥＧ１３０及びＢＲＥＧ１３４内の各値ｈ（ｍ）及びＣＩ（ｎ）は乗算器１３２に提供される。乗算器１３２の出力は、マルチプレクサ１３８及びディセーブルされたバレルシフター１４０を介して、加算器１４６の第１入力に提供される。部分和ｙ０（ｎ＋ｍ）はＤＲＥＧ１５６により、マルチプレクサ１５４、ディセープルされたインバータ１５２及びディセーブルされたバレルシフター１５０を介して、加算器１４６の第２入力に提供される。
【０１５９】
本実施例では、中心がクリツプされた（clipped）ガウスコードブック（Gaussian codebook）ＣＩ（ｎ）が大多数の０値を含む。この条件を節電特性として利用するために、ＤＳＰコア４は先ず、コードブックベクトルがブロック４２４内で０か否かチェックする。０の場合、ブロック４２４で通常行われる前述の乗算及び加算ステップはスキップされる（skipped）。この処理は乗算及び加算動作の約８０％を除去し、従って電力が節約できる。加算器１４６の出力はマルチプレクサ１４８を介してＣ０ＲＥＧ１６４に提供される。Ｃ０ＲＥＧ内のこの値はマルチプレクサ１６８及び１８０を介してＲＡＭ Ｃ１８２に提供される。インデックスｎがブロック４１６内のその最大許容値に達すると、初期コンボリューションは完了し、ＲＡＭ Ｃ１８２内の部分和はコンボリューションの最終結果となる。
【０１６０】
初期のコンボリューションが完了すると、フローはブロック４２６に移行し、ここで再帰的コンボリューションが、他のコードブックインデックス値に関する計算において行われる。
【０１６１】
ブロック４２６において、サンプルインデツクスｎは０に設定され、コードブックインデックスＩはインクリメントされる。フローはブロック４２８に移行する。ブロック４２８はＩをテストする。Ｉが１２８（本実施例での最大コードブックインデックス値）以上の場合、フローはブロック４３０に移行し、ここでコードブックサーチ動作は終結する。Ｉが１２７以下の場合、フローはブロック４３２に移行する。ブロック４３２は前述のピンポン動作を制御する。ブロック４３２では、Ｉが偶数か奇数か判定される。Ｉが偶数の場合、フローはブロック４４２に移行する（ケースＩで説明する動作）。Ｉが奇数の場合、フローはブロック４３４に移行する（ケースＩＩで説明する動作）。
【０１６２】
ケースＩ（コードブックインデックスＩが偶数の場合）
ブロック４４２では、ｙＩ（０）が式５５に従って計算される。アドレスユニットＡ１０２はアドレス値をＲＡＭ Ａ１０４に提供し、ＲＡＭ Ａ１０４はこれに応じてｈ（０）をマルチプレクサ１０８を介して、ＡＲＥＧ１３０に提供する。同一クロックサイクルで、アドレスユニットＥ１１２はアドレス値をＲＯＭ Ｅ１１４に提供し、ＲＯＭ Ｅ１１４はこれに応じてＣＩ（０）をマルチプレクサ１１６を介してＢＲＥＧ１３４に提供する。次のサイクルの間、ＡＲＥＧ１３０はｈ（０）を、及びＢＲＥＧ１３４はＣＩ（０）を乗算器１３２に提供し、ここで２つの値は乗算され、その積はマルチプレクサ１３８を介して、及びディセーブルされたバレルシフター１４０を介して加算器１４６の第１入力に供給される。加算器１４６の第２入力にはマルチプレクサ１５４、ディセーブルされたインバータ要素１５２及びバレルシフター１５２を介して０が提供される。加算器１４６の出力はＣ０ＲＥＧ１６４にマルチプレクサ１４８を介して提供される。同一クロックサイクルの間、ｙＩ-１（０）及びｈ（１）がＲＡＭ Ｂ１２２及びＲＡＭ Ａ１０４からフェッチされ、ＤＲＥＧ１５６及びＡＲＥＧ１３０に、マルチプレクサ１５８及び１００を各々介して提供される。
【０１６３】
ブロック４４４では、合成されたスピーチサンプルインデックスｎはインクリメントされる。制御ブロック４４６では、合成スピーチサンプルインデックスｎが２０より小さい場合、フローはブロック４４８に進む。
【０１６４】
ブロック４４８では、新たなｙＩ（ｎ）が各クロックサイクルで式５６に従って計算される。ｙＩ-１（ｎ−１）及びｈ（ｎ）の値を初期化するためにブロック４４８の最初の反復に先立って、適当な設定がブロック４４２内で前述したように行われる。ｙＩ（１９）の最終値を格納するために、ブロック４４８の最後の反復の次に、適当なクリーンアップも必要である。
【０１６５】
ブロック４４８の最初の反復において、ブロック４４２で計算されたｙＩ（０）は、Ｃ０ＲＥＧ１６４内に存在する。Ｃ０ＲＥＧ１６４はｙＩ（０）を、マルチプレクサ１６８及び１８０を介して、ＲＡＭＣ１８２に提供し、アドレスユニットＣ１８６からＲＡＭＣ１８２に提供されるアドレス値により格納する。
【０１６６】
ブロック４４８では、次の動作が単一クロックサイクルで実行される。ｙＩ-１（ｎ）値はＲＡＭＢ１２２により、アドレスユニットＢ１２０により提供されるアドレスに従い、マルチプレクサ１１８及び１５８を介して、ＤＲＥＧ１５６に提供される。インパルス応答値ｈ（ｎ＋１）はＲＡＭ Ａ１０４により、アドレスユニットＡ１０２により提供されるアドレスに従って、マルチプレクサ１０８を介して、ＡＲＥＧ１３０に提供される。ＤＲＥＧＩ５６はｙＩ-１（ｎ−１）を、マルチプレクサ１５４、ディセーブルされたインバータ要素１５２、及びバレルシフター１５０を介して、加算器１４６の第１入力に提供する。ＡＲＥＧ１３０はｈ（ｎ）を、及びＢＲＥＧ１３４はＣＩ（ｎ）を乗算器１３２に提供し、ここで２つの値は乗算され、その積はマルチプレクサ１３８を介して乗算器１３２により、ディセーブルされたバレルシフター１４０を介して、加算器１４６の第２入力に提供される。加算器１４６の出力はマルチプレクサ１４８を介してＣ０ＲＥＧ１６４に提供される。以前の反復で計算されたＣ０ＲＥＧ１６４の値は、マルチプレクサ１６８及び１８０を介してＲＡＭＣ１８２に格納され、最小化プロセッサ４１２に提供される。
【０１６７】
制御ブロック４４６では、合成されたスピーチサンプルインデックスｎが２０に等しい場合、最後の反復で計算されたｙＩ（１９）は、フローがブロック４５４に進む前に、マルチプレクサ１６８及び１２４を介して、循環バッファ内のＲＡＭ Ｂ１２２に格納され、最小化プロセッサ４１２に提供される。ケースＩの終わり。
【０１６８】
ケースＩＩ（コードブックインデックスＩが奇数の場合）
ブロック４３４において、ｙＩ（０）が式５５に従って計算される。アドレスユニットＡ１０２はＲＡＭＡ１０４にアドレス値を提供し、ＲＡＭＡ１０４はこれに応じてｈ（０）をマルチプレクサ１０８を介してＡＲＥＧ１３０に提供する。同一クロックサイクルで、アドレスユニットＥ１１２はアドレス値をＲＯＭ Ｅ１１４に提供し、ＲＯＭ Ｅ１１４はこれに応じてＣＩ（０）をマルチプレクサ１１６を介してＢＲＥＧ１３４に提供する。次のサイクルの間、ＡＲＥＧ１３０はｈ（０）を、及びＢＲＥＧ１３４はＣＩ（０）を乗算器１３２に提供し、ここで２つの値は乗算され、その積は乗算器１３８を介して、ディセーブルされたバレルシフター１４０を介して加算器１４６の第１入力に提供される。加算器１４６の第２入力には、マルチプレクサ１５４、ディセーブルされたインバータ要素１５２、及びバレルシフター１５２を介して０が提供される。加算器１４６の出力はＣ０ＲＥＧ１６４にマルチプレクサ１４８を介して提供される。同一クロックサイクルの間、ｙＩ-１（０）及びｈ（１）は、ＲＡＭ Ｃ１８２及びＲＡＭＡ１０４からフェッチされ、ＤＲＥＧ１５６及びＡＲＥＧ１３０に、マルチプレクサ１５８及び１００を各々介して提供される。
【０１６９】
ブロック４３６では、合成されたスピーチサンプルインデックスｎがインクリメントされる。制御ブロック４３８では、合成されたスピーチサンプルインデックスｎが２０より小さい場合、フローはブロック４４０に進む。
【０１７０】
ブロック４４０では、新たなｙＩ（ｎ）値が各クロックサイクルで、式５６に従って計算される。ｙＩ-１（ｎ）及びｈ（ｎ）の値を初期化するために、ブロック４４０の最初の反復に先立って必要な適当な設定が、前述したようにブロック４３４で行われる。ｙＩ（１９）の最終値を格納するために、ブロック４４０の最後の反復の次に、適当なクリーンアップも必要である。
【０１７１】
ブロック４４０の最初の反復において、ブロック４３４で計算されたｙＩ（０）はＣ０ＲＥＧ１６４内に存在する。Ｃ０ＲＥＧ１６４はｙＩ（０）を、マルチプレクサ１６８及び１８０を介して、ＲＡＭ Ｂ１２２に、アドレスユニットＢ１２０からのＲＡＭ Ｂのアドレス値を用いて格納する。ｙＩ（０）はＲＡＭ Ｂ１２２に提供されるのと同時に、最小化プロセッサ４１２に提供する。
【０１７２】
ブロック４４０では、次に示す動作が単一クロックサイクルで実行される。ｙＩ-１（ｎ）値はＲＡＭＣ１８２により、アドレスユニットＣ１８４により提供されるアドレスに従って、マルチプレクサ１５８を介してＤＲＥＧ１５６に提供される。インパルス応答ｈ（ｎ＋１）はＲＡＭ Ａ１０４により、アドレスユニットＡ１０２により提供されるアドレスに従って、マルチプレクサ１０８を介してＡＲＥＧ１３０に提供される。ＤＲＥＧ１５６はｙＩ-１（ｎ−１）を、マルチプレクサ１５４、ディセーブルされたインバータ要素１５２、及びバレルシフター１５０を介して加算器１４６の第１入力に提供する。
【０１７３】
ＡＲＥＧ１３０はｈ（ｎ）を、及びＢＲＥＧ１３４はＣＩ（ｎ）を乗算器１３２に提供し、ここで２つの値は乗算され、その積は乗算器１３２により、マルチプレクサ１３８を介し、バレルシフター１４０を介して、加算器１４６の第２入力に提供される。加算器１４６の出力はマルチプレクサ１４８を介してＣ０ＲＥＧ１６４に提供される。以前の反復で計算されたＣ０ＲＥＧ１６４の値は、マルチプレクサ１６８及び１２４を介してＲＡＭＢ１２２に格納され、最小化プロセッサ４１２に提供される。
【０１７４】
ブロック４３６では、合成されたスピーチサンプルインデックスｎはインクリメントされる。制御ブロック４３８では、合成されたスピーチサンプルインデックスｎが２０に等しい場合、フローがブロック４５４に進む前に、最終反復で計算されたｙＩ（１９）はマルチプレクサ１６８及び１２４を介して、ＲＡＭ Ｂ１２２に提供され、ＲＡＭ Ｂ１２２の循環バッファ内に格納され、最小化プロセッサ４１２に提供される。ケースＩＩの終わり。
【０１７５】
ブロック４５４の最初の反復の前に、ｙＩ-１（１９）がＲＡＭ Ｂ１２２内の循環バッファからフェッチされ、ＢＲＥＧ１３４にロードされる。ｙＩ-１（２０）がＲＡＭＢ１２２内の循環バッファからフェッチされ、ＢＲＥＧ１３４にロードされた後、ｙＩ-１（１９）はＢＲＥＧ１３４からＣ０ＲＥＧ１６４へ移動される。
【０１７６】
ブロック４５４では、新たなｙＩ（ｎ）が、各クロックサイクルで式５７に従って計算される。次の動作が単一クロックサイクルの間に実行される。ｙＩ-１（ｎ−２）がＢＲＥＧ１３４によりＣ０ＲＥＧ１６４に提供される。ｙＩ-１（ｎ−３）はＲＡＭ Ｂ１２２内の循環バッファからフェッチされ、ＢＲＥＧ１３４にロードされる。Ｃ０ＲＥＧ１６４に存在するｙＩ-１（ｎ−１）は最小化プロセッサ４１２に提供される。ブロック４５４の最終反復の次に、ｙＩ-１（ＬＣ−２）がＲＡＭ Ｂ１２２内の循環バッファから削除される。各コードブックインデックスにおいて、ＲＡＭＢ１２２内の循環バッファに対して要素を加え及び要素を減算することにより、循環バッファのサイズはＬＣ−１９に維持される。ＲＡＭＢ１２２内の循環バッファの導入は、アドレスユニットＢ１２０内の専用アドレスレジスタを介して行われ、このレジスタはシーケンシャルメモリが自動的に循環形式でアドレスできるように、丸め込み点を示す。
【０１７７】
ブロック４５０では、合成されたスピーチサンプルインデックスｎがインクリメントされる。制御ブロック４５２では、合成されたスピーチサンプルインデックスｎがＬＣより小さい場合、フローは再びブロック４５４に戻る。合成されたスピーチサンプルインデックスｎがＬＣに等しい場合、全てのｙＩ（ｎ）値が現在のコードブックインデックス値Ｉについて計算されており、フローはブロック４２６に戻る。
【０１７８】
合成されたスピーチサンプルｙＩ（ｎ）の計算に先立ち、知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）の長さＬＣのシーケンスは、最小化プロセッサ４１２に提供される。前述したように、コードブックベクトルインデックス値Ｉ＝０からＩ＝１２７までの合成されたスピーチサンプルｙＩ（ｎ）の長さＬＣのシーケンスは、初期及び再帰的コンボリューション計算の間に、最小化プロセッサ４１２に提供される。合成されたスピーチサンプルは最小化プロセッサ４１２に次々に提供される。最小化プロセッ４１２は合成された各スピーチサンプルシーケンスｙＩ（ｎ）の自動相関、及び合成された各スピーチサンプルシーケンスｙＩ（ｎ）と知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）のシーケンスとの間の交差相関を計算する。これらの相関値から、最小化プロセッサ４１２は、合成された各スピーチサンプルシーケンスｙＩ（ｎ）と知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）のシーケンスとの間のＭＳＥ相対測定値を計算する。
【０１７９】
各コードブックベクトルＩについて、ＭＳＥは合成されたスピーチサンプルシーケンスのコードブックゲインＧの有り得る全ての値に関して計算される。最小化プロセッサ４１２は、全てのコードブックベクトルインデックス値Ｉに対する最小ＭＳＥ、及び有り得るコードゲイン値Ｇを、現在のコードブックベクトルインデックスＩと現在のコードブックゲインＧを介して、最小ＭＳＥの値を維持することにより計算する。
【０１８０】
最小ＭＳＥに対応するコードブックベクトルインデックス概算Ｉ＾及びコードブックゲインインデックス概算Ｇ＾も、最小化プロセッサ４１２により保持される。新ＭＳＥ値は最小化プロセッサ４１２内に維持されているＭＳＥ最小値と各々比較される。新ＭＳＥが最小ＭＳＥより小さい場合、最小ＭＳＥは新ＭＳＥ値に置き代わり、コードブックベクトルインデックス概算Ｉ＾及びコードブックゲインインデックス概算Ｇ＾は更新され、新たな最小ＭＳＥを反映する。
【０１８１】
最小化プロセッサ４１２に保持されている最小ＭＳＥと、対応するコードブックベクトルインデックス概算Ｉ＾及びコードブックゲイン概算インデックスＧ＾は、各コードブックサブフレームで、そのコードブックサブフレームの間に計算された第１のＭＳＥ値を用いて初期化される。全てのコードブックベクトルインデックスＩ及び全てのコードブックゲイン値Ｇが検討された後、コードブックベックベクトルインデックス概算Ｉ＾及びコードブックゲインイン概算インデックスＧ＾は各々、現在のコードブックサブフレームに対する最適なコードブックベクトルインデックス及び最適なコードブックゲインインデックスである。
【０１８２】
最小化プロセッサ４１２は最適なコードブックベクトルインデックスＩ＾及び最適なコードブックゲインインデックスＧ＾を、入力ポート１２を介してＤＳＰコア４に提供する。最適なコードブックベクトルインデックスＩ＾及び最適なコードブックゲインインデックスＧ＾は、知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）と、重み付けされた合成スピーチサンプルｙＩ（ｎ）の間の最小ＭＳＥを生じるものである。ＭＳＥは次式５９〜６１によって示されるコードブックインデックスＩと、コードブックゲインＧの関数である。
【数１６】
0004194851.tif 000021
【０１８３】
ＥｘＣｘＣは知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）の自動相関である。ＥｘＣｙＩは知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）と、重み付けされた合成スピーチサンプルｙＩ（ｎ）の間の自動相関である。ＥｙＩｙＩは知覚的に重み付けされた合成スピーチサンプルｙＩ（ｎ）の自動相関である。
【０１８４】
知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）の自動相関ＥｘＣｘＣは、コードブックゲインＧの関数ではない。ＥｘＣｘＣは各コードブックサブフレームの間、一定値であるから、最適コードブックベクトルインデックス及び最適コードブックゲインの選択に影響することはない。コードブックベクトルインデックスＩ及びコードブックゲインＧに対する式５９〜６１の最小化は、次の式６２の最小化処理と等価である。
【０１８５】
MSE(I,G)=-2GExcy1+G2Ey1y1                            （６２）
最小化プロセッサ４１２は、重み付けされた合成スピーチサンプルシーケンスｙＩ（ｎ）の自動相関ＥｙＩｙＩ、及び知覚的に重み付けされたスピーチサンプルシーケンスｘＣ（ｎ）と、重み付けされた合成スピーチサンプルシーケンスｙＩ（ｎ）の間の自動相関ＥｘＣｙＩを計算する。各相関対（ＥｘＣｙＩ，ＥｙＩｙＩ）に対して、最小化プロセッサ４１２は、前述の式６２に従って、コードブックゲインＧのセットについて、相対ＭＳＥを計算する。相関ＥｘＣｙＩ及びＥｙＩｙＩの計算は、最小化プロセッサ４１２内で同時に行われる。相対ＭＳＥ値が計算され、ＭＳＥ最小化に関する決定がコードブックベクトルインデックスＩについて行われる一方で、相関値はコードブックベクトルインデックスＩ＋１について計算される。
【０１８６】
図６ａ及び６ｂは最小化プロセッサ４１２の一実施例を示す。知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）は、ＤＳＰコア４により、最小化プロセッサ４１２に提供される。コードブックゲイン値の２つのセットはＤＳＰコア４により最小化プロセッサ４１２に提供される。１つのセットはプラスのコードブックゲイン値Ｇのためのもので、第２のセットはマイナスのコードブックゲイン値−Ｇのためのものである。最大定格速度及び１／２定格において、スケールされたコードブックゲイン値−２Ｇ（＋４．０ｄＢステップで、Ｇ＝−４．０ｄＢ〜Ｇ＝＋８．０ｄＢ）がＤＳＰコア４により、マルチプレクサ２６０を介して、ラッチ２９２、２８８、２８４及び２８０の格納部に各々提供される。
【０１８７】
１／４定格及び１／８では、スケールされたコードブックゲイン値−２Ｇ（＋２．０ｄＢステップで、Ｇ＝−４．０ｄＢ〜Ｇ＝＋２．０ｄＢ）がＤＳＰコア４により、マルチプレクサ２６０を介して、ラッチ２９２、２８８、２８４及び２８０の格納部に各々提供される。対応するスケールされたコードブックゲイン値Ｇ2は、マルチプレクサ２６０を介して、ラッチ２９０、２８６、２８２及び２７８の格納部に各々提供される。最大定格速度及び１／２定格において、スケールされたコードブックゲイン値２Ｇ（＋４．０ｄＢステップで、Ｇ＝−４．０ｄＢ〜Ｇ＝＋８．０ｄＢ）がマルチプレクサ２６０を介して、ラッチ２７６、２７２、２６８及び２６４の格納部に各々提供される。１／４定格及び１／８定格では、スケールされたコードブックゲイン値２Ｇ（＋２．０ｄＢステップで、Ｇ＝−４．０ｄＢ〜Ｇ＝＋２．０ｄＢ）がマルチプレクサ２６０を介して、ラッチ２７６、２７２、２６８及び２６４の格納部に各々提供される。
【０１８８】
対応するスケールされたコードブックゲイン値Ｇ2は、マルチプレクサ２６０を介して、ラッチ２７４、２７０、２６６及び２６２の格納部に各々提供される。マルチプレクサ２６０は値をラッチ２６２に直接提供する。ラッチ２６２はラッチ２６４に値を直接提供する。ラッチ２７６はラッチ２７８に値をマルチプレクサ２４９を介して提供する。ラッチ２９０はラッチ２９２に値を直接提供する（以下同様）。ラッチ２６２〜２９２のシフト値及びマルチプレクサ２９４により、マルチプレクサ２６０を介して循環バッファ２５９内の全てのラッチに値を提供できる。
【０１８９】
コードブックサーチにおいて、２つの循環バッファが循環バッファ２５９内に提供される。知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）、及びコードブックゲイン値の格納の次に、重み付けされた合成スピーチサンプルｙＩ（ｎ）のシーケンスがラッチ２１０に提供される。重み付けされた合成スピーチサンプルｙＩ（ｎ）はラッチ２１０により、乗算器２１６の２つの入力に提供され、乗算器２１６は重み付けされた合成スピーチサンプルの二乗（ｙＩ（ｎ））2を生成する。
【０１９０】
ラッチ２１０も重み付けされた合成スピーチサンプルｙＩ（ｎ）を、乗算器２１８の第１入力に提供する。ＲＡＭ Ｘ２１２は知覚的に重み付けされたスピーチサンプルｘＣ（ｎ）を、ラッチ２１４を介して乗算器２１８の第２入力に提供する。乗算器２１８は積ｘＣ（ｎ）ｙＩ（ｎ）を計算する。新たな二乗（ｙＩ（ｎ））2及び新たな積ｘＣ（ｎ）ｙＩ（ｎ）は、乗算器２１６及び２１８により、各サイクルで各々計算される。サンプルインデックスｎは０からＬＣ−１まで、各コードブックベクトルインデックスＩについて変化する。
【０１９１】
重み付けされた合成スピーチサンプルの二乗（ｙＩ（ｎ））2はアキュムレータ２２１に提供される。積ｘＣ（ｎ）ｙＩ（ｎ）はアキュムレータ２３１に提供される。アキュムレータ２２１は、各コードブックベクトルインデックスＩに対するＬＣ二乗の合計を計算する。アキュムレータ２３１は各コードブックベクトルインデックスＩに対するＬＣ積の合計を計算する。
【０１９２】
新たな各コードブックベクトルインデックスの前に、ラッチ２２６にはマルチプレクサ２２４を介して０が提供される。これでアキュムレータ２２１は、現在のコードブックベクトルインデックスＩに対する自動相関Ｅｙｌｙｌを計算する準備が整う。アキュムレータ２２１では、二乗（ｙＩ（ｎ））2が加算器２２２の第１入力に提供される。不足している合計はラッチ２２６により加算器２２２の第２入力に提供される。新たに計算された不足している合計は加算器２２２により、マルチプレクサ２２４を介してラッチ２２６に格納される。コードブックベクトルインデックスＩに関する全てのＬＣに対する累計の後、自動相関Ｅｙｌｙｌはラッチ２２８に格納される。
【０１９３】
新たな各コードブックベクトルの前に、ラッチ２３６には、マルチプレクサ２３４を介して０が提供される。これでアキュムレータ２３１は現在のコードブックベクトルインデックスＩに対する交差相関ＥｘＣｙｌを計算する準備が整う。アキュムレータ２３１では、積ｘＣ（ｎ）ｙＩ（ｎ）が加算器２３２の第１入力に提供される。不足している合計はラッチ２３６により加算器２３２の第２入力に提供される。新たに計算された不足合計は、加算器２３２により、マルチプレクサ２３４を介してラッチ２３６に格納される。コードブックベクトルインデックスＩに対する全てのＬＣ値について累計した後、交差相関ＥｘＣｙｌはラッチ２３８に格納される。
【０１９４】
式６２により示されるＭＳＥは、以下に説明する２サイクル処理により計算される。
【０１９５】
２サイクルの第１サイクルにおいて、ラッチ２３８は知覚的に重み付けされたスピーチサンプルと重み付けされた合成スピーチサンプル間の交差相関ＥｘＣｙｌを、マルチプレクサ２３０を介して乗算器２４０の第１入力に提供する。制御要素２２０はラッチ２３８により提供されたＥｘＣｙｌをモニタする。ＥｘＣｙｌがマイナスではない場合、ラッチ２９２はスケールされたコードブックゲイン値−２Ｇを、マルチプレクサ２９６を介して乗算器２４０の第２入力に提供する。その積−２ＧＥｘＣｙｌは乗算器２４０により加算器２４２の第１入力に提供される。ＥｘＣｙｌがマイナスの場合、ラッチ２７６はスケールされたコードブックゲイン値２Ｇを、マルチプレクサ２９６を介して乗算器２４０の第２入力に提供する。その積２ＧＥｘＣｙｌは乗算器２４０により、加算器２４２の第１入力に提供される。
【０１９６】
加算器２４２の第２入力にはマルチプレクサ２４６を介して０が提供される。加算器２４２の出力はラッチ２４４に格納される。ＥｘＣｙｌの符号は制御要素２２０に格納される。ＥｘＣｙｌの１及び０の符号は、ＥｘＣｙｌのマイナス及び非マイナスに各々対応する。ラッチ２６２〜２７６内の値は、ラッチ２７６の出力をラッチ２６２にマルチプレクサ２６０を介して提供することにより回転する。この回転の後、ラッチ２６２、２６４、２６６、２６８、２７０、２７２、２７４及び２７６は、以前、ラッチ２７６、２６２、２６４、２６６、２６８、２７０、２７２及び２７４に各々含まれていた値を含むことになる。
【０１９７】
ラッチ２７８〜２９２内の値は、ラッチ２９２の出力をラッチ２７８にマルチプレクサ２９４を介して提供することにより回転する。この回転の後、ラッチ２７８、２８０、２８２、２８４、２８６、２８８、２９０及び２９２は、以前、ラッチ２９２、２７８、２８０、２８２、２８４、２８６、２８８及び２９０に各々含まれていた値を含むことになる。１つの循環バッファはラッチ２６２〜２７６及びマルチプレクサ２６０を含む。第２循環バッファはラッチ２７８〜２９２及びマルチプレクサ２９４を含む。循環バッファ２５９内の２つの循環バッファの第１のバッファの値を回転することにより、ラッチ２９２は第１及び第２サイクルに−２Ｇ及びＧ2を提供する。
【０１９８】
相関及び交差相関値の各対について、１つのコードブックゲイン対のセットのみが循環バッファ２５９により提供される。コードブックゲイン対のセットが、ＥｘＣｙｌのマイナスの値について、ラッチ２６２〜２７６及びマルチプレクサ２６０からなる循環バッファにより提供される。コードブックゲイン対のセットが、ＥｘＣｙｌの非マイナスの値について、ラッチ２７８〜２９２及びマルチプレクサ２６０からなる循環バッファにより提供される。
【０１９９】
２サイクルの第２サイクルでは、ラッチ２２８はＥｙｌｙｌを、マルチプレクサ２３０を介して乗算器２４０の第１入力に提供する。マルチプレクサ２９６を介して、ラッチ２７６及び２９２はコードブックゲイン値Ｇ2を、ＥｘＣｙｌのマイナス及び非マイナスの値に対応して、乗算器２４０の第２入力に各々提供する。その積Ｇ2Ｅｙｌｙｌは乗算器２４０により、加算器２４２の第１入力に提供される。加算器２４２の第２入力には、マルチプレクサ２４６を介してラッチ２４４の出力±２ＧＥｘＣｙｌが提供される。加算器２４２は±２ＧＥｘＣｙｌ＋Ｇ2Ｅｙｌｙｌをラッチ２４４に格納する。循環バッファ２５９のラッチ２６２〜２９２の値は前述したように回転される。
【０２００】
前述の２サイクル処理は、各コードブックインデックスＩに対するコードブックゲイン値の４つの全ての対（±２Ｇ，Ｇ2）について繰り返される。現在のＭＳＥ値±２ＧＥｘＣｙｌ＋Ｇ2Ｅｙｌｙｌの計算に続く２サイクルの間、新たなＭＳＥ値が±２Ｇ及びＧ2値の次の対を用いて計算される。ラッチ２４４が新たなＭＳＥ値で更新される前に、現在のＭＳＥ値は、ラッチ２５０に格納されている現在のコードブックサブフレームに対する最小ＭＳＥと比較される。現在のＭＳＥ値±２ＧＥｘＣｙｌ＋Ｇ2Ｅｙｌｙｌは、ラッチ２４４により減算器２４８のプラス入力に提供される。
【０２０１】
ラッチ２５０は現在の最小ＭＳＥ値を減算器２４８のマイナス入力に提供する。制御要素２２０は減算器２８から出力される結果的な差をモニタする。この差がマイナスの場合、現在のＭＳＥ値は現在のコードブックサブフレームに対する新たな最小ＭＳＥであり、ラッチ２５０に格納され、それに対応するコードブックベクトルインデックス概算Ｉ＾及びコードブックゲイン概算インデックスＧ＾は制御要素２２０内で更新される。この差が非マイナスの場合、現在のＭＳＥ値は無視される。
【０２０２】
各コードブックサブフレームの前に、ＤＳＰコア４は最小化プロセッサ４１２にコマンドを発送し、制御要素２２０に新コードブックサブフレームが続くことを知らせる。このコマンドを受信すると、現在のコードブックベクトルインデックス及び現在のコードブックゲインインデックスは制御要素２２０において０に設定される。重み付けされた合成スピーチサンプルの新たな各シーケンスが最小化プロセッサ４１２に提供される前に、ＤＳＰコア４は最小化プロセッサ４１２にコマンドを発送し、制御要素２２０に重み付けされた合成スピーチサンプルの新たな各シーケンスが続くことを知られる。
【０２０３】
このコマンドを受信すると、制御要素２２０は現在のコードブックベクトルインデックス及び現在のコードブックゲインインデックスを１だけインクリメントし、これは１のコードブックベクトルインデックスのインクリメント及び速度に応じて２ｄＢ又は４ｄＢのコードブックゲインのインクリメントに対応する。重み付けされた合成スピーチサンプルの第１シーケンスが最小化プロセッサ４１２に提供される間、現在のコードブックベクトルインデックス及び現在のコードブックゲインインデックスは１に等しく、これは０のコードブックインデックスベクトル及び速度に応じて−８ｄＢ又は−４ｄＢのコードブックゲインのインクリメントに対応する。
【０２０４】
各コードブックサブフレームの間、第１ＭＳＥ値はラッチ２５０に格納され、対応するコードブックベクトルインデックス概算Ｉ＾及びコードブックゲイン概算インデックスＧ＾は制御要素２２０内で更新される。これは、各コードブックサブフレームで最小ＭＳＥを初期化するために行われる。最小ＭＳＥ概算に対応するコードブックベクトルインデックス及びコードブックゲインインデックスは、制御要素２２０によりＤＳＰコア４に、最小ＭＳＥに対応する交差相関ＥｘＣｙｌの符号と共に提供される。ＤＳＰコア４はＥｘＣｙｌに関する１を受信すると、最適コードブックゲインを−Ｇに設定する。ＤＳＰコア４は制御要素２２０により提供されるコードブックベクトルインデックス概算及びコードブックゲイン概算インデックスを使用して、最適コードブックベクトル及び最適コードブックゲインを決定する。
【０２０５】
最大定格速度及び１／２定格で、最適コードブックゲインＧは、コードブックゲインインデックスＧ＾＝１〜Ｇ＾＝４の各々について、−４ｄＢ、０ｄＢ、＋４ｄＢ及び＋８ｄＢである。１／４定格及び１／８定格で、最適コードブックゲインＧは、コードブックゲインインデクスＧ＾＝１〜Ｇ＾＝４の各々について、−４ｄＢ、−２ｄＢ、０ｄＢ及び＋２ｄＢである。
【０２０６】
コードブックサーチにおいて、式６２のＭＳＥ関数ＭＳＥ（Ｉ，Ｇ）の特性により、コンピュータ処理を節約できる。現在のコードブックベクトルに対する他のＭＳＥ計算は、残りのＭＳＥ値が（現在のコードブックベクトルについての計算が行われていても）ラッチ２５０内に格納された現在の最小ＭＳＥより少ないＭＳＥ値を生じることはないと判断された場合、中止できる。
【０２０７】
本実施例では、コードブックサーチでのコンピュータ計算を節約するために３つの技術が、最小化プロセッサ４１２において適用される。ＭＳＥ関数ＭＳＥ（Ｉ，Ｇ）はＧ内で二次方程式である。１つの二次方程式が各コードブックベクトルインデックスＩについて計算される。これら全ての二次方程式は原点Ｇ＝０及びＭＳＥ（Ｉ，Ｇ）＝０を通る。
【０２０８】
第１のコンピュータ処理の節約は、ＥｘＣｙｌの符号に応じて、プラス又はマイナスのコードブックゲイン値の一方をサーチすることを含む。ＥｘＣｙｌのマイナスの値及びマイナスのゲイン値は、式６２の項−２ＧＥｘＣｙｌに対してマイナスの値を生じる。ＥｘＣｙｌのプラスの値及びプラスのゲイン値も、式６２の項−２ＧＥｘＣｙｌに対してマイナスの値を生じる。なぜなら、式６２の項Ｇ2Ｅｙｌｙｌは常にプラスで、項−２ＧＥｘＣｙｌのマイナスの値はＭＳＥを最小化する傾向があるからである。コードブックゲイン対の２つのセットは循環バッファ２５９に提供され、１つはプラスのコードブックゲイン値で、第２のものはマイナスコードブックゲイン値である。このようにして、ゲイン値の４つの対のみが、各コードブックベクトルインデックスＩに対して８つのゲイン対の代わりに使用される。
【０２０９】
第２のコンピュータ処理節約方法は、ＭＳＥ関数の二次方程式的特徴に基づいて、現在のコードブックベクトルのコードブックサーチ処理での他のＭＳＥ値の計算を中止することを含む。ＭＳＥ関数ＭＳＥ（Ｉ，Ｇ）は、単調に増加するコードブックゲイン値について計算される。プラスのＭＳＥ値が現在のコードブックベクトルについて計算されたとき、現在のコードブックベクトルに対する残り全てのＭＳＥ計算は、対応するＭＳＥ値が現在のＭＳＥ値より大きいとして中止される。
【０２１０】
第３のコンピュータ処理節約方法は、ＭＳＥ関数の二次方程式的特徴に基づいて、現在のコードブックインデックスベクトルのコードブックサーチ処理での他のＭＳＥ値の計算を中止することである。ＭＳＥ関数ＭＳＥ（Ｉ，Ｇ）は、単調に増加するコードブックゲイン値について計算される。ＭＳＥ値が、新たな最小ＭＳＥではないと判断された現在のコードブックベクトル内で計算されるとき、及びＭＳＥ値が、新たな最小ＭＳＥであると既に判断された現在のコードブックベクトル内で計算されたとき、現在のコードブックベクトルでの残り全てのＭＳＥ計算は、残りのＭＳＥ値は新たなＭＳＥより小さくなくことはないとして中止される。以上３つのコンピュータ処理節約方法により、最小化プロセッサ４１２内の電力消費を著しく削減できる。
【０２１１】
ブロック８４ではコードブック値が量子化される。ブロック８６は全てのサブフレームが処理されたかチェックする。全てのコードブックサブフレームがまだ処理されていない場合、フローはブロック８０に戻る。全てのコードブックサブフレームが処理さている場合、フローはブロック８８に進む。ブロック８８は全てのピッチサブフレームが処理されたかチェックする。全てのピッチサブフレームがまだ処理されていない場合、フローはブロック７０に戻る。全てのピッチサブフレームが処理されている場合、フローはブロック９０に進む。
【０２１２】
ブロック９０では、エンコード結果が特定フォーマットでパックされる（packed）。最大定格速度（full rate）で、２２バイトのデータがマイクロプロセッサ（図示されず）により読み込まれる。１／２定格（half rate）では、１０バイトが読み込まれ、１／４では５バイト、１／８では２バイト読み込まれる。最大定格速度では１１のパリティチェックビットが発生されてエラー校正が行われ、最大定格速度データの最上位１８ビットの検出が行われる。
【０２１３】
送信器でのエンコーダは、フィルタメモリを更新するために、受信器でのデコーダの状態を保持しなければならない。このフィルタメモリはエンコーダにより、ピッチ及びコードブックサーチ処理に用いられる。本実施例では、エンコーダは全てのコードブックサブフレームの後に使用されるデコーダ形式を含んでいる。
【０２１４】
次に説明するデコーディング動作が、エンコーダの一部としてＤＳＰコア４内で行われる。図１１において、現在のコードブックサブフレームについて決定された最適コードブックベクトルインデックスＩ＾及び最適コードブックゲインＧ＾が、スケールされたコードブックベクトルＣｄ（ｎ）を発生するのに使用される。１／８の速度を除き、コードブック５０２には現在のコードブックサブフレームについて決定された最適コードブックインデックスＩ＾が提供され、その結果、対応する励起ベクトルを乗算器５０４の第１入力に提供する。
【０２１５】
１／８の速度の場合、疑似ランダムシーケンスがＣｄ（ｎ）に対して疑似ランダムベクトル発生器５００により発生され、このシーケンスは乗算器５０４の第１入力に提供される。現在のコードブックサブフレームについて決定された最適コードブックゲインＧ＾は乗算器５０４の第２入力に提供される。このシーケンスは受信器のデコーダの場合と同一の疑似ランダム発生動作により発生される。
【０２１６】
スケールされたコードブックベクトルＣｄ（ｎ）はピッチ合成フィルタ５０６に提供され、このフィルタはフォルマント残余Ｐｄ（ｎ）を発生する。ピッチ合成フィルタメモリは、発生したスピーチの最後のサンプルから得られる最終状態により初期化される。ピッチ合成フィルタ５０６は、現在のピッチサブフレームについて決定された最適ピッチラグＬ＾及び最適ピッチゲインｂ＾を使用する。１／８の速度に対して、最適ピッチゲインは０に設定される。ピッチ合成フィルタメモリの最終状態は、前述したように次のピッチサブフレームに対するスピーチを発生するため及び次のピッチサーチに使用するために、及びエンコーダでのデコーディング動作用に保持される。
【０２１７】
重み付けされたフォルマント合成フィルタ５０８は、フォルマント残余Ｐｄ（ｎ）から出力Ｙｄ（ｎ）を発生する。このフィルタは、発生されたスピーチの最後のサンプルから得られる最終状態により初期化される。現在のサブフレームについて補間されたＬＳＰ値から計算されたＬＰＣ係数は、このフィルタに対する係数として用いられる。このフィルタの最終状態は、次のコードブックサブフレームに対してスピーチを発生するために使用され、次のピッチ及びコードブックサーチで使用される。
【０２１８】
ブロック４４及び５０に示すデコーディング動作はＤＳＰコア４で行われる。ＡＳＩＣはマイクロプロセッサ（図示されず）からマイクロプロセッサインターフェース４２を介してパケットを特定フォーマットで受信する。ＤＳＰコア４はこのパケット内のデータをデコードし、スピーチサンプルを合成するためにそれを使用し、これらサンプルはＰＣＭインターフェース２を介してコーデック（codec）（図示されず）に供給される。ＤＳＰコア４では、受信したパケットを開き、スピーチサンプルを合成するために必要なデータを得る。そのデータはエンコーディング速度、ＬＳＰ周波数、及びその速度での対応するサブフレームに関するピッチとコードブックパラメータを含む。受信したパケットデータからのスピーチサンプルの合成は、図１２に示すようにＤＳＰコア４で行われる。
【０２１９】
図１２において、現在のコードブックサブフレームに対応する最適コードブックベクトルインデックスＩ＾及び最適コードブックゲインＧ＾は、スケールされたコードブックベクトルＣｄ（ｎ）を発生するためにデコーダにより使用される。１／８の速度を除き、コードブック５２２には現在のコードブックサブフレームに対応する最適コードブックインデックスＩ＾が提供され、その結果、対応する励起ベクトルを乗算器５２４の第１入力に提供する。
【０２２０】
１／８の速度の場合、疑似ランダムシーケンスがＣｄ（ｎ）に対して疑似ランダムベクトル発生器５０により発生され、乗算器５２４の第１入力に提供される。このシーケンスは受信器でデコーダにより用いられるのと同一の疑似ランダム発生動作により発生する。現在のコードブックサブフレームに対応する最適コードブックゲイン値Ｇ＾は乗算器５２４の第２入力に提供される。
【０２２１】
スケールされたコードブックベクトルＣｄ（ｎ）はピッチ合成フィルタ５２６に提供され、このフィルタはフォルマント残余Ｐｄ（ｎ）を発生する。ピッチ合成フィルタメモリは、発生されたスピーチの最後のサンプルから得られる最後の状態により初期化される。ピッチ合成フィルタ５２６は、現在のピッチサブフレームに対応する最適ピッチラグＬ＾及び最適ピッチゲインｂ＾を使用する。１／８の速度に対して、最適ピッチゲインは０に設定される。
【０２２２】
このピッチ合成フィルタの最終状態は保存され、前述したように次のピッチサプフレームに対するスピーチを発生するときに使用される。重み付けされたフォルマント合成フィルタ５２８は、フォルマント残余Ｐｄ（ｎ）から出力Ｙｄ（ｎ）を発生する。このフィルタは、発生されたスピーチの最終サンプルから得られる最後の状態により初期化される。現在のサブフレームについて補間されたＬＳＰ値から計算されたＬＰＣ係数は、このフィルタ用の係数として使用される。フィルタの最終状態は保存され、次のコードブックサブフレームに対してスピーチを発生するときに使用される。
【０２２３】
デコードされたスピーチＹｄ（ｎ）は後フィルタ（post-filter）５３０に提供され、このフィルタは本実施例では、デコードされる現在のサプフレームに関するＬＰＣ係数に基づくロングターム後フィルタ（long term post-filter）５３０である。後フィルタ５３０は再構成されたスピーチサンプルＹｄ（ｎ）を濾波し、濾波されたスピーチをゲイン制御５３２に提供する。ゲイン制御５３２は出力スピーチｓｄ（ｎ）を制御し、自動ゲイン制御（ＡＧＣ）を行う能力を持っている。
【０２２４】
以上、好適実施例の説明により、当業者は本発明を実施又は使用できるものである。当業者は本発明に様々の修正を施すことができ、ここで定義された基本原則は発明的工程を含まずに他の実施例にも適用できる。従って、本発明はこの明細書で説明された実施例に限定されず、ここで説明された原則及び新規な特徴を含む広範な範囲で適用できる。
【図面の簡単な説明】
【図１】図１は本発明装置のブロック図。
【図２】図２は本発明の動作を示す機能図。
【図３】図３は本発明のエンコード動作の一例を示すフローチャート。
【図４ａ】図４ａは最大定格速度でのボコーダビット割付を示し、最大定格速度に使用されるコードブックサブフレーム及びピッチの数を示すチャート。
【図４ｂ】図４ｂは１／２定格速度でのボコーダビット割付を示し、１／２定格速度に使用されるコードブックサブフレーム及びピッチの数を示すチャート。
【図４ｃ】図４ｃは１／４定格速度でのボコーダビット割付を示し、１／４定格速度に使用されるコードブックサブフレーム及びピッチの数を示すチャート。
【図４ｄ】図４ｄは１／８定格速度でのボコーダビット割付を示し、１／８定格速度に使用されるコードブックサブフレーム及びピッチの数を示すチャート。
【図５ａ】図５ａは本発明のＤＳＰコアの一実施例を示すブロック図。
【図５ｂ】図５ｂは本発明のＤＳＰコアの一実施例を示すブロック図。
【図５ｃ】図５ｃは本発明のＤＳＰコアの一実施例を示すブロック図。
【図５ｄ】図５ｄは本発明のＤＳＰコアの一実施例を示すブロック図。
【図６ａ】図６ａは本発明の最小化プロセッサの一実施例を示すフロック図。
【図６ｂ】図６ｂは本発明の最小化プロセッサの一実施例を示すフロック図。
【図７】図７は本発明の一実施例において実行されるピッチサーチ動作を示す図。
【図８】図８は本発明の一実施例において実行されるピッチサーチ動作を示すフローチャート。
【図９】図９は本発明の一実施例において実行されるコードブックサーチ動作を示す図。
【図１０】図１０は本発明の一実施例において実行されるコードブックサーチ動作を示すフローチャート。
【図１１】図１１は通信リンクの一端に設けられ、エンコーダのフイルタメモリを保持する機能のあるエンコーダのデコーダ部、及び通信リンクの他端に設けられるデコーダ部のブロック図であり、本発明の一実施例のボコーディング動作において同一である。
【図１２】図１２は本発明の一実施例のデコーダを示すブロック図。
【図１】
0004194851.tif 000022
【図２】
0004194851.tif 000023
【図３】
0004194851.tif 000024
【図４ａ】
0004194851.tif 000025
【図４ｂ】
0004194851.tif 000026
【図４ｃ】
0004194851.tif 000027
【図４ｄ】
0004194851.tif 000028
【図５ａ】
0004194851.tif 000029
【図５ｂ】
0004194851.tif 000030
【図５ｃ】
0004194851.tif 000031
【図５ｄ】
0004194851.tif 000032
【図６ａ】
0004194851.tif 000033
【図６ｂ】
0004194851.tif 000034
【図７】
0004194851.tif 000035
【図８】
0004194851.tif 000036
【図９】
0004194851.tif 000037
【図１０】
0004194851.tif 000038
【図１１】
0004194851.tif 000039
【図１２】
0004194851.tif 000040