米国特許法第120条に基づく優先権の主張
本特許出願は、2008年6月20日に出願された「ロービットレートのアップリケ―ションのための過渡的な音声フレームのコーディング(CODING OF TRANSITIONAL SPEECH FRAMES FOR LOW−BIT−RATE APPLICATIONS)」と題する特許出願第12/143,719号(代理人整理番号第071321号)の一部継続出願である、譲受人に譲渡された、2008年10月30日に出願された「ロービットレートのアップリケ―ションのための過渡的な音声フレームのコーディング(CODING OF TRANSITIONAL SPEECH FRAMES FOR LOW−BIT−RATE APPLICATIONS)」と題する係属中の特許出願第12/261,815号(代理人整理番号第071323号)の一部継続出願である。
本開示は、音声信号の処理に関する。
デジタル技法による声および音楽などのオーディオ信号の伝送は、特に長距離電話方式、ボイスオーバーIP(VoIPとも呼ばれ、IPはインターネットプロトコルを示す)などのパケット交換電話方式、およびセルラー電話方式などのデジタル無線電話方式において普及してきた。そのような普及により、再構成された音声の知覚品質を維持しながら、伝送チャネルによってボイス通信を転送するために使用される情報量を低減することに関心が生じている。たとえば、利用可能なワイヤレスシステム帯域幅を最も良く使用することが望ましい。システム帯域幅を効率的に使用する1つの方法は、信号圧縮技法を採用することである。音声信号を搬送するワイヤレスシステムの場合、通常、音声圧縮(または「音声コーディング」)技法がこの目的のために採用される。
人間音声発生のモデルに関係するパラメータを抽出することによって音声を圧縮するように構成されたデバイスは、しばしば、ボコーダ、「オーディオコーダ」、または「音声コーダ」と呼ばれる。(ここでは、これらの3つの用語を互換的に使用する。)音声コーダは、一般にエンコーダとデコーダとを含む。エンコーダは、一般に、着信音声信号(オーディオ情報を表すデジタル信号)を「フレーム」と呼ばれる時間の区間に分割し、各フレームを分析して、いくつかの関係するパラメータを抽出し、それらのパラメータを符号化フレームに量子化する。符号化フレームは、伝送チャネル(すなわち、ワイヤードまたはワイヤレスネットワーク接続)を介して、デコーダを含む受信機に送信される。デコーダは、符号化フレームを受信し、処理し、逆量子化して、パラメータを生成し、逆量子化されたパラメータを使用して音声フレームを再現する。
典型的な会話では、各話者は、その時間の約60パーセントの間は沈黙状態である。音声エンコーダは、通常、音声を含んでいる音声信号のフレーム(「アクティブフレーム」)を、無音または背景雑音のみを含んでいる音声信号のフレーム(「非アクティブフレーム」)と区別するように構成される。そのようなエンコーダは、様々なコーディングモードおよび/またはレートを使用して、アクティブおよび非アクティブフレームを符号化するように構成できる。たとえば、音声エンコーダは、一般に、アクティブフレームを符号化する場合よりも、非アクティブフレームを符号化する場合のほうが、使用するビットが少なくなるように構成される。音声コーダは、知覚される品質損失がほとんどない、より低い平均ビットレートでの音声信号の転送をサポートするために、非アクティブフレームに対してより低いビットレートを使用する。
アクティブフレームを符号化するために使用されるビットレートの例は、1フレーム当たり171ビット、1フレーム当たり80ビット、および1フレーム当たり40ビットを含む。非アクティブフレームを符号化するために使用されるビットレートの例は、1フレーム当たり16ビットを含む。セルラー電話方式システム(特に、電話通信工業会(Telecommunications Industry Association)(バージニア州アーリントン)によって公表された暫定標準(IS)−95、または同様の業界標準に準拠するシステム)のコンテキストでは、これらの4つのビットレートは、それぞれ「フルレート」、「ハーフレート」、「1/4レート」、および「1/8レート」とも呼ばれる。
一構成による音声信号フレームを符号化する方法は、フレームの残差のピークエネルギーを計算することと、残差の平均エネルギーを計算することとを含む。本方法は、計算されたピークエネルギーと計算された平均エネルギーとの間の関係に基づいて、(A)雑音励振コーディングスキームおよび(B)非差分ピッチプロトタイプコーディングスキームのセットから1つを選択することと、選択されたコーディングスキームに従ってフレームを符号化することとを含む。本方法では、非差分ピッチプロトタイプコーディングスキームに従ってフレームを符号化することは、フレームのピッチパルスの時間領域形状の表現と、フレームのピッチパルスの位置の表現と、フレームの推定ピッチ周期の表現とを含む、符号化フレームを生成することを含む。
別の構成による音声信号フレームを符号化する方法は、フレームのピッチ周期を推定することと、(A)推定ピッチ周期に基づく第1の値と、(B)フレームの別のパラメータに基づく第2の値との間の関係の値を計算することとを含む。本方法は、計算された値に基づいて、(A)雑音励振コーディングスキームおよび(B)非差分ピッチプロトタイプコーディングスキームのセットから1つを選択することと、選択されたコーディングスキームに従ってフレームを符号化することとを含む。本方法では、非差分ピッチプロトタイプコーディングスキームに従ってフレームを符号化することは、フレームのピッチパルスの時間領域形状の表現と、フレームのピッチパルスの位置の表現と、推定ピッチ周期の表現とを含む、符号化フレームを生成することを含む。
また、そのような方法を実行するように構成された装置および他の手段と、プロセッサによって実行されたとき、プロセッサにそのような方法の要素を実行させる命令を有するコンピュータ可読媒体とを明確に企図し、ここで開示される。
図1は、音声信号の有声区間の例を示す。
図2Aは、音声区間の時間に対する振幅の例を示す。
図2Bは、LPC残差の時間に対する振幅の例を示す。
図3Aは、一般的構成による音声符号化の方法M100のフローチャートを示す。
図3Bは、符号化タスクE100の実装E102のフローチャートを示す。
図4は、フレーム中の特徴の概略を示す。
図5Aは、符号化タスクE200の実装E202の図を示す。
図5Bは、方法M100の実装M110のフローチャートを示す。
図5Cは、方法M100の実装M120のフローチャートを示す。
図6Aは、一般的構成に従う装置MF100のブロック図を示す。
図6Bは、手段FE100の実装FE102のブロック図を示す。
図7Aは、一般的構成による、音声信号の励振信号を復号する方法M200のフローチャートを示す。
図7Bは、復号タスクD100の実装D102のフローチャートを示す。
図8Aは、一般的構成に従う装置MF200のブロック図を示す。
図8Bは、復号するための手段FD100の実装形態FD102のフローチャートを示す。
図9Aは、音声エンコーダAE10および対応する音声デコーダAD10を示す。
図9Bは、音声エンコーダAE10のインスタンスAE10a、AE10bおよび音声デコーダAD10のインスタンスAD10a、AD10bを示す。
図10Aは、一般的構成による、音声信号A100のフレームを符号化するための装置のブロック図を示す。
図10Bは、エンコーダ100の実装102のブロック図を示す。
図11Aは、一般的構成による、音声信号A200の励振信号を復号するための装置のブロック図を示す。
図11Bは、第1のフレームデコーダ300の実装形態302のブロック図を示す。
図12Aは、音声エンコーダAE10のマルチモード実装形態AE20のブロック図を示す。
図12Bは、音声デコーダAD10のマルチモード実装形態AD20のブロック図。
図13は、残差発生器R10のブロック図を示す。
図14は、衛星通信のためのシステムの概略図を示す。
図15Aは、一般的構成に従う方法M300のフローチャートを示す。
図15Bは、タスクL100の実装L102のブロック図を示す。
図15Cは、タスクL200の実装L202のフローチャートを示す。
図16Aは、タスクL120による探索の例を示す。
図16Bは、タスクL130による探索の例を示す。
図17Aは、タスクL210の実装L210aのフローチャートを示す。
図17Bは、タスクL220の実装L220aのフローチャートを示す。
図17Cは、タスクL230の実装L230aのフローチャートを示す。
図18AはタスクL212の反復の探索動作を示す。
図18Bは、タスクL212の反復の探索動作を示す。
図18Cは、タスクL212の反復の探索動作を示す。
図18Dは、タスクL212の反復の探索動作を示す。
図18Eは、タスクL212の反復の探索動作を示す。
図18Fは、タスクL212の反復の探索動作を示す。
図19Aは、タスクL214のテスト条件のテーブルを示す。
図19Bは、タスクL222の反復の探索動作を示す。
図19Cは、タスクL222の反復の探索動作を示す。
図20Aは、タスクL232の探索動作を示す。
図20Bは、タスクL234の探索動作を示す。
図20Cは、タスクL232の反復の探索動作を示す。
図21は、タスクL300の実装L302のフローチャートを示す。
図22Aは、タスクL320の探索動作を示す。
図22Bは、タスクL320の代替探索動作を示す。
図22Cは、タスクL320の代替探索動作を示す。
図23は、タスクL330の実装L332のフローチャートを示す。
図24Aは、タスクL334の実装によって使用されるテスト条件の4つの異なるセットを示す。
図24Bは、タスクL338の実装L338aのフローチャートを示す。
図25は、タスクL300の実装L304のフローチャートを示す。
図26は、音声エンコーダAE10の実装のさまざまな符号化スキームのためのビット割振りのテーブルを示す。
図27Aは、一般的構成に従う装置MF300のブロック図を示す。
図27Bは、一般的構成に従う装置A300のブロック図を示す。
図27Cは、一般的構成に従う装置MF350のブロック図を示す。
図27Dは、一般的構成に従う装置A350のブロック図を示す。
図28は、一般的構成に従う方法M500のフローチャートを示す。
図29Aは、160ビットフレームの様々な領域を示す。
図29Bは、160ビットフレームの様々な領域を示す。
図29Cは、160ビットフレームの様々な領域を示す。
図29Dは、160ビットフレームの様々な領域を示す。
図30Aは、一般的構成による方法M400のフローチャートを示す。
図30Bは、方法M400の実装M410のフローチャートを示す。
図30Cは、方法M400の実装M420のフローチャートを示す。
図31Aは、パケットテンプレートPT10の一例を示す。
図31Bは、別のパケットテンプレートPT20の一例を示す。
図31Cは、部分的にインターリーブされたビットロケーションの2つの独立セットを示す。
図32Aは、方法M400の実装M430のフローチャートを示す。
図32Bは、方法M400の実装M440のフローチャートを示す。
図32Cは、方法M400の実装M450のフローチャートを示す。
図33Aは、一般的構成による装置MF400のブロック図を示す。
図33Bは、装置MF400の実装MF410のブロック図を示す。
図33Cは、装置MF400の実装MF420のブロック図を示す。
図34Aは、装置MF400の実装MF430のブロック図を示す。
図34Bは、装置MF400の実装MF440のブロック図を示す。
図34Cは、装置MF400の実装MF450のブロック図を示す。
図35Aは、一般的構成に従う装置A400のブロック図を示す。
図35Bは、装置A400の実装A402のブロック図を示す。
図35Cは、装置A400の実装A404のブロック図を示す。
図35Dは、装置A400の実装A406のブロック図を示す。
図36Aは、一般的構成による方法M550のフローチャートを示す。
図36Bは、一般的構成による装置A560のブロック図を示す。
図37は、一般的構成に従う方法M560のフローチャートを示す。
図38は、方法M560の実装M570のフローチャートを示す。
図39は、一般的構成に従う装置MF560のブロック図を示す。
図40は、装置MF560の実装MF570のブロック図を示す。
図41は、一般的構成に従う方法M600のフローチャートを示す。
図42Aは、ビンへのラグレンジの均一分割の一例を示す。
図42Bは、ビンへのラグレンジの不均一分割の一例を示す。
図43Aは、一般的構成に従う方法M650のフローチャートを示す。
図43Bは、方法M650の実装M660のフローチャートを示す。
図43Cは、方法M650の実装M670のフローチャートを示す。
図44Aは、一般的構成に従う装置MF650のブロック図を示す。
図44Bは、装置MF650の実装MF660のブロック図を示す。
図44Cは、装置MF650の実装MF670のブロック図を示す。
図45Aは、一般的構成に従う装置A650のブロック図を示す。
図45Bは、装置A650の実装A660のブロック図を示す。
図45Cは、装置A650の実装A670のブロック図を示す。
図46Aは、方法M650の実装M680のフローチャートを示す。
図46Bは、装置MF650の実装MF680のブロック図を示す。
図46Cは、装置A650の実装A680のブロック図を示す。
図47Aは、一般的構成による方法M800のフローチャートを示す。
図47Bは、方法M800の実装M810のフローチャートを示す。
図48Bは、方法M800の実装M820のフローチャートを示す。
図48Bは、一般的構成による装置MF800のブロック図を示す。
図49Aは、装置MF800の実装MF810のブロック図を示す。
図49Bは、装置MF800の実装MF820のブロック図を示す。
図50Aは、一般的構成に従う装置A800のブロック図を示す。
図50Bは、装置A800の実装A810のブロック図を示す。
図51は、フレーム分類スキームで使用される特徴のリストを示す。
図52は、ピッチベースの正規化自己相関関数を計算するためのプロシージャのフローチャートを示す。
図53は、ハイレベルでのフレーム分類スキームを示すフローチャートである。
図54は、フレーム分類方式での状態間の可能な遷移を示す状態図である。
図55は、フレーム分類方式の図57〜図59および図60〜図63とは異なるプロシージャのコードリストを示す。
図56は、フレーム分類スキームの図57〜図59および図60〜図63とは異なるプロシージャのコードリストを示す。
図57は、フレーム分類スキームの図55〜図56および図60〜図63とは異なるプロシージャのコードリストを示す。
図58は、フレーム分類スキームの図55〜図56および図60〜図63とは異なるプロシージャのコードリストを示す。
図59は、フレーム分類スキームの図55〜図56および図60〜図63とは異なるプロシージャのコードリストを示す。
図60は、フレーム分類スキームの図55〜図56および図57〜図59とは異なるプロシージャのコードリストを示す。
図61は、フレーム分類スキームの図55〜図56および図57〜図59とは異なるプロシージャのコードリストを示す。
図62は、フレーム分類スキームの図55〜図56および図57〜図59とは異なるプロシージャのコードリストを示す。
図63は、フレーム分類スキームの図55〜図56および図57〜図59とは異なるプロシージャのコードリストを示す。
図64は、フレーム再分類の条件を示す。
図65は、フレーム再分類の条件を示す。
図66は、フレーム再分類の条件を示す。
図67は、フレーム再分類の条件を示す。
図68は、フレーム再分類の条件を示す。
図69は、フレーム再分類の条件を示す。
図70は、フレーム再分類の条件を示す。
図71Aは、フレーム再分類の条件を示す。
図71Bは、フレーム再分類の条件を示す。
図72は、音声エンコーダAE20の実装AE30のブロック図を示す。
図73Aは、音声エンコーダAE10の実装AE40のブロック図を示す。
図73Bは、周期フレームエンコーダE70の実装形態E72のブロック図を示す。
図74は、周期フレームエンコーダE72の実装形態E74のブロック図を示す。
図75Aは、遷移フレームコーディングモードの使用が望ましい、いくつかの典型的なフレームシーケンスを示す。
図75Bは、遷移フレームコーディングモードの使用が望ましい、いくつかの典型的なフレームシーケンスを示す。
図75Cは、遷移フレームコーディングモードの使用が望ましい、いくつかの典型的なフレームシーケンスを示す。
図75Dは、遷移フレームコーディングモードの使用が望ましい、いくつかの典型的なフレームシーケンスを示す。
図76は、コードリストを示す。
図77は、遷移フレームコーディングを使用するという決定をキャンセルするための4つの異なる条件を示す。
図78は、一般的構成に従う方法M700の図を示す。
図79Aは、一般的構成による方法M900のフローチャートを示す。
図79Bは、方法M900の実装M910のフローチャートを示す。
図80Aは、方法M900の実装M920のフローチャートを示す。
図80Bは、一般的構成に従う装置MF900のブロック図を示す。
図81Aは、装置MF900の実装MF910のブロック図を示す。
図81Bは、装置MF900の実装MF920のブロック図を示す。
図82Aは、一般的構成に従う装置A900のブロック図を示す。
図82Bは、装置A900の実装A910のブロック図を示す。
図83Aは、装置A900の実装A920のブロック図を示す。
図83Bは、一般的構成による方法M950のフローチャートを示す。
図84Aは、方法M950の実装M960のフローチャートを示す。
図84Bは、方法M950の実装M970のフローチャートを示す。
図85Aは、一般的構成による装置MF950のブロック図を示す。
図85Bは、装置MF950の実装MF960のブロック図を示す。
図86Aは、装置MF950の実装MF970のブロック図を示す。
図86Bは、一般的構成に従う装置A950のブロック図を示す。
図87Aは、装置A950の実装A960のブロック図を示す。
図87Bは、装置A950の実装A970のブロック図を示す。
参照ラベルは、同じ構造を示すために2つ以上の図中に出現することがある。
詳細な説明
ここで説明されるシステム、方法、および装置(たとえば、方法M100、M200、M300、M400、M500、M550、M560、M600、M650、M700、M800、M900、および/またはM950)を使用して、2キロビット毎秒などの低い固定ビットレートまたは低い最大ビットレートでの音声コーディングをサポートすることができる。そのような制約付きビットレート音声コーディングの適用例は、セルラーまたはワイヤラインテレフォニーのための通信インフラストラクチャがないリモートエリアにおける電話サービスをサポートするために使用できる、(「ボイスオーバーサテライト」とも呼ばれる)衛星リンクを介したボイステレフォニーの伝送を含む。衛星テレフォニーを使用して、車両フリートなどのモバイル受信機のための連続ワイドエリアカバレージをサポートすることもでき、プッシュツートークなどのサービスが可能になる。より一般的には、そのような制約付きビットレート音声コーディングの適用例は、衛星を必要とする適用例に限定されず、電力制限されたチャネルに拡張することができる。
文脈によって明確に限定されない限り、「信号」という用語は、ワイヤ、バス、または他の伝送媒体上に表されたメモリ位置(またはメモリ位置のセット)の状態を含む、その通常の意味のいずれをも示すのにここで使用される。文脈によって明確に限定されない限り、「発生(generating)」という用語は、ここでは、計算(computing)または別様の生成(producing)など、その通常の意味のいずれをも示すのに使用される。文脈によって明確に限定されない限り、「計算(calculating)」という用語は、ここでは、値のセットから計算(computing)すること、評価(evaluating)すること、発生(generating)すること、および/または選択することなど、その通常の意味のいずれをも示すのに使用される。文脈によって明確に限定されない限り、「得る(obtaining)」という用語は、計算、導出、(たとえば、外部デバイスからの)受信、および/または(たとえば、記憶要素のアレイからの)検索など、その通常の意味のいずれをも示すのに使用される。文脈によって明確に限定されない限り、「推定(estimating)」という用語は、計算(computing)および/または評価など、その通常の意味のいずれをも示すのに使用される。「備える(comprising)」または「含む(including)」という用語は、この記載および特許請求の範囲において使用される場合、他の要素または動作を除外するものではない。「に基づく」(「AはBに基づく」など)という用語は、(i)「少なくとも〜に基づく」(たとえば、「Aは少なくともBに基づく」)、および特定の文脈で適当な場合に、(ii)「と等しい」(たとえば、「AはBと等しい」)という場合を含む、その通常の意味のいずれをも示すのに使用される。文書の一部の参照によるいかなる組込みも、そのような定義が文書中の他の場所に現れた場合、その部分内で言及された用語または変数の定義を組み込んでいることをも理解されたい。
別段の指示がない限り、特定の特徴を有する音声エンコーダのいかなる開示も、類似の特徴を有する音声符号化の方法を開示する(その逆も同様)ことをも明確に意図し、特定の構成による音声エンコーダのいかなる開示も、類似の構成による音声符号化の方法を開示する(その逆も同様)ことをも明確に意図する。別段の指示がない限り、音声信号のフレームに対して演算を実行するための装置のいかなる開示も、音声信号のフレームに対して演算を実行するための対応する方法を開示する(その逆も同様)ことをも明確に意図する。別段の指示がない限り、特定の特徴を有する音声デコーダのいかなる開示も、類似の特徴を有する音声復号の方法を開示する(その逆も同様)ことをも明確に意図し、特定の構成による音声デコーダのいかなる開示も、類似の構成による音声復号の方法を開示する(その逆も同様)ことをも明確に意図する。「コーダ」、「コーデック」、および「コーディングシステム」という用語は、(場合によっては知覚的重み付けおよび/または他のフィルタ処理演算などの1つまたは複数の前処理演算の後に)音声信号のフレームを受信するように構成された少なくとも1つのエンコーダと、フレームの復号表現を生成するように構成された対応するデコーダとを含むシステムを示すのに互換的に使用される。
音声コーディングを目的として、音声信号は、一般に、サンプルのストリームを得るためにデジタル化(または量子化)される。デジタル化プロセスは、たとえば、パルス符号変調(PCM)、圧伸μ−law PCM、および圧伸A−law PCMを含む、当技術分野で知られている様々な方法のいずれかに従って実行できる。狭帯域音声エンコーダは、一般に、8kHzのサンプリングレートを使用するが、広帯域音声エンコーダは、一般に、より高いサンプリングレート(たとえば、12kHzまたは16kHz)を使用する。
音声エンコーダは、デジタル化された音声信号をフレームの連続として処理するように構成される。この連続は、通常、重複しない連続として実装されるが、フレームまたは(サブフレームとも呼ばれる)フレームの区間を処理する演算は、その入力中に1つまたは複数の隣接フレームの区間を含むこともできる。音声信号のフレームは、一般に、信号のスペクトルエンベロープがそのフレームにわたって比較的固定のままであることが予想できるほど十分に短い。フレームは、一般に、音声信号の5ミリ秒と35ミリ秒との間(または約40サンプルから200サンプルまで)に対応し、10ミリ秒、20ミリ秒、および30ミリ秒が一般的なフレームサイズである。符号化フレームの実際のサイズは、コーディングビットレートとともにフレームごとに変化することがある。
20ミリ秒のフレーム長は、7キロヘルツ(kHz)のサンプリングレートで140サンプルに対応し、8kHzのサンプリングレートで160サンプルに対応し、16kHzのサンプリングレートで320サンプルに対応するが、特定の適用例に好適と考えられる任意のサンプリングレートを使用することができる。音声コーディングに使用できるサンプリングレートの別の例は12.8kHzであり、さらなる例には12.8kHzから38.4kHzまでの範囲の他のレートがある。
一般に、すべてのフレームは同じ長さを有し、ここで説明される特定の例では、均一フレーム長を仮定する。ただし、不均一フレーム長を使用することも明確に企図され、ここで開示される。たとえば、ここで説明される様々な装置および方法の実装は、アクティブおよび非アクティブフレームならびに/あるいは有声および無声フレームに対して異なるフレーム長を採用する適用例においても使用できる。
上記のように、様々なコーディングモードおよび/またはレートを使用して、アクティブフレームおよび非アクティブフレームを符号化するように音声エンコーダを構成することが望ましい。アクティブフレームを非アクティブフレームと区別するために、音声エンコーダは、一般に、(ボイスアクティビティ検出器またはVADと一般に呼ばれる)音声アクティビティ検出器を含むか、あるいは音声アクティビティを検出する方法を実行する。そのような検出器または方法は、フレームエネルギー、信号対雑音比、周期性、およびゼロ交差レートなど、1つまたは複数のファクタに基づいてフレームをアクティブまたは非アクティブに分類するように構成できる。そのような分類は、そのようなファクタの値または絶対値をしきい値と比較すること、および/またはそのようなファクタの変化の絶対値をしきい値と比較することを含むことができる。
音声アクティビティ検出器または音声アクティビティを検出する方法はまた、アクティブフレームを、(たとえば、母音を表す)有声、(たとえば、摩擦音を表す)無声、または(たとえば、ワードの始端または終端を表す)遷移など、2つ以上の異なるタイプのうちの1つとして分類するように構成できる。そのような分類は、音声および/または残差の自己相関、ゼロ交差レート、第1の反射係数などのファクタ、および/または(たとえば、コーディングスキームセレクタC200および/またはフレーム再分類器RC10に関して)ここでより詳細に説明される他の特徴に基づくことができる。音声エンコーダが、様々なコーディングモードおよび/またはビットレートを使用して、様々なタイプのアクティブフレームを符号化することが望ましい。
有声音声のフレームは、長期であり(すなわち、2フレーム周期以上の間継続し)、ピッチに関係する、周期構造を有する傾向がある。一般に、この長期スペクトル特徴の記述を符号化するコーディングモードを使用して有声フレーム(または有声フレームのシーケンス)を符号化するのがより効率的である。そのようなコーディングモードの例には、符号励振線形予測(code−excited linear prediction:CELP)、およびプロトタイプ波形補間(prototype waveform interpolation:PWI)などの波形補間技法がある。PWIコーディングモードの一例はプロトタイプピッチ周期(prototype pitch period:PPP)と呼ばれる。一方、無声フレームおよび非アクティブフレームには、通常、著しい長期スペクトル特徴がなく、音声エンコーダは、そのような特徴を記述しようと試みないコーディングモードを使用して、これらのフレームを符号化するように構成できる。雑音励振線形予測(noise−excited linear prediction:NELP)は、そのようなコーディングモードの一例である。
音声エンコーダまたは音声符号化の方法は、ビットレートと(「コーディングスキーム」とも呼ばれる)コーディングモードとの様々な組合せの中から選択するように構成できる。たとえば、音声エンコーダは、有声音声を含んでいるフレームおよび遷移フレームにはフルレートCELPスキームを使用し、無声音声を含んでいるフレームにはハーフレートNELPスキームを使用し、非アクティブフレームには1/8レートNELPスキームを使用するように構成できる。そのような音声エンコーダの他の例は、フルレートおよびハーフレートCELPスキームならびに/あるいはフルレートおよび1/4レートPPPスキームなど、1つまたは複数のコーディングスキームに対して複数のコーディングレートをサポートする。
音声エンコーダまたは音声符号化の方法によって生成された符号化フレームは、一般に、音声信号の対応するフレームを再構成することができる値を含んでいる。たとえば、符号化フレームは、周波数スペクトルにわたるフレーム内でのエネルギーの分布の記述を含むことができる。エネルギーのそのような分布はフレームの「周波数エンベロープ」または「スペクトルエンベロープ」とも呼ばれる。符号化フレームは、一般に、フレームのスペクトルエンベロープを記述する値の順序付きシーケンスを含む。場合によっては、順序付きシーケンスの各値は、対応する周波数における信号または対応するスペクトル領域にわたる信号の振幅または絶対値を示す。そのような記述の一例はフーリエ変換係数の順序付きシーケンスである。
他の場合には、順序付きシーケンスはコーディングモデルのパラメータの値を含む。そのような順序付きシーケンスの1つの典型的な例は線形予測コーディング(linear prediction coding:LPC)分析の係数の値のセットである。これらのLPC係数値は、符号化音声の共振(「ホルマント」とも呼ばれる)を符号化し、フィルタ係数または反射係数として構成できる。たいていの現代の音声コーダの符号化部分は、各フレームのLPC係数値のセットを抽出する分析フィルタを含む。(通常、1つまたは複数のベクトルとして構成される)セット中の係数値の数はLPC分析の「次数」とも呼ばれる。(セルラー電話などの)通信デバイスの音声エンコーダによって実行されるLPC分析の典型的な次数の例には、4、6、8、10、12、16、20、24、28、および32がある。
音声コーダは、一般に、(たとえば、対応するルックアップテーブルまたは「コードブック」への1つまたは複数のインデックスとして)量子化された形態で伝送チャネル上でスペクトルエンベロープの記述を送信するように構成される。したがって、音声エンコーダが、線スペクトル対(line spectral pair:LSP)、線スペクトル周波数(line spectral frequency:LSF)、イミッタンススペクトル対(immittance spectral pair:ISP)、イミッタンススペクトル周波数(immittance spectral frequency:ISF)、ケプストラム係数、または対数面積比の値のセットなどのLPC係数値のセットを効率的に量子化できる形態で計算することが望ましい。音声エンコーダはまた、変換および/または量子化の前に値の順序付きシーケンスに対して知覚的重み付けなどの他の演算を実行するように構成できる。
場合によっては、フレームのスペクトルエンベロープの記述はまた、(たとえば、フーリエ変換係数の順序付きシーケンスの場合のように)フレームの時間的情報の記述を含む。他の場合には、符号化フレームの音声パラメータのセットはフレームの時間的情報の記述をも含むことができる。時間的情報の記述の形態は、フレームを符号化するために使用される特定のコーディングモードに依存する。いくつかのコーディングモード(たとえば、CELPコーディングモード)の場合、時間的情報の記述はLPC分析の残差の記述(励振信号の記述とも呼ばれる)を含む。対応する音声デコーダは、励振信号を使用して、(たとえば、スペクトルエンベロープの記述によって定義された)LPCモデルを励振する。励振信号の記述は、一般に、(たとえば、対応するコードブックへの1つまたは複数のインデックスとして)量子化された形態で符号化フレーム中に現れる。
時間的情報の記述はまた、励振信号のピッチ成分に関係する情報を含むことができる。PPPコーディングモードの場合、たとえば、符号化された時間的情報は、音声デコーダが励振信号のピッチ成分を再生するために使用するプロトタイプの記述を含むことができる。ピッチ成分に関係する情報の記述は、一般に、(たとえば、対応するコードブックへの1つまたは複数のインデックスとして)量子化された形態で符号化フレーム中に現れる。他のコーディングモード(たとえば、NELPコーディングモード)の場合、時間的情報の記述は、(フレームの「エネルギーエンベロープ」または「利得エンベロープ」とも呼ばれる)フレームの時間エンベロープの記述を含むことができる。
図1に、(母音などの)有声音声区間の時間にわたる振幅の一例を示す。有声フレームの場合、励振信号は、一般に、ピッチ周波数において周期的であるパルスの連続に似ており、無声フレームの場合、励振信号は一般に白色ガウス雑音と同様である。CELPまたはPWIコーダは、より良い符号化効率を達成するために、有声音声区間の特性である、より高い周期を利用することができる。図2Aに、背景雑音から有声音声に遷移する音声区間の時間にわたる振幅の例を示し、図2Bに、背景雑音から有声音声に遷移する音声区間のLPC残差の時間にわたる振幅の例を示す。LPC残差のコーディングが符号化信号ストリームの大部分を占めるので、残差を符号化するために必要なビットレートを低減するために様々なスキームが開発されてきた。そのようなスキームは、CELP、NELP、PWI、およびPPPを含む。
トール品質(toll−quality)の復号された信号を与える方法で音声信号の制約付きビットレート符号化を低ビットレート(たとえば、2キロビット毎秒)で実行することが望ましい。トール品質は、一般に、約200〜3200Hzの帯域幅と30dBよりも大きい信号対雑音比(signal−to−noise ratio:SNR)とを有するものとして特徴づけられる。場合によっては、トール品質はまた、2または3パーセント未満の高調波ひずみを有するものとして特徴づけられる。残念ながら、一般に2キロビット毎秒に近いビットレートで音声を符号化するための既存の技法は、人工的(たとえば、ロボット的)で、雑音が多く、および/または過度に高調波的(たとえば、バズ)に聞こえる合成音声を生成する。
無音および無声フレームなどの非有声フレームの高品質の符号化は、通常、雑音励振線形予測(NELP)コーディングモードを使用して低ビットレートで実行できる。しかしながら、有声フレームの高品質の符号化を低ビットレートで実行することはより困難である。低い平均ビットレートを達成するために、(オンセットフレームまたは立上り過渡フレームとも呼ばれる)無声から有声音声への遷移を含むフレームなどの困難なフレームにはより高いビットレートを使用し、後続の有声フレームにはより低いビットレートを使用することによって良好な結果が得られた。しかしながら、制約付きビットレートボコーダの場合、困難なフレームに対してより高いビットレートを使用するオプションは利用可能でないことがある。
エンハンスド・バリアブル・レート・コーデック(Enhanced Variable Rate Codec:EVRC)などの既存の可変レートボコーダは、一般に、CELPなどの波形コーディングモードを使用して、そのような困難なフレームをより高いビットレートで符号化する。低ビットレートでの有声音声区間の記憶または送信のために使用できる他のコーディングスキームは、PPPコーディングスキームなどのPWIコーディングスキームを含む。そのようなPWIコーディングスキームは、残差信号中の1つのピッチ周期の長さを有するプロトタイプ波形の位置を周期的に特定する。デコーダにおいて、残差信号は、元の高度に周期的な残差信号の近似値を得るために、プロトタイプ間のピッチ周期にわたって補間される。PPPコーディングのいくつかの適用例は、高ビットレート符号化フレームが1つまたは複数の後続の低ビットレート符号化フレームに基準を与えるように、混合ビットレートを使用する。そのような場合、低ビットレートフレーム中の情報の少なくともいくつかは差分符号化できる。
シーケンス中の後続のフレームの差分PWI(たとえば、PPP)符号化に良好なプロトタイプ(すなわち、良好なピッチパルス形状基準)および/またはピッチパルス位相基準を与える非差分方法で、オンセットフレームなどの遷移フレームを符号化することが望ましい。
ビットレート制約付きコーディングシステムにおいてオンセットフレームおよび/または他の遷移フレームのためのコーディングモードを与えることが望ましい。たとえば、低い固定ビットレートまたは低い最大ビットレートを有するように制限されたコーディングシステムにおいて、そのようなコーディングモードを与えることが望ましい。そのようなコーディングシステムの適用例の典型的な例は(たとえば、図14を参照しながらここで説明される)衛星通信リンクである。
上述のように、音声信号のフレームは、有声、無声、または無音として分類できる。有声フレームは一般に高度に周期的であり、無声および無音フレームは一般に非周期的である。他の可能なフレーム分類は、オンセット、過渡、および立下り過渡を含む。(立上り過渡フレームとも呼ばれる)オンセットフレームは、一般に、ワードの始端において生じる。オンセットフレームは、図2B中の400サンプルと600サンプルとの間の領域の場合のように、フレームの始端では非周期的(たとえば、無声)であり、フレームの終端までに周期的(たとえば、有声)になることがある。過渡クラスは、有声であるが、周期的ではない音声を有するフレームを含む。過渡フレームは、ピッチの変化および/または周期性の低減を示し、一般に、(たとえば、音声信号のピッチが変化している)有声区間の中間または終端において生じる。典型的な立下り過渡フレームは、低エネルギー有声音声を有し、ワードの終端において生じる。オンセット、過渡、および立下り過渡フレームは「遷移」フレームと呼ばれることもある。
音声エンコーダが非差分方法でパルスのロケーション、振幅、および形状を符号化することが望ましい。たとえば、符号化フレームが後続の符号化フレームの励振信号に良好な基準プロトタイプを与えるように、オンセットフレーム、または有声フレームの連続の第1のフレームを符号化することが望ましい。そのようなエンコーダは、フレームの最終ピッチパルスの位置を特定し、最終ピッチパルスに隣接するピッチパルスの位置を特定し、ピッチパルスのピーク間の距離に従ってラグ値を推定し、最終ピッチパルスのロケーションと推定されたラグ値とを示す符号化フレームを生成するように構成できる。この情報は、位相情報なしに符号化された後続のフレームを復号する際に位相基準として使用できる。エンコーダはまた、(たとえばQPPPコーディングスキームを使用して)差分符号化された後続のフレームを復号する際に基準として使用されるピッチパルスの形状の指示を含む符号化フレームを生成するように構成できる。
遷移フレーム(たとえば、オンセットフレーム)をコーディングする際、フレームの正確な再生を達成することよりも、後続のフレームの良好な基準を与えることのほうが重要である。そのような符号化フレームを使用して、PPPまたは他の符号化スキームを使用して符号化される後続の有声フレームの良好な基準を与えることができる。たとえば、符号化フレームが、(たとえば、良好な形状基準を与えるための)ピッチパルスの形状の記述と、(たとえば、良好なラグ基準を与えるための)ピッチラグの指示と、(たとえば、良好な位相基準を与えるための)フレームの最終ピッチパルスのロケーションの指示とを含むことが望ましく、オンセットフレームの他の特徴を、より少数のビットを使用して符号化するか、または無視することさえできる。
図3Aに、符号化タスクE100およびE200を含む構成による音声符号化の方法M100のフローチャートを示す。タスクE100は、音声信号の第1のフレームを符号化し、タスクE200は、音声信号の第2のフレームを符号化し、第2のフレームは第1のフレームの後に続く。タスクE100は、第1のフレームを非差分符号化する基準コーディングモードとして実装でき、タスクE200は、第1のフレームに対して第2のフレームを符号化する相対コーディングモード(たとえば、差分コーディングモード)として実装できる。一例では、第1のフレームはオンセットフレームであり、第2のフレームはオンセットフレームの直後に続く有声フレームである。第2のフレームはまた、オンセットフレームの直後に続く連続する有声フレームの連続の1番目のフレームとすることができる。
符号化タスクE100は、励振信号の記述を含む第1の符号化フレームを生成する。この記述は、時間領域におけるピッチパルスの形状(すなわち、ピッチプロトタイプ)と、ピッチパルスが繰り返されるロケーションとを示す値のセットを含む。ピッチパルスロケーションは、フレームの端末ピッチパルスの位置など、基準点とともにラグ値を符号化することによって示される。この記載において、ピッチパルスの位置はそのピークの位置を使用して示されるが、本開示の範囲は、その第1または最後のサンプルなど、パルスの別の特徴の位置によってピッチパルスの位置が同等に示されるコンテキストを明確に含む。第1の符号化フレームは、フレームのスペクトルエンベロープの記述(たとえば、1つまたは複数のLSPインデックス)など、他の情報の表現を含むこともできる。タスクE100を、テンプレートに準拠するパケットとして符号化フレームを生成するように構成することができる。たとえば、タスクE100は、ここで説明されるパケット発生タスクE320、E340および/またはE440の実例を含むことができる。
タスクE100は、第1のフレームの少なくとも1つのピッチパルスからの情報に基づいて、時間領域ピッチパルス形状のセットのうちの1つを選択するサブタスクE110を含む。フレームにおける最も高いピークを有するピッチパルスに(たとえば、最小2乗方向に)最も厳密に一致する形状を選択するように、タスクE110を構成することができる。代替的に、フレームにおける最も高いエネルギー(たとえば、2乗サンプル値の最も高い和)を有するピッチパルスに最も厳密に一致する形状を選択するように、タスクE110を構成することができる。代替的に、フレームの2つ以上のピッチパルス(たとえば、最も高いピークおよび/またはエネルギーを有するパルス)の平均に最も厳密に一致する形状を選択するように、タスクE110を構成することができる。タスクE110は、ピッチパルス形状(「形状ベクトル」とも呼ばれる)のコードブック(すなわち、量子化テーブル)による探索を含むように実装できる。たとえば、タスクE110は、ここで説明されるパルス形状ベクトル選択タスクT660またはE430のインスタンスとして実装できる。
符号化タスクT100は、フレームの端末ピッチパルスの位置(たとえば、フレームの初期ピッチピークまたはフレームの最終ピッチピークの位置)を計算するサブタスクE120をも含む。端末ピッチパルスの位置は、フレームの始端に対して、フレームの終端に対して、またはフレーム内の別の基準ロケーションに対して示すことができる。(たとえば、サンプルの振幅またはサンプル値の2乗として一般に計算されるサンプルのエネルギーと、フレーム平均との間の関係に基づいて)フレーム境界の近くのサンプルを選択し、このサンプルの次のエリア内で最大値を有するサンプルを探索することによって端末ピッチパルスピークを発見するように、タスクE120を構成することができる。たとえば、タスクE120は、以下で説明する端末ピッチピーク位置特定タスクL100の構成のいずれかに従って実装できる。
符号化タスクE100は、フレームのピッチ周期を推定するサブタスクE130をも含む。(「ピッチラグ値」、「ラグ値」、「ピッチラグ」、または単に「ラグ」とも呼ばれる)ピッチ周期は、ピッチパルス間の距離(すなわち、隣接するピッチパルスのピーク間の距離)を示す。典型的なピッチ周波数は、男性話者の約70〜100Hzから女性話者の約150〜200Hzまで変動する。8kHzのサンプリングレートの場合、これらのピッチ周波数範囲は、典型的な女性話者の約40〜50サンプルおよび典型的な男性話者の約90〜100サンプルのラグ範囲に対応する。これらの範囲外にピッチ周波数を有する話者に適応するために、約50〜60Hzから約300〜400Hzまでのピッチ周波数範囲をサポートすることが望ましい。8kHzのサンプリングレートの場合、この周波数範囲は約20〜25サンプルから約130〜160サンプルまでのラグ範囲に対応する。
ピッチ周期推定タスクE130は、(たとえば、以下で説明するラグ推定タスクL200の実装のインスタンスとして)任意の好適なピッチ推定プロシージャを使用してピッチ周期を推定するように実装できる。そのようなプロシージャは一般に、端末ピッチピークに隣接するピッチピークを発見すること(あるいは少なくとも2つの隣接するピッチピークを発見すること)と、ピーク間の距離としてラグを計算することとを含む。そのエネルギーの測度(たとえば、サンプルエネルギーとフレーム平均エネルギーとの間の比率)、および/またはサンプルの近傍が、確認されたピッチピーク(たとえば、端末ピッチピーク)の同様の近傍とどのくらい相関するかという測度に基づいて、サンプルをピッチピークとして識別するように、タスクE130を構成することができる。
符号化タスクE100は、タスクE110によって選択された時間領域ピッチパルス形状、タスクE120によって計算された端末ピッチパルス位置、およびタスクE130によって推定されたラグ値など、第1のフレームについて励振信号の特徴の表現を含む第1の符号化フレームを生成する。一般にタスクE100は、ピッチ周期推定タスクE130の前にピッチパルス位置計算タスクE120を実行し、ピッチパルス形状選択タスクE110の前にピッチ周期推定タスクE130を実行するように構成される。
第1の符号化フレームは、推定されたラグ値を直接示す値を含むことができる。代替的に、符号化フレームが最小値に対するオフセットとしてラグ値を示すことが望ましい。20サンプルの最小ラグ値の場合、たとえば、20〜147(すなわち、20+0〜20+127)サンプルの範囲中の任意の可能な整数ラグ値を示すために7ビット数を使用できる。25サンプルの最小ラグ値の場合、25〜152(すなわち、25+0〜25+127)サンプルの範囲中の可能な整数ラグ値を示すために7ビット数を使用できる。そのような方法で、最小値に対するオフセットとしてラグ値を符号化することは、予想されるラグ値の範囲のカバレージを最大にし、値の範囲を符号化するために必要とされるビット数を最小限に抑えるために使用できる。非整数ラグ値の符号化をサポートするように、他の例を構成することができる。また、第1の符号化フレームは、第2のラグ値または他の場合はフレームの一方の側(たとえば、フレームの始端または終端)から他方へのラグ値の変化を示す値など、ピッチラグに関係する2つ以上の値を含むことが可能である。
フレームのピッチパルスの振幅が互いに異なる可能性がある。たとえば、オンセットフレームでは、フレームの終端の近くのピッチパルスがフレームの始端の近くのピッチパルスよりも大きい振幅を有するように、エネルギーが時間とともに増加する。少なくともそのような場合、第1の符号化フレームが、ピッチパルスの相対振幅の記述など、(「利得プロファイル」とも呼ばれる)時間にわたるフレームの平均エネルギーの変動の記述を含むことが望ましい。
図3Bに、サブタスクE140を含む符号化タスクE100の実装E102のフローチャートを示す。タスクE140は、第1のフレームの異なるピッチパルスに対応する利得値のセットとしてフレームの利得プロファイルを計算する。たとえば、利得値の各々は、フレームの異なるピッチパルスに対応することができる。タスクE140は、利得プロファイルのコードブック(たとえば、量子化テーブル)による探索と、フレームの利得プロファイルに(たとえば、最小2乗方向に)最も厳密に一致するコードブックエントリの選択とを含むことができる。符号化タスクE102は、タスクE110によって選択された時間領域ピッチパルス形状と、タスクE120によって計算された端末ピッチパルス位置と、タスクE130によって推定されたラグ値と、タスクE140によって計算された利得値のセットとの表現を含む第1の符号化フレームを生成する。図4に、ラベル「1」が端末ピッチパルス位置を示し、ラベル「2」が推定されたラグ値を示し、ラベル「3」が選択された時間領域ピッチパルス形状を示し、ラベル「4」が利得プロファイル(たとえば、ピッチパルスの相対振幅)において符号化された値を示す、フレーム中のこれらの特徴の概略図を示す。一般にタスクE102は、ピッチパルス形状選択タスクE110と直列に、または平行して実行できる利得値計算タスクE140の前にピッチ周期推定タスクE130を実行するように構成される。(図26のテーブルに示すように)一例では、符号化タスクE102は、基準パルス位置を示す7ビットと、基準パルス形状を示す7ビットと、基準ラグ値を示す7ビットと、利得プロファイルを示す4ビットと、1つまたは複数のLSPインデックスを搬送する13ビットと、フレームのコーディングモードを示す2ビット(たとえば、NELPなどの無声コーディングモードを示す「00」、QPPPなどの相対コーディングモードを示す「01」、および基準コーディングモードE102を示す「10」)とを含む40ビット符号化フレームを生成するように1/4レートで動作する。
第1の符号化フレームは、フレーム中のピッチパルス(またはピッチピーク)の数の明示的指示を含むことができる。代替的に、フレーム中のピッチパルスまたはピッチピークの数は、暗示的に符号化できる。たとえば、第1の符号化フレームは、ピッチラグおよび端末ピッチパルスの位置(たとえば、端末ピッチピークの位置)のみを使用してフレーム中のすべてのピッチパルスの位置を示すことができる。ラグ値および端末ピッチパルスの位置からピッチパルスの潜在的な位置を計算し、利得プロファイルから潜在的なパルス位置ごとの振幅を得るように、対応するデコーダを構成できる。フレームが潜在的なパルス位置よりも少数のパルスを含んでいる場合、利得プロファイルは、潜在的なパルス位置のうちの1つまたは複数について0の利得値(または他の極めて小さい値)を示すことができる。
ここに示すように、オンセットフレームは無声として開始し、有声として終了することができる。対応する符号化フレームは、全オンセットフレームの正確な再生をサポートするよりも、後続のフレームに良好な基準を与えることが望ましく、方法M100は、そのようなオンセットフレームの初期無声部分を符号化するための限定されたサポートのみを行うように実装できる。たとえば、無声部分内の任意のピッチパルス周期について0の(または0に近い)利得値を示す利得プロファイルを選択するように、タスクE140を構成することができる。代替的に、無声部分内のピッチ周期について0でない利得値を示す利得プロファイルを選択するように、タスクE140を構成することができる。そのような一例では、タスクE140は、0、または0の近くで開始し、フレームの有声部分の第1のピッチパルスの利得レベルに単調に上昇する一般的な利得プロファイルを選択する。
利得ベクトル量子化(VQ)テーブルのセットのうちの1つへのインデックスとして利得値のセットを計算し、異なる数のパルスに対して異なる利得VQテーブルが使用されるように、タスクE140を構成することができる。各利得VQテーブルが同じ数のエントリを含んでおり、異なる利得VQテーブルが異なる長さのベクトルを含んでいるように、テーブルのセットを構成することができる。そのようなコーディングシステムでは、タスクE140は、端末ピッチパルスのロケーションとピッチラグとに基づいてピッチパルスの推定された数を計算し、この推定された数は、利得VQテーブルのセットのうちの1つを選択するために使用される。この場合、符号化フレームを復号する対応する方法によって類似した演算を実行することもできる。ピッチパルスの推定された数がフレーム中のピッチパルスの実際の数よりも大きい場合、タスクE140はまた、上記で説明したように、フレーム中の追加のピッチパルス周期ごとに利得を小さい値、または0に設定することによってこの情報を搬送することができる。
符号化タスクE200は、第1のフレームの後に続く音声信号の第2のフレームを符号化する。タスクE200は、第1のフレームの対応する特徴に対して第2のフレームの特徴を符号化する相対コーディングモード(たとえば、差分コーディングモード)として実装できる。タスクE200は、現在のフレームのピッチパルス形状と前のフレームのピッチパルス形状との間のピッチパルス形状差を計算するサブタスクE210を含む。たとえば、第2のフレームからピッチプロトタイプを抽出し、抽出されたプロトタイプと第1のフレームのピッチプロトタイプ(すなわち、選択されたピッチパルス形状)との間の差としてピッチパルス形状差を計算するように、タスクE210を構成することができる。タスクE210によって実行できるプロトタイプ抽出演算の例は、2004年6月22日に発行された米国特許第6,754,630号(Dasら)、および2006年11月14日に発行された米国特許第7,136,812号(Manjunathら)に記載されているものを含む。
周波数領域中の2つのプロトタイプ間の差としてピッチパルス形状差を計算するようにタスクE210を構成することが望ましい。図5Aに、ピッチパルス形状差計算タスクE210の実装E212を含む符号化タスクE200の実装E202の図を示す。タスクE212は、現在のフレームの周波数領域ピッチプロトタイプを計算するサブタスクE214を含む。たとえば、抽出されたプロトタイプに対して高速フーリエ変換演算を実行するか、または他の場合は抽出されたプロトタイプを周波数領域に変換するように、タスクE214を構成することができる。また、周波数領域プロトタイプをいくつかの周波数ビン(たとえば、重複しないビンのセット)に分割し、要素が各ビンにおける平均絶対値である対応する周波数絶対値ベクトルを計算し、プロトタイプの周波数絶対値ベクトルと前のフレームのプロトタイプの周波数絶対値ベクトルとの間のベクトル差としてピッチパルス形状差を計算することによってピッチパルス形状差を計算するように、タスクE212のそのような実装を構成することができる。そのような場合、対応する符号化フレームが量子化差を含むようにピッチパルス形状差をベクトル量子化するように、タスクE212を構成することもできる。
符号化タスクE200は、現在のフレームのピッチ周期と前のフレームのピッチ周期との間のピッチ周期差を計算するサブタスクE220をも含む。たとえば、現在のフレームのピッチラグを推定し、前のフレームのピッチラグ値を減算してピッチ周期差を得るように、タスクE220を構成することができる。そのような一例では、タスクE220は、ピッチ周期差を(現在のラグ推定値−前のラグ推定値+7)として計算するように構成される。ピッチラグを推定するために、上述のピッチ周期推定タスクE130のインスタンス、以下で説明するラグ推定タスクL200のインスタンス、または上記で参照した、そのセクションが一例として参照によりここに組み込まれる、EVRC文書C.S0014−Cのセクション4.6.3(pp.4−44〜4−49)に記載されているプロシージャなど、任意の好適なピッチ推定技法を使用するように、タスクE220を構成することができる。前のフレームの非量子化ピッチラグ値が前のフレームの逆量子化ピッチラグ値と異なる場合、タスクE220は、現在のラグ推定値から逆量子化値を減算することによってピッチ周期差を計算することが望ましい。
符号化タスクE200は、1/4レートPPP(QPPP)などの限定された時間同期性を有するコーディングスキームを使用して実装できる。QPPPの実装は、「Enhanced Variable Rate Codec,Speech Service Options 3,68,and 70 for Wideband Spread Spectrum Digital Systems」と題する第三世代パートナーシッププロジェクト2(Third Generation Partnership Project 2:3GPP2)文書C.S0014−C、v1.0のセクション4.2.4(pp.4−10〜4−17)および4.12.28(pp.4−132〜4−138)、2007年1月(www−dot−3gpp−dot−orgでオンライン入手可能)に記載されており、そのセクションは一例として参照によりここに組み込まれる。このコーディングスキームは、その帯域幅が周波数とともに増加する21個の周波数ビンの不均一セットを使用してプロトタイプの周波数絶対値ベクトルを計算する。QPPPを使用して生成された符号化フレームの40ビットは、(図26のテーブルに示すように)1つまたは複数のLSPインデックスを搬送する16ビットと、デルタラグ値を搬送する4ビットと、フレームの振幅情報を搬送する18ビットと、モードを示す1ビットと、予約済みの1ビットとを含む。相対コーディングスキームのこの例は、パルス形状についてのビットも、位相情報についてのビットも含まない。
上記のように、タスクE100において符号化されるフレームは、オンセットフレームとすることができ、タスクE200において符号化されるフレームは、オンセットフレームの直後に続く連続する有声フレームの連続の1番目のフレームとすることができる。図5Bに、サブタスクE300を含む方法M100の実装M110のフローチャートを示す。タスクE300は、第2のフレームの後に続く第3のフレームを符号化する。たとえば、第3のフレームは、オンセットフレームの直後に続く連続する有声フレームの連続の2番目のフレームとすることができる。符号化タスクE300は、(たとえば、QPPP符号化のインスタンスとして)ここで説明されるタスクE200の実装のインスタンスとして実装できる。そのような一例では、タスクE300は、第3のフレームのピッチプロトタイプと第2のフレームのピッチプロトタイプとの間のピッチパルス形状差を計算するように構成された(たとえば、タスクE212の)タスクE210のインスタンスと、第3のフレームのピッチ周期と第2のフレームのピッチ周期との間のピッチ周期差を計算するように構成されたタスクE220のインスタンスとを含む。別のそのような例では、タスクE300は、第3のフレームのピッチプロトタイプと第1のフレームの選択されたピッチパルス形状との間のピッチパルス形状差を計算するように構成された(たとえば、タスクE212の)タスクE210のインスタンスと、第3のフレームのピッチ周期と第1のフレームのピッチ周期との間のピッチ周期差を計算するように構成されたタスクE220のインスタンスとを含む。
図5Cに、サブタスクT100を含む方法M100の実装M120のフローチャートを示す。タスクT100は、(立上り過渡またはオンセットフレームとも呼ばれる)無声音声から有声音声への遷移を含むフレームを検出する。(たとえば、コーディングスキームセレクタC200に関して)以下で説明するEVRC分類スキームに従ってフレーム分類を実行するようにタスクT100を構成することができ、また、(たとえば、フレーム再分類器RC10に関して以下で説明するように)フレームを再分類するようにタスクT100を構成することができる。
図6Aに、音声信号のフレームを符号化するように構成された装置MF100のブロック図を示す。装置MF100は、音声信号FE100の第1のフレームを符号化するための手段と、音声信号FE200の第2のフレームを符号化するための手段とを含み、第2のフレームは第1のフレームの後に続く。手段FE100は、(たとえば、タスクE110の様々な実装に関して上記で説明したように)第1のフレームの少なくとも1つのピッチパルスからの情報に基づいて、時間領域ピッチパルス形状のセットのうちの1つを選択するための手段FE110を含む。手段FE100は、(たとえば、タスクE120の様々な実装に関して上記で説明したように)第1のフレームの端末ピッチパルスの位置を計算するための手段FE120をも含む。手段FE100は、(たとえば、タスクE130の様々な実装に関して上記で説明したように)第1のフレームのピッチ周期を推定するための手段FE130をも含む。図6Bに、(たとえば、タスクE140の様々な実装に関して上記で説明したように)第1のフレームの異なるピッチパルスに対応する利得値のセットを計算するための手段FE140をも含む手段FE100の実装FE102のブロック図を示す。
手段FE200は、(たとえば、タスクE210の様々な実装に関して上記で説明したように)第2のフレームのピッチパルス形状と、第1のフレームのピッチパルス形状との間のピッチパルス形状差を計算するための手段FE210を含む。手段FE200は、(たとえば、タスクE220の様々な実装に関して上記で説明したように)第2のフレームのピッチ周期と、第1のフレームのピッチ周期との間のピッチ周期差を計算するための手段FE220をも含む。
図7Aに、一般的構成による、音声信号の励振信号を復号する方法M200のフローチャートを示す。方法M200は、第1の励振信号を得るために第1の符号化フレームの部分を復号するタスクD100を含み、その部分は時間領域ピッチパルス形状と、ピッチパルス位置と、ピッチ周期との表現を含む。タスクD100は、ピッチパルス位置に従って第1の励振信号内に時間領域ピッチパルス形状の第1のコピーを構成するサブタスクD110を含む。タスクD100は、ピッチパルス位置とピッチ周期とに従って第1の励振信号内に時間領域ピッチパルス形状の第2のコピーを構成するサブタスクD120をも含む。一例では、タスクD110とタスクD120とは、(たとえば、時間領域ピッチパルス形状を表す第1の符号化フレームからのインデックスに従って)コードブックから時間領域ピッチパルス形状を得て、それを励振信号バッファにコピーする。タスクD100および/または方法M200はまた、(たとえば、第1の符号化フレームから1つまたは複数の量子化LSPベクトルを逆量子化し、結果を逆変換することによって)第1の符号化フレームからLPC係数値のセットを得て、LPC係数値のセットに従って合成フィルタを構成し、第1の復号フレームを得るために第1の励振信号を構成された合成フィルタに適用するタスクを含むように実装できる。
図7Bに、復号タスクD100の実装D102のフローチャートを示す。この場合、第1の符号化フレームの部分は、利得値のセットの表現をも含む。タスクD102は、利得値のセットのうちの1つを時間領域ピッチパルス形状の第1のコピーに適用するサブタスクD130を含む。タスクD102は、利得値のセットのうちの異なる1つを時間領域ピッチパルス形状の第2のコピーに適用するサブタスクD140をも含む。一例では、タスクD130は、その利得値をタスクD110中での形状に適用し、タスクD140は、その利得値をタスクD120中での形状に適用する。別の例では、タスクD110が実行された後に、タスクD130は、その利得値を励振信号バッファの対応する部分に適用し、タスクD120が実行された後に、タスクD140は、その利得値を励振信号バッファの対応する部分に適用する。タスクD102を含む方法M200の実装は、第1の復号フレームを得るために得られた利得調整された励振信号を構成された合成フィルタに適用するタスクを含むように構成できる。
方法M200は、第2の励振信号を得るために第2の符号化フレームの部分を復号するタスクD200をも含み、その部分はピッチパルス形状差とピッチ周期差との表現を含む。タスクD200は、時間領域ピッチパルス形状とピッチパルス形状差とに基づいて第2のピッチパルス形状を計算するサブタスクD210を含む。タスクD200は、ピッチ周期とピッチ周期差とに基づいて第2のピッチ周期を計算するサブタスクD220をも含む。タスクD200は、ピッチパルス位置と第2のピッチ周期とに従って第2の励振信号内に第2のピッチパルス形状の2つ以上のコピーを構成するサブタスクD230をも含む。タスクD230は、ピッチパルス位置からの対応するオフセットとして第2の励振信号内のコピーの各々のための位置を計算することを含むことができ、各オフセットは、第2のピッチ周期の整数倍である。タスクD200および/または方法M200はまた、(たとえば、第2の符号化フレームから1つまたは複数の量子化LSPベクトルを逆量子化し、結果を逆変換することによって)第2の符号化フレームからLPC係数値のセットを得て、LPC係数値のセットに従って合成フィルタを構成し、第2の復号フレームを得るために第2の励振信号を構成された合成フィルタに適用するタスクを含むように実装できる。
図8Aに、音声信号の励振信号を復号するための装置MF200のブロック図を示す。装置MF200は、第1の励振信号を得るために第1の符号化フレームの部分を復号するための手段FD100を含み、その部分は時間領域ピッチパルス形状と、ピッチパルス位置と、ピッチ周期との表現を含む。手段FD100は、ピッチパルス位置に従って第1の励振信号内に時間領域ピッチパルス形状の第1のコピーを構成するための手段FD110を含む。手段FD100は、ピッチパルス位置とピッチ周期とに従って第1の励振信号内に時間領域ピッチパルス形状の第2のコピーを構成するための手段FD120をも含む。一例では、手段FD110と手段FD120とは、(たとえば、時間領域ピッチパルス形状を表す第1の符号化フレームからのインデックスに従って)コードブックから時間領域ピッチパルス形状を得て、それを励振信号バッファにコピーするように構成される。手段FD200および/または装置MF200はまた、(たとえば、第1の符号化フレームから1つまたは複数の量子化LSPベクトルを逆量子化し、結果を逆変換することによって)第1の符号化フレームからLPC係数値のセットを得るための手段と、LPC係数値のセットに従って合成フィルタを構成するための手段と、第1の復号フレームを得るために第1の励振信号を構成された合成フィルタに適用するための手段とを含むように実装できる。
図8Bに、復号するための手段FD100の実装FD102のフローチャートを示す。この場合、第1の符号化フレームの部分は、利得値のセットの表現をも含む。手段FD102は、利得値のセットのうちの1つを時間領域ピッチパルス形状の第1のコピーに適用するための手段FD130を含む。手段FD102は、利得値のセットのうちの異なる1つを時間領域ピッチパルス形状の第2のコピーに適用するための手段FD140をも含む。一例では、手段FD130は、その利得値を手段FD110内での形状に適用し、手段FD140はその利得値を手段FD120内での形状に適用する。別の例では、手段FD130は、その利得値を、手段FD110が第1のコピーを構成した励振信号バッファの部分に適用し、手段FD140は、その利得値を、手段FD120が第2のコピーを構成した励振信号バッファの部分に適用する。手段FD102を含む装置MF200の実装は、第1の復号フレームを得るために得られた利得調整された励振信号を構成された合成フィルタに適用するための手段を含むように構成できる。
装置MF200は、第2の励振信号を得るために第2の符号化フレームの部分を復号するための手段FD200をも含み、その部分はピッチパルス形状差とピッチ周期差との表現を含む。手段FD200は、時間領域ピッチパルス形状とピッチパルス形状差とに基づいて第2のピッチパルス形状を計算するための手段FD210を含む。手段FD200は、ピッチ周期とピッチ周期差とに基づいて第2のピッチ周期を計算するための手段FD220をも含む。手段FD200は、ピッチパルス位置と第2のピッチ周期とに従って第2の励振信号内に第2のピッチパルス形状の2つ以上のコピーを構成するための手段FD230をも含む。手段FD230は、ピッチパルス位置からの対応するオフセットとして第2の励振信号内のコピーの各々のための位置を計算するように構成でき、各オフセットは、第2のピッチ周期の整数倍である。手段FD200および/または装置MF200はまた、(たとえば、第2の符号化フレームから1つまたは複数の量子化LSPベクトルを逆量子化し、結果を逆変換することによって)第2の符号化フレームからLPC係数値のセットを得るための手段と、LPC係数値のセットに従って合成フィルタを構成するための手段と、第2の復号フレームを得るために第2の励振信号を構成された合成フィルタに適用するための手段とを含むように実装できる。
図9Aに、(たとえば、フレームの連続として)デジタル化音声信号S100を受信し、通信チャネルC100(たとえば、ワイヤード、光、および/またはワイヤレス通信リンク)上で音声デコーダAD10に送信するための(たとえば、対応する符号化フレームの連続として)対応する符号化信号S200を生成するように構成された音声エンコーダAE10を示す。音声デコーダAD10は、符号化音声信号S200の受信したバージョンS300を復号し、対応する出力音声信号S400を合成するように構成される。音声エンコーダAE10は、装置MF100のインスタンスを含み、および/または方法M100の実装を実行するように実装できる。音声デコーダAD10は、装置MF200のインスタンスを含み、および/または方法M200の実装を実行するように実装できる。
上述のように、音声信号S100は、パルス符号変調(PCM)、圧伸μ−law、またはA−lawなど、当技術分野で知られている様々な方法のいずれかに従ってデジタル化および量子化された(たとえば、マイクロフォンによってキャプチャされる)アナログ信号を表す。信号は、雑音抑圧、知覚的重み付け、および/または他のフィルタ処理演算など、アナログおよび/またはデジタル領域における他の前処理演算をも受けることができる。追加または代替として、そのような演算は、音声エンコーダAE10内で実行できる。音声信号S100のインスタンスは、デジタル化および量子化された(たとえば、マイクロフォンのアレイによってキャプチャされる)アナログ信号の組合せをも表すことができる。
図9Bに、デジタル化音声信号S100の第1のインスタンスS110を受信し、通信チャネルC100の第1のインスタンスC110上で音声デコーダAD10の第1のインスタンスAD10aに送信するための符号化信号S200の対応するインスタンスS210を生成するように構成された音声エンコーダAE10の第1のインスタンスAE10aを示す。音声デコーダAD10aは、符号化音声信号S210の受信したバージョンS310を復号し、出力音声信号S400の対応するインスタンスS410を合成するように構成される。
図9Bに、デジタル化音声信号S100の第2のインスタンスS120を受信し、通信チャネルC100の第2のインスタンスC120上で音声デコーダAD10の第2のインスタンスAD10bに送信するための符号化信号S200の対応するインスタンスS220を生成するように構成された音声エンコーダAE10の第2のインスタンスAE10bをも示す。音声デコーダAD10bは、符号化音声信号S220の受信したバージョンS320を復号し、出力音声信号S400の対応するインスタンスS420を合成するように構成される。
音声エンコーダAE10aおよび音声デコーダAD10b(同様に、音声エンコーダAE10bおよび音声デコーダAD10a)は、たとえば、図14に関して後述するユーザ端末、地上局、またはゲートウェイを含む、音声信号を送信および受信するための任意の通信デバイス中で一緒に使用できる。ここで説明されるように、音声エンコーダAE10は多くの異なる方法で実装でき、音声エンコーダAE10aおよびAE10bは、音声エンコーダAE10の異なる実装のインスタンスとすることができる。同様に、音声デコーダAD10は多くの異なる方法で実装でき、音声デコーダAD10aおよびAD10bは、音声デコーダAD10の異なる実装のインスタンスとすることができる。
図10Aに、音声信号の第1のフレームを第1の符号化フレームとして符号化するように構成された第1のフレームエンコーダ100と、音声信号の第2のフレームを第2の符号化フレームとして符号化するように構成された第2のフレームエンコーダ200とを含み、第2のフレームは第1のフレームの後に続く、一般的構成による音声信号A100のフレームを符号化するための装置のブロック図を示す。音声エンコーダAE10は、装置A100のインスタンスを含むように実装できる。第1のフレームエンコーダ100は、(たとえば、タスクE110の様々な実装に関して上記で説明したように)第1のフレームの少なくとも1つのピッチパルスからの情報に基づいて、時間領域ピッチパルス形状のセットのうちの1つを選択するように構成されたピッチパルス形状セレクタ110を含む。エンコーダ100は、(たとえば、タスクE120の様々な実装に関して上記で説明したように)第1のフレームの端末ピッチパルスの位置を計算するように構成されたピッチパルス位置計算器120をも含む。エンコーダ100は、(たとえば、タスクE130の様々な実装に関して上記で説明したように)第1のフレームのピッチ周期を推定するように構成されたピッチ周期推定器130をも含む。エンコーダ100を、テンプレートに準拠するパケットとして符号化フレームを生成するように構成することができる。たとえば、エンコーダ100は、ここで説明されるパケットジェネレータ170および/または570のインスタンスを含むことができる。図10Bに、(たとえば、タスクE140の様々な実装に関して上記で説明したように)第1のフレームの異なるピッチパルスに対応する利得値のセットを計算するように構成された利得値計算器140をも含むエンコーダ100の実装102のブロック図を示す。
第2のフレームエンコーダ200は、(たとえば、タスクE210の様々な実装に関して上記で説明したように)第2のフレームのピッチパルス形状と、第1のフレームのピッチパルス形状との間のピッチパルス形状差を計算するように構成されたピッチパルス形状差計算器210を含む。エンコーダ200は、(たとえば、タスクE220の様々な実装に関して上記で説明したように)第2のフレームのピッチ周期と、第1のフレームのピッチ周期との間のピッチ周期差を計算するように構成されたピッチパルス差計算器220をも含む。
図11Aに、第1のフレームデコーダ300と第2のフレームデコーダ400とを含む一般的構成による、音声信号A200の励振信号を復号するための装置のブロック図を示す。デコーダ300は、第1の励振信号を得るために第1の符号化フレームの部分を復号するように構成され、その部分は時間領域ピッチパルス形状と、ピッチパルス位置と、ピッチ周期との表現を含む。デコーダ300は、ピッチパルス位置に従って第1の励振信号内に時間領域ピッチパルス形状の第1のコピーを構成するように構成された第1の励振信号発生器310を含む。励振発生器310はまた、ピッチパルス位置とピッチ周期とに従って第1の励振信号内に時間領域ピッチパルス形状の第2のコピーを構成するように構成される。たとえば、発生器310は、ここで説明されるタスクD110およびD120の実装を実行するように構成できる。この例では、デコーダ300は、(たとえば、第1の符号化フレームから1つまたは複数の量子化LSPベクトルを逆量子化し、結果を逆変換することによって)第1の符号化フレームからデコーダ300によって得られたLPC係数値のセットに従って構成され、第1の復号フレームを得るために励振信号をフィルタ処理するように構成された合成フィルタ320をも含む。
図11Bに、第1の符号化フレームの部分が利得値のセットの表現をも含む場合、第1の乗算器330と第2の乗算器340とを含む第1の励振信号発生器310の実装312のブロック図を示す。第1の乗算器330は、利得値のセットのうちの1つを時間領域ピッチパルス形状の第1のコピーに適用するように構成される。たとえば、第1の乗算器330は、ここで説明されるタスクD130の実装を実行するように構成できる。第2の乗算器340は、利得値のセットのうちの異なる1つを時間領域ピッチパルス形状の第2のコピーに適用するように構成される。たとえば、第2の乗算器340は、ここで説明されるタスクD140の実装を実行するように構成できる。発生器312を含むデコーダ300の実装では、合成フィルタ320は、第1の復号フレームを得るために得られた利得調整された励振信号をフィルタ処理するように構成できる。第1の乗算器330と第2の乗算器340とは、異なる時間に異なる構造を使用するか、または同じ構造を使用して実装できる。
第2のフレームデコーダ400は、第2の励振信号を得るために第2の符号化フレームの部分を復号するように構成され、その部分はピッチパルス形状差とピッチ周期差との表現を含む。デコーダ400は、ピッチパルス形状計算器410とピッチ周期計算器420とを含む第2の励振信号発生器440を含む。ピッチパルス形状計算器410は、時間領域ピッチパルス形状とピッチパルス形状差とに基づいて第2のピッチパルス形状を計算するように構成される。たとえば、ピッチパルス形状計算器410は、ここで説明されるタスクD210の実装を実行するように構成できる。ピッチ周期計算器420は、ピッチ周期とピッチ周期差とに基づいて第2のピッチ周期を計算するように構成される。たとえば、ピッチ周期計算器420は、ここで説明されるタスクD220の実装を実行するように構成できる。励振発生器440は、ピッチパルス位置と第2のピッチ周期とに従って第2の励振信号内に第2のピッチパルス形状の2つ以上のコピーを構成するように構成される。たとえば、発生器440は、ここで説明されるタスクD230の実装を実行するように構成できる。この例では、デコーダ400は、(たとえば、第1の符号化フレームから1つまたは複数の量子化LSPベクトルを逆量子化し、結果を逆変換することによって)第1の符号化フレームからデコーダ400によって得られたLPC係数値のセットに従って構成され、第2の復号フレームを得るために第2の励振信号をフィルタ処理するように構成された合成フィルタ430をも含む。合成フィルタ320と合成フィルタ430とは、異なる時間に異なる構造を使用するか、または同じ構造を使用して実装できる。音声デコーダAD10は、装置A200のインスタンスを含むように実装できる。
図12Aに、音声エンコーダAE10のマルチモード実装AE20のブロック図を示す。エンコーダAE20は、第1のフレームエンコーダ100の実装(たとえば、エンコーダ102)と、第2のフレームエンコーダ200の実装と、無声フレームエンコーダUE10(たとえば、QNELPエンコーダ)と、コーディングスキームセレクタC200とを含む。コーディングスキームセレクタC200は、セレクタ50a、50bを介してフレームごとにエンコーダ100、200、およびUE10のうちの適切な1つを選択するために(たとえば、後述する変更されたEVRCフレーム分類スキームに従って)音声信号S100の着信フレームの特性を分析するように構成される。1/4レートPPP(QPPP)コーディングスキームを適用するために第2のフレームエンコーダ200を実装し、1/4レートNELP(QNELP)コーディングスキームを適用するために無声フレームエンコーダUE10を実装することが望ましい。図12Bに、第1のフレームデコーダ300の実装(たとえば、デコーダ302)と、第2のフレームエンコーダ400の実装と、無声フレームデコーダUD10(たとえば、QNELPデコーダ)と、コーディングスキーム検出器C300とを含む音声エンコーダAD10の類似したマルチモード実装AD20のブロック図を示す。コーディングスキーム検出器C300は、セレクタ90a、90bを介して符号化フレームごとにデコーダ300、400、およびUD10のうちの適切な対応する1つを選択するために(たとえば、第1および/または最後のビットなど符号化フレームの1つまたは複数のモードビットに従って)受信した符号化音声信号S300の符号化フレームのフォーマットを判断するように構成される。
図13に、音声エンコーダAE10の実装内に含めることができる残差発生器R10のブロック図を示す。発生器R10は、音声信号S100の現在のフレームに基づいてLPC係数値のセットを計算するように構成されたLPC分析モジュールR110を含む。変換ブロックR120は、LPC係数値のセットをLSFのセットに変換するように構成され、量子化器R130は、(たとえば、1つまたは複数のコードブックインデックスとして)LSFを量子化してLPCパラメータSL10を生成するように構成される。逆量子化器R140は、量子化されたLPCパラメータSL10から復号されたLSFのセットを得るように構成され、逆変換ブロックR150は、復号されたLSFのセットから復号されたLPC係数値のセットを得るように構成される。復号されたLPC係数値のセットに従って構成された(分析フィルタとも呼ばれる)白色化フィルタR160は、音声信号S100を処理して、LPC残差SR10を生成する。残差発生器R10はまた、特定の適用例に好適であると考えられる他の設計に従ってLPC残差を発生するように実装できる。残差発生器R10のインスタンスは、フレームエンコーダ104、204、およびUE10のうちのいずれか1つまたは複数内で実装でき、および/またはそれらの間で共有できる。
図14に、衛星10、地上局20a、20b、およびユーザ端末30a、30bを含む衛星通信のためのシステムの概略図を示す。衛星10は、場合によっては1つまたは複数の他の衛星を介して、地上局20aと20bとの間、ユーザ端末30aと30bとの間、または地上局とユーザ端末との間で半二重または全二重チャネル上でボイス通信を中継するように構成できる。ユーザ端末30a、30bの各々は、ワイヤレスモデムを備えた携帯電話またはポータブルコンピュータなどワイヤレス衛星通信のためのポータブルデバイス、地上または宇宙ビークル内に取り付けられた通信ユニット、あるいは衛星ボイス通信のための別のデバイスとすることができる。地上局20a、20bの各々は、それぞれのネットワーク40a、40bにボイス通信チャネルをルーティングするように構成され、ネットワーク40a、40bは、アナログまたはパルス符号変調(pulse code modulation:PCM)ネットワーク(たとえば、公衆交換電話網つまりPSTN)および/またはデータネットワーク(たとえば、インターネット、ローカルエリアネットワーク(local area network:LAN)、キャンパスエリアネットワーク(campus area network:CAN)、メトロポリタンエリアネットワーク(metropolitan area network:MAN)、ワイドエリアネットワーク(wide area network:WAN)、リング型ネットワーク、スター型ネットワーク、および/またはトークンリングネットワーク)とすることができる。地上局20a、20bの一方または両方は、別の形態(たとえば、アナログ、PCM、より高いビットレートコーディングスキームなど)におよび/またはそれからボイス通信信号をトランスコードするように構成されたゲートウェイをも含むことができる。ここで説明される方法のうちの1つまたは複数は、図14に示すデバイス10、20a、20b、30a、および30bのうちのいずれか1つまたは複数によって実行でき、ここで説明される装置のうちの1つまたは複数は、そのようなデバイスのうちのいずれか1つまたは複数中に含めることができる。
PWI符号化中に抽出されるプロトタイプの長さは一般に、フレームごとに変化することができるピッチラグの現在の値に等しい。したがって、デコーダに送信するためのプロトタイプを量子化することが、次元が可変であるベクトルを量子化するという問題を提示することがある。従来のPWIおよびPPPコーディングスキームでは、可変次元プロトタイプベクトルの量子化は、(たとえば、離散時間フーリエ変換(discrete−time Fourier transform:DTFT)演算を使用して)時間領域ベクトルを複素数値周波数領域ベクトルに変換することによって一般に実行される。そのような演算は、ピッチパルス形状差計算タスクE210に関して上記で説明した。次いで、この複素数値可変次元ベクトルの振幅をサンプリングして、固定次元のベクトルを得る。振幅ベクトルのサンプリングは不均一でもよい。たとえば、高周波よりも低周波でより高い分解能をもつベクトルをサンプリングすることが望ましい。
オンセットフレームの後に続く有声フレームの差分PWI符号化を実行することが望ましい。フルレートPPPコーディングモードでは、周波数領域ベクトルの位相を、振幅と同様にしてサンプリングして、固定次元ベクトルを得る。しかしながら、QPPPコーディングモードでは、そのような位相情報をデコーダに搬送するために利用可能なビットがない。この場合、ピッチラグは、(たとえば、前のフレームのピッチラグに対して)差分的に符号化され、位相情報はまた、1つまたは複数の前のフレームからの情報に基づいて推定されなければならない。たとえば、遷移フレームコーディングモード(たとえば、タスクE100)を使用してオンセットフレームを符号化するとき、後続のフレームのための位相情報はピッチラグとパルスロケーション情報とから導出できる。
オンセットフレームを符号化するために、フレーム内のすべてのピッチパルスを検出することが予想できるプロシージャを実行することが望ましい。たとえば、ロバストなピッチピーク検出演算の使用は、後続のフレームにより良いラグ推定値および/または位相基準を与えることが予想できる。後続のフレームが差分コーディングスキーム(たとえば、タスクE200)などの相対コーディングスキームを使用して符号化される場合、そのようなスキームは一般に誤り伝搬を受けやすいので、確実な基準値が特に重要であることがある。上記のように、本明細書では、ピッチパルスの位置はそのピークの位置によって示されるが、別のコンテキストでは、ピッチパルスの位置は、その第1または最後のサンプルなど、パルスの別の特徴の位置によって同等に示すことができる。
図15Aに、タスクL100と、L200と、L300とを含む一般的構成による方法M300のフローチャートを示す。タスクL100は、フレームの端末ピッチピークの位置を特定する。特定の実装では、タスクL100は、(A)サンプル振幅に基づく量と(B)フレームの量の平均との間の関係に従って、サンプルを端末ピッチピークとして選択するように構成される。1つのそのような例では、量はサンプルの大きさ(sample magnitude)(すなわち、絶対値(absolute value))であり、この場合、フレーム平均は次のように計算できる。
式中、sはサンプル値(すなわち、振幅)を示し、Nはフレーム中のサンプルの数を示し、iはサンプルインデックスである。別のそのような例では、量はサンプルエネルギー(すなわち、振幅2乗)であり、この場合、フレーム平均は次のように計算できる。
以下の説明では、エネルギーが使用される。
タスクL100を、フレームの初期ピッチピークとして、またはフレームの最終ピッチピークとして端末ピッチピークの位置を特定するように構成することができる。初期ピッチピークの位置を特定するために、タスクL100を、フレームの第1のサンプルにおいて開始し、時間的に前方に動作するように構成することができる。最終ピッチピークの位置を特定するために、タスクL100を、フレームの最後のサンプルにおいて開始し、時間的に後方に動作するように構成することができる。後述する特定の例では、タスクL100を、フレームの最終ピッチピークとして端末ピッチピークの位置を特定するように構成する。
図15Bに、サブタスクL110と、L120と、L130とを含むタスクL100の実装L102のブロック図を示す。タスクL110は、端末ピッチピークとして適格であるフレーム中の最後のサンプルの位置を特定する。この例では、タスクL110は、フレーム平均に対するエネルギーが対応するしきい値TH1を超える(代替的に、しきい値以上である)最後のサンプルの位置を特定する。一例では、TH1の値は6である。フレーム中にそのようなサンプルが発見されない場合、方法M300は終了され、別のコーディングモード(たとえば、QPPP)がそのフレームに使用される。他の場合は、タスクL120は、(図16Aに示すように)このサンプルより前にウィンドウ内を探索して最も大きい振幅を有するサンプルを発見し、このサンプルを仮ピーク候補として選択する。タスクL120における探索ウィンドウが、最小許容ラグ値に等しい幅WL1を有することが望ましい。一例では、WL1の値は20サンプルである。探索ウィンドウ中の2つ以上のサンプルが最も大きい振幅を有する場合、タスクL120は、第1のそのようなサンプル、最後のそのようなサンプル、または他のそのようなサンプルを選択するように様々に構成できる。
タスクL130は、(図16Bに示すように)仮ピーク候補より前にウィンドウ内で最も大きい振幅を有するサンプルを発見することによって、最終ピッチピーク選択を検証する。タスクL130における探索ウィンドウが、初期ラグ推定値の50%と100%との間、または50%と75%との間である幅WL2を有することが望ましい。初期ラグ推定値は、(すなわち、前のフレームから)最も最近のラグ推定値に一般に等しい。一例では、WL2の値は、初期ラグ推定値の5/8に等しい。新しいサンプルの振幅が仮ピーク候補の振幅よりも大きい場合、タスクL130は、新しいサンプルを最終ピッチピークとして代わりに選択する。別の実装では、新しいサンプルの振幅が仮ピーク候補の振幅よりも大きい場合、タスクL130は、新しいサンプルを新しい仮ピーク候補として選択し、そのようなサンプルが発見されなくなるまで、新しい仮ピーク候補より前に幅WL2のウィンドウ内の探索を繰り返す。
タスクL200は、フレームのための推定されたラグ値を計算する。タスクL200は、端末ピッチピークに隣接しているピッチパルスのピークの位置を特定し、これらの2つのピーク間の距離としてラグ推定値を計算するように一般に構成される。フレーム境界内のみを探索する、および/または端末ピッチピークと隣接するピッチピークとの間の距離が最小許容ラグ値(たとえば、20サンプル)よりも大きい(代替的に、最小許容ラグ値以上である)ことを必要とするようにタスクL200を構成することが望ましい。
初期ラグ推定値を使用して、隣接するピークを発見するようにタスクL200を構成することが望ましい。ただし、最初に、タスクL200が、(ピッチ3倍および/またはピッチ4倍誤差を含むことができる)ピッチ2倍誤差について初期ラグ推定値を検査することが望ましい。一般に、初期ラグ推定値は、相関ベースの方法を使用して判断されている。ピッチ2倍誤差は、ピッチ推定の相関ベースの方法に共通であり、一般にかなり可聴である。図15Cに、タスクL200の実装L202のフローチャートを示す。タスクL202は、ピッチ2倍誤差について初期ラグ推定値を検査する、随意であるが推奨されるサブタスクL210を含む。タスクL210は、端末ピッチピークから、たとえば1/2、1/3、および1/4ラグの距離の狭いウィンドウ内でピッチピークを探索するように構成され、以下で説明するように反復することができる。
図17Aに、サブタスクL212と、L214と、L216とを含むタスクL210の実装L210aのフローチャートを示す。検査すべき最小ピッチ分数(たとえば、lag/4)の場合、タスクL212は、(たとえば、振幅、絶対値、またはエネルギーに関して)最大値を有するサンプルを発見するために、中心が、ピッチ分数に実質的に等しい距離(たとえば、打ち切りまたは丸め誤差内)だけ端末ピッチピークからオフセットされる小さいウィンドウ(たとえば、5サンプル)内で探索する。図18Aに、そのような動作を示す。
タスクT214は、最大値サンプル(すなわち、「候補」)の1つまたは複数の特徴を評価し、これらの値をそれぞれのしきい値と比較する。評価された特徴は、候補のサンプルエネルギー、平均フレームエネルギーに対する候補エネルギーの比(たとえば、ピーク対RMSエネルギー)、および/または端末ピークエネルギーに対する候補エネルギーの比を含むことができる。タスクL214を、任意の順序でそのような評価を実行するように構成することができ、評価は互いに直列および/または並列に実行できる。
タスクL214が、候補の近傍を端末ピッチピークの同様の近傍と相関させることが望ましい。この特徴評価の場合、タスクL214は、候補を中心とする長さN1サンプルの区間を、端末ピッチピークを中心とする等しい長さの区間と相関させるように一般に構成される。一例では、N1の値は17サンプルに等しい。(たとえば、0から1までの範囲内の結果を有する)正規化相関を実行するようにタスクL214を構成することが望ましい。(たとえば、タイミングオフセットおよび/またはサンプリング誤差をなくすために)たとえば、候補の前および後の1サンプルを中心とする長さN1の区間について相関を繰り返し、最大相関結果を選択するようにタスクL214を構成することが望ましい。相関ウィンドウがフレーム境界を越えて延びる場合、相関ウィンドウをシフトまたは打ち切ることが望ましい。(相関ウィンドウが打ち切られる場合、すでに正規化されているのでなければ、相関結果を正規化することが望ましい。)一例では、しきい値Tが6に等しいとすることができる、図19A中の列として示される条件の3つのセットのいずれかが満たされる場合、候補は隣接するピッチピークとして受け付けられる。
タスクT214が隣接するピッチピークを発見した場合、タスクL216は、端末ピッチピークと隣接するピッチピークとの間の距離として現在のラグ推定値を計算する。他の場合は、タスクL210aは、(図18Bに示すように)端末ピークの反対側に反復し、次いで、(図18C〜図18Fに示すように)隣接するピッチピークが発見されるまで、最小から最大まで、検査すべき他のピッチ分数について端末ピークの両側間で交互に行う。端末ピッチピークと、最も近接したフレーム境界との間で隣接するピッチピークが発見された場合、その端末ピッチピークは隣接するピッチピークとして再標示され、その新しいピークは端末ピッチピークとして標示される。代替実装では、タスクL210は、立上り側の前に端末ピッチピークの立下り側(すなわち、タスクL100においてすでに探索された側)を探索するように構成される。
分数ラグテストタスクL210がピッチピークの位置を特定しなかった場合、タスクL220は、(たとえば、初期ラグ推定値だけ端末ピーク位置からオフセットされるウィンドウ内で)初期ラグ推定値に従って端末ピッチピークに隣接するピッチピークを探索する。図17Bに、サブタスクL222と、L224と、L226と、L228とを含むタスクL220の実装L220aのフローチャートを示す。タスクL222は、(白丸が端末ピッチピークを示す図19Bに示すように)最終ピークの左側に1つのラグの距離を中心とする幅WL3のウィンドウ内で候補(たとえば、振幅または絶対値に関して最大値を有するサンプル)を発見する。一例では、WL3の値は初期ラグ推定値の0.55倍に等しい。タスクL224は候補サンプルのエネルギーを評価する。たとえば、タスクL224を、候補のエネルギーの測度(たとえば、ピーク対RMSエネルギーなど、フレーム平均エネルギーに対するサンプルエネルギーの比)が対応するしきい値TH3よりも大きい(代替的に、しきい値以上)かどうかを判断するように構成することができる。TH3の例示的な値は、1、1.5、3、および6を含む。
タスクL226は、候補の近傍を端末ピッチピークの同様の近傍と相関させる。タスクL226は、候補を中心とする長さN2サンプルの区間を、端末ピッチピークを中心とする等しい長さの区間と相関させるように一般に構成される。N2の値の例は、10、11、および17サンプルを含む。正規化相関を実行するようにタスクL226を構成することが望ましい。(たとえば、タイミングオフセットおよび/またはサンプリング誤差をなくすために)たとえば、候補の前および後の1サンプルを中心とする区間について相関を繰り返し、最大相関結果を選択するようにタスクL226を構成することが望ましい。相関ウィンドウがフレーム境界を越えて延びる場合、相関ウィンドウをシフトまたは打ち切ることが望ましい。(相関ウィンドウが打ち切られる場合、すでに正規化されているのでなければ、相関結果を正規化することが望ましい。)タスクL226はまた、相関結果が対応するしきい値TH4よりも大きい(代替的に、しきい値以上)かどうかを判断する。TH4の例示的な値は、0.75、0.65、および0.45を含む。タスクL224およびタスクL226のテストを、TH3およびTH4の値の異なるセットに従って組み合わせることができる。そのような一例では、値のセット、すなわちTH3=1およびTH4=0.75、TH3=1.5およびTH4=0.65、TH3=3およびTH4=0.45、TH3=6(この場合、タスクL226の結果は正とみなされる)のいずれかが正の結果を生成する場合、L224およびL226の結果は正である。
タスクL224およびL226の結果が正の場合、候補は、隣接するピッチピークとして受け付けられ、タスクT228は、このサンプルと端末ピッチピークとの間の距離として現在のラグ推定値を計算する。タスクL224およびL226は、いずれかの順序でおよび/または互いに並列に実行することができる。タスクL220はまた、タスクL224およびタスクL226のうちの1つのみを含むように実装できる。タスクL220が隣接するピッチピークを発見することなしに終わる場合、(白丸が端末ピッチピークを示す、図19Cに示すように)端末ピッチピークの立下り側でタスクL220を反復することが望ましい。
タスクL210およびL220のいずれもピッチピークの位置を特定しなかった場合、タスクL230は、端末ピッチピークの立上り側でピッチピークのオープンウィンドウ探索を実行する。図17Cに、サブタスクL232と、L234と、L236と、L238とを含むタスクL230の実装L230aのフローチャートを示す。端末ピッチピークから離れた例示的なある距離D1において開始し、タスクL232は、平均フレームエネルギーに対するエネルギーがしきい値(たとえば、TH1)を超える(代替的に、しきい値以下である)サンプルを発見する。図20Aに、そのような動作を示す。一例では、D1の値は、20サンプルなど、最小許容ラグ値である。タスクL234は、(図20Bに示すように)このサンプルの幅WL4のウィンドウ内で候補(たとえば、振幅または絶対値に関して最大値を有するサンプル)を発見する。一例では、WL4の値は20サンプルに等しい。
タスクL236は、候補の近傍を端末ピッチピークの同様の近傍と相関させる。タスクL236は、候補を中心とする長さN3サンプルの区間を、端末ピッチピークを中心とする等しい長さの区間と相関させるように一般に構成される。一例では、N3の値は11サンプルに等しい。正規化相関を実行するようにタスクL326を構成することが望ましい。(たとえば、タイミングオフセットおよび/またはサンプリング誤差をなくすために)たとえば、候補の前および後の1サンプルを中心とする区間について相関を繰り返し、最大相関結果を選択するようにタスクL326を構成することが望ましい。相関ウィンドウがフレーム境界を越えて延びる場合、相関ウィンドウをシフトまたは打ち切ることが望ましい。(相関ウィンドウが打ち切られる場合、すでに正規化されているのでなければ、相関結果を正規化することが望ましい。)タスクT326は、相関結果がしきい値TH5を超える(代替的に、しきい値以上である)かどうかを判断する。一例では、TH5の値は0.45に等しい。タスクL236の結果が正の場合、候補は、隣接するピッチピークとして受け付けられ、タスクT238は、このサンプルと端末ピッチピークとの間の距離として現在のラグ推定値を計算する。他の場合は、タスクL230aは、ピッチピークを発見するか、または探索し尽くすまで、(たとえば、図20Cに示すように、前の探索ウィンドウの左側で開始する)フレームにわたって反復する。
ラグ推定タスクL200が終わったとき、タスクL300は、フレーム中の他のピッチパルスの位置を特定することを実行する。タスクL300は、相関および現在のラグ推定値を使用してより多くのパルスの位置を特定するように実装できる。たとえば、タスクL300を、相関およびサンプル対RMSエネルギー値などの基準を使用して、ラグ推定値の周りの狭いウィンドウ内で最大値サンプルをテストするように構成することができる。ラグ推定タスクL200に比較して、特に端末ピッチピークに隣接するピークがすでに発見された場合、タスクL300を、より小さい探索ウィンドウおよび/または緩和基準(たとえば、より低いしきい値)を使用するように構成することができる。たとえば、オンセットまたは他の遷移フレームでは、パルス形状は、フレーム内のいくつかのパルスが強相関されないように変化することができ、パルスの振幅が十分に高く、(たとえば、現在のラグ値に従って)ロケーションが補正されている限り、第2のパルスの後のパルスの相関基準を緩和するか、さらには無視することが望ましい。有効なパルスを消失する確率を最小限に抑えることが望ましく、特に大きいラグ値について、フレームの有声部分は極めて尖っていなくてもよい。一例では、方法M300は、フレーム当たり最高8つのピッチパルスを可能にする。
タスクL300は、次のピッチピークのための2つ以上の異なる候補を計算し、これらの候補のうちの1つに従ってピッチピークを選択するように実装できる。たとえば、タスクL300を、サンプル値に基づいて候補サンプルを選択し、相関結果に基づいて候補距離を計算するように構成することができる。図21に、サブタスクL310と、L320と、L330と、L340と、L350とを含むタスクL300の実装L302のフローチャートを示す。タスクL310は、候補探索のためのアンカー位置を初期化する。たとえば、最も最近受け付けられたピッチピークの位置を初期アンカー位置として使用するように、タスクL310を構成することができる。タスクL302の第1の反復では、たとえば、アンカー位置は、タスクL200によって端末ピッチピークに隣接したピッチピークの位置が特定された場合、そのようなピークの位置、または他の場合は端末ピッチピークの位置とすることができる。また、タスクL310が、(たとえば、1の値に)ラグ乗数mを初期化することが望ましい。
タスクL320は、候補サンプルを選択し、候補距離を計算する。タスクL320を、図22Aに示すウィンドウ内でこれらの候補を探索するように構成することができ、図22Aでは、大きい有界な横線が現在のフレームを示し、左側の大きい垂直線はフレーム始端を示し、右側の大きい垂直線はフレーム終端を示し、ドットはアンカー位置を示し、影つき枠は探索ウィンドウを示す。この例では、ウィンドウは、アンカー位置からの距離が現在のラグ推定値とラグ乗数mの積であるサンプルを中心とし、ウィンドウは、左側(すなわち、時間的に後方)にWSサンプル、右側(すなわち、時間的に前方)に(WS−1)サンプル延びる。
ウィンドウサイズパラメータWSを、現在のラグ推定値の1/5の値に初期化するように、タスクL320を構成することができる。ウィンドウサイズパラメータWSが、12サンプルなど少なくとも最小値を有することが望ましい。代替的に、端末ピッチピークに隣接したピッチピークがまだ発見されていない場合、タスクL320が、ウィンドウサイズパラメータWSを現在のラグ推定値の1/2など、場合によってはより大きい値に初期化することが望ましい。
候補サンプルを発見するために、タスクL320は、ウィンドウを探索して最大値を有するサンプルを発見し、このサンプルのロケーションおよび値を記録する。タスクL320を、値が探索ウィンドウ内で最も高い振幅を有するサンプルを選択するように構成することができる。代替的に、タスクL320を、探索ウィンドウ内で、値が最も大きい絶対値または最も高いエネルギーを有するサンプルを選択するように構成することができる。
候補距離は、アンカー位置との相関が最も高い探索ウィンドウ内のサンプルに対応する。このサンプルを発見するために、タスクL320は、ウィンドウ中の各サンプルの近傍をアンカー位置の同様の近傍と相関させ、最大相関結果と対応する距離とを記録する。タスクL320は、各テストサンプルを中心とする長さN4サンプルの区間を、アンカー位置を中心とする等しい長さの区間と相関させるように一般に構成される。一例では、N4の値は11サンプルである。タスクL320が正規化相関を実行することが望ましい。
上述のように、タスクT320を、同じ探索ウィンドウを使用して、候補サンプルと候補距離とを発見するように構成することができる。ただし、タスクT320を、これらの2つの動作について異なる探索ウィンドウを使用するように構成することもできる。図22Bに、タスクL320が、サイズパラメータWS1を有するウィンドウにわたって候補サンプルの探索を実行する一例を示し、図22Cに、タスクL320の同じインスタンスが、異なる値のサイズパラメータWS2を有するウィンドウにわたって候補距離の探索を実行する一例を示す。
タスクL302は、候補サンプルと、候補距離に対応するサンプルとのうちの1つをピッチピークとして選択するサブタスクL330を含む。図23に、サブタスクL334と、L336と、L338とを含むタスクL330の実装L332のフローチャートを示す。
タスクL334は、候補距離をテストする。タスクL334は、相関結果をしきい値と比較するように一般に構成される。また、タスクL334が、対応するサンプルのエネルギーに基づく測度(たとえば、フレーム平均エネルギーに対するサンプルエネルギーの比)をしきい値と比較することが望ましい。ただ1つのピッチパルスが識別された場合、タスクL334を、候補距離が少なくとも最小値(たとえば、20サンプルなどの最小許容ラグ値)に等しいことを検証するように構成することができる。図24Aのテーブルの列は、候補距離に対応するサンプルをピッチピークとして受け付けるべきかどうかを判断するためにタスクL334の実装によって使用できるそのようなパラメータの値に基づく、テスト条件の4つの異なるセットを示す。
タスクL334が候補距離に対応するサンプルをピッチピークとして受け付けた場合、そのサンプルの振幅がより高い(代替的に、絶対値がより大きい)場合にピークロケーションを(たとえば、1サンプルだけ)左側または右側に調整することが望ましい。代替または追加として、そのような場合、タスクL334が、タスクL300のさらなる反復のために、ウィンドウサイズパラメータWSの値をより小さい値(たとえば、10サンプル)に設定する(またはパラメータWS1およびWS2のうちの一方または両方をそのような値に設定する)ことが望ましい。また、新しいピッチピークがフレームについて確認された第2のピッチピークのみである場合、タスクL334が、アンカー位置とピークロケーションとの間の距離として現在のラグ推定値を計算することが望ましい。
タスクL302は、候補サンプルをテストするサブタスクL336を含む。タスクL336を、サンプルエネルギーの測度(たとえば、フレーム平均エネルギーに対するサンプルエネルギーの比)がしきい値を超える(代替的に、しきい値以上である)かどうかを判断するように構成することができる。フレームについていくつのピッチピークが確認されたかに応じて、しきい値を変更することが望ましい。たとえば、フレームについてただ1つのピッチピークが確認された場合、タスクL336が、より低いしきい値(たとえば、T−3)を使用し、フレームについて2つ以上のピッチピークがすでに確認されている場合、より高いしきい値(たとえば、T)を使用することが望ましい。
また、タスクL336が、候補サンプルを第2の確認されたピッチピークとして選択した場合、タスクL336が、端末ピッチピークとの相関の結果に基づいて、ピークロケーションを(たとえば、1サンプルだけ)左側または右側に調整することが望ましい。そのような場合、タスクL336を、各そのようなサンプルを中心とする長さN5サンプルの区間を、端末ピッチピークを中心とする等しい長さの区間と相関させるように構成することができる(一例では、N5の値は11サンプルである)。代替または追加として、そのような場合、タスクL336が、タスクL300のさらなる反復のために、ウィンドウサイズパラメータWSの値をより小さい値(たとえば、10サンプル)に設定する(またはパラメータWS1およびWS2のうちの一方または両方をそのような値に設定する)ことが望ましい。
テストタスクL334とテストタスクL336の両方が不合格になった、およびフレームについてただ1つのピッチピークが確認された場合、タスクL302を、(タスクL350を介して)ラグ推定値乗数mの値を増分し、mの新しい値でタスクL320を反復して、新しい候補サンプルと新しい候補距離とを選択し、新しい候補についてタスクL332を繰り返すように構成することができる。
図23に示すように、タスクL336を、候補距離テストタスクL334の不合格のときに実行するように構成することができる。タスクT332の別の実装では、候補距離テストタスクL334がタスクL336の不合格のときにのみ実行するように、候補サンプルテストタスクL336を最初に実行するように構成することができる。
タスクL332は、サブタスクL338をも含む。テストタスクL334とテストタスクL336の両方が不合格になった、およびフレームについて2つ以上のピッチピークがすでに確認されている場合、タスクL338は、候補の一方または両方の、現在のラグ推定値との一致をテストする。
図24Bに、タスクL338の実装L338aのフローチャートを示す。タスクL338aは、候補距離をテストするサブタスクL362を含む。候補距離と現在のラグ推定値との間の絶対差がしきい値未満(代替的に、しきい値以下)である場合、タスクL362は候補距離を受け付ける。一例では、しきい値は3サンプルである。また、タスクL362が、相関結果および/または対応するサンプルのエネルギーが受付け可能な程度に高いことを検証することが望ましい。そのような一例では、相関結果が0.35以上であり、フレーム平均エネルギーに対するサンプルエネルギーの比が0.5以上である場合、タスクL362は、しきい値未満(代替的に、しきい値以下)である候補距離を受け付ける。また、タスクL362が候補距離を受け付けた場合、そのサンプルの振幅がより高い(代替的に、絶対値がより大きい)場合にタスクL362がピークロケーションを(たとえば、1サンプルだけ)左側または右側に調整することが望ましい。
タスクL338aはまた、候補サンプルのラグ一致をテストするサブタスクL364を含む。(A)候補サンプルと最も近接したピッチピークとの間の距離と(B)現在のラグ推定値との間の絶対差がしきい値未満(代替的に、しきい値以下)である場合、タスクL364は候補サンプルを受け付ける。一例では、しきい値は、2サンプルなどの低い値である。また、タスクL364が、候補サンプルのエネルギーが受付け可能な程度に高いことを検証することが望ましい。そのような一例では、候補サンプルがラグ一致テストに合格した場合、およびフレーム平均エネルギーに対するサンプルエネルギーの比が(T−5)以上である場合、タスクL364は、その候補サンプルを受け付ける。
図24Bに示すタスクL338aの実装はまた、タスクL364の低いしきい値よりもゆるい限界に対して候補サンプルのラグ一致をテストする別のサブタスクL366を含む。(A)候補サンプルと最も近接した確認されたピークとの間の距離と(B)現在のラグ推定値との間の絶対差がしきい値未満(代替的に、しきい値以下)である場合、タスクL366は候補サンプルを受け付ける。一例では、しきい値は(0.175*ラグ)である。また、タスクL366が、候補サンプルのエネルギーが受付け可能な程度に高いことを検証することが望ましい。そのような一例では、フレーム平均エネルギーに対するサンプルエネルギーの比が(T−3)以上である場合、タスクL366は候補サンプルを受け付ける。
候補サンプルと候補距離の両方がすべてのテストに不合格になった場合、タスクT302は、(タスクT350を介して)ラグ推定値乗数mを増分し、新しい候補サンプルと新しい候補距離とを選択するために新しい値mにおいてタスクL320を反復し、フレーム境界に到達するまで、新しい候補に対してタスクL330を繰り返す。新しいピッチピークが確認されると、フレーム境界に到達するまで、同じ方向に別のピークを探索することが望ましい。この場合、タスクL340は、アンカー位置を新しいピッチピークに移動し、ラグ推定値乗数mの値を1にリセットする。フレーム境界に到達したとき、アンカー位置を端末ピッチピーク位置に初期化し、タスクL300を反対方向に繰り返すことが望ましい。
1つのフレームから次のフレームへのラグ推定値の大きい低減は、ピッチオーバーフローエラーを示すことがある。そのようなエラーは、現在のフレームのラグ値が最大許容ラグ値を超えるように、ピッチ周波数の降下によって引き起こされる。方法M300は、(たとえば、新しいラグ推定値を計算するとき、または方法の終了時に)前のラグ推定値と現在のラグ推定値との間の絶対差または相対差をしきい値と比較し、エラーが検出された場合、フレームの最も大きいピッチピークのみを保持することが望ましい。一例では、しきい値は、前のラグ推定値の50%に等しい。
大きい絶対値2乗比をもつ2つのパルスを有する過渡として分類されるフレーム(たとえば、一般にワードの終端に向かって、大きいピッチ変化を有するフレーム)の場合、より小さいピークをピッチピークとして受け付ける前に、ごく小さいウィンドウにわたってではなく、現在のラグ推定値全体にわたって相関することが望ましい。そのような場合は、小さいウィンドウにわたってメインピークとよく相関する2次ピークを一般に有する男性ボイスの場合に発生する。タスクL200とL300の一方または両方を、そのような動作を含むように実装することができる。
方法M300のラグ推定タスクL200は、方法M100のラグ推定タスクE130と同じタスクとすることができることに明確に留意されたい。方法M300の端末ピッチピークロケーションタスクL100は、方法M100の端末ピッチピーク位置計算タスクE120と同じタスクとすることができることに明確に留意されたい。方法M100とM300の両方が実行される適用例の場合、ピッチパルス形状選択タスクE110を方法M300の終結時に実行するように構成することが望ましい。
図27Aに、音声信号のフレームのピッチピークを検出するように構成された装置MF300のブロック図を示す。装置MF300は、(たとえば、タスクL100の様々な実装に関して上記で説明したように)フレームの端末ピッチピークの位置を特定するための手段ML100を含む。装置MF300は、(たとえば、タスクL200の様々な実装に関して上記で説明したように)フレームのピッチラグを推定するための手段ML200を含む。装置MF300は、(たとえば、タスクL300の様々な実装に関して上記で説明したように)フレームの追加のピッチピークの位置を特定するための手段ML300を含む。
図27Bに、音声信号のフレームのピッチピークを検出するように構成された装置A300のブロック図を示す。装置A300は、(たとえば、タスクL100の様々な実装に関して上記で説明したように)フレームの端末ピッチピークの位置を特定するように構成された端末ピッチピークロケータA310を含む。装置A300は、(たとえば、タスクL200の様々な実装に関して上記で説明したように)フレームのピッチラグを推定するように構成されたピッチラグ推定器A320を含む。装置A300は、(たとえば、タスクL300の様々な実装に関して上記で説明したように)フレームの追加のピッチピークの位置を特定するように構成された追加のピッチピークロケータA330を含む。
図27Cに、音声信号のフレームのピッチピークを検出するように構成された装置MF350のブロック図を示す。装置MF350は、(たとえば、タスクL100の様々な実装に関して上記で説明したように)フレームのピッチピークを検出するための手段ML150を含む。装置MF350は、(たとえば、タスクL320およびL320bの様々な実装に関して上記で説明したように)候補サンプルを選択するための手段ML250を含む。装置MF350は、(たとえば、タスクL320およびL320aの様々な実装に関して上記で説明したように)候補距離を選択するための手段ML260を含む。装置MF350は、(たとえば、タスクL330の様々な実装に関して上記で説明したように)候補サンプルと候補距離に対応するサンプルとのうちの1つをフレームのピッチピークとして選択するための手段ML350を含む。
図27Dに、音声信号のフレームのピッチピークを検出するように構成された装置A350のブロック図を示す。装置A350は、(たとえば、タスクL100の様々な実装に関して上記で説明したように)フレームのピッチピークを検出するように構成されたピーク検出器150を含む。装置A350は、(たとえば、タスクL320およびL320bの様々な実装に関して上記で説明したように)候補サンプルを選択するように構成されたサンプルセレクタ250を含む。装置A350は、(たとえば、タスクL320およびL320aの様々な実装に関して上記で説明したように)候補距離を選択するように構成された距離セレクタ260を含む。装置A350は、(たとえば、タスクL330の様々な実装に関して上記で説明したように)候補サンプルと候補距離に対応するサンプルとのうちの1つをフレームのピッチピークとして選択するように構成されたピークセレクタ350を含む。
フレームの端末ピッチパルスの位置を一意に示す符号化フレームを生成するために音声エンコーダAE10、タスクE100、第1のフレームエンコーダ100、および/または手段FE100を実装することが望ましい。端末ピッチパルスの位置は、ラグ値と組み合わせられて、そのような時間同期性情報がないことがある後続のフレーム(たとえば、QPPPなどのコーディングスキームを使用して符号化されたフレーム)を復号するために重要な位相情報を与える。また、そのような位置情報を搬送するために必要なビット数を最小限に抑えることが望ましい。通常、160ビット(概して、Nビット)フレーム中の一意の位置を表すために8ビット(概して、
ビット)が必要になるが、ここで説明される方法を使用して、7ビット(概して、
ビット)のみで端末ピッチパルスの位置を符号化することができる。本方法は、ピッチパルス位置モード値として使用するために7ビット値(たとえば、127(概して、
))のうちの1つを予約する。本明細書では、「モード値」という用語は、パラメータ(たとえば、ピッチパルス位置または推定ピッチ周期)の実効値の代わりに動作モードの変更を示すために取り込まれる、そのパラメータの可能な値を示す。
最後のサンプルに対する端末ピッチパルスの位置(すなわち、フレームの最終境界)が与えられた状況では、フレームは、以下の3つのケースのうちの1つに一致することになる。
ケース1:フレームの最後のサンプルに対する端末ピッチパルスの位置は
未満(たとえば、図29Aに示す160ビットフレームの場合、127未満)であり、フレームは2つ以上のピッチパルスを含んでいる。この場合、端末ピッチパルスの位置は
ビット(7ビット)に符号化され、ピッチラグも(たとえば、7ビットで)送信される。
ケース2:フレームの最後のサンプルに対する端末ピッチパルスの位置は
未満(たとえば、図29Aに示す160ビットフレームの場合、127未満)であり、フレームは1つのピッチパルスのみを含んでいる。この場合、端末ピッチパルスの位置は
ビット(たとえば、7ビット)に符号化され、ピッチラグはラグモード値(この例では
(たとえば、127))に設定される。
ケース3:フレームの最後のサンプルに対する端末ピッチパルスの位置が
よりも大きい(たとえば、図29Bに示す160ビットフレームの場合、126よりも大きい)場合、フレームが2つ以上のピッチパルスを含んでいる可能性はない。160ビットフレームおよび8kHzのサンプリングレートの場合、これは、フレームの最初の約20パーセントにおいて少なくとも250Hzのピッチにおけるアクティビティがあり、フレームの残りにおいてピッチパルスがないことを暗示するであろう。そのようなフレームがオンセットフレームとして分類される可能性はないであろう。この場合、ピッチパルス位置モード値(たとえば、
または上記のように127)が実際のパルス位置の代わりに送信され、ラグビットは、フレームの第1のサンプルに関する端末ピッチパルスの位置(すなわち、フレームの初期境界)を搬送するために使用される。符号化フレームの位置ビットがピッチパルス位置モード値(たとえば、
のパルス位置)を示すかどうかをテストするように、対応するデコーダを構成することができる。そうであれば、デコーダは、符号化フレームのラグビットからフレームの第1のサンプルに関する端末ピッチパルスの位置を代わりに得ることができる。
160ビットフレームに適用されるケース3では、33個のそのような位置(すなわち、0〜32)が考えられる。その位置のうちの1つを別の位置に丸めることによって(たとえば、位置159を位置158に丸めることによって、または位置127を位置128に丸めることによって)、実際の位置を5つのビットのみで送信することができ、符号化フレームの7つのラグビットのうちの2つは他の情報を自由に搬送することができるようになる。また、ピッチパルス位置のうちの1つまたは複数を他のピッチパルス位置に丸めるそのようなスキームを、他の長さのフレームに対して使用して、(たとえば、符号化のために隣接する位置の各ペアを単一の位置に丸めることによって)符号化すべき一意のピッチパルス位置の総数を、場合によっては1/2だけ、またはさらに多く低減することができる。
図28に、上記の3つのケースに従って動作する方法M500の一般的構成によるフローチャートを示す。方法M500は、qビットフレーム中の端末ピッチパルスの位置をrビットを使用して符号化するように構成され、rはlog2q未満である。上述の一例では、qは160に等しく、rは7に等しい。方法M500は、音声エンコーダAE10の実装内で(たとえば、タスクE100の実装、第1のフレームエンコーダ100の実装、および/または手段FE100の実装内で)実行できる。そのような方法は、概して、1よりも大きい任意の整数値rに対して適用できる。音声適用例の場合、rは、通常(65〜1023のqの値に対応する)6から9までの範囲内の値を有する。
方法M500は、タスクT510、T520、およびT530を含む。タスクT510は、(フレームの最後のサンプルに対する)端末ピッチパルス位置が(2r−2)よりも大きい(たとえば、126よりも大きい)かどうかを判断する。その結果が真である場合、フレームは上記のケース3に一致する。この場合、タスクT520は、(たとえば、符号化フレームを搬送するパケットの)端末ピッチパルス位置ビットをピッチパルス位置モード値(たとえば、2r−1、または上記のように127)に設定し、(たとえば、パケットの)ラグビットを、フレームの第1のサンプルに対する端末ピッチパルスの位置に等しく設定する。
タスクT510の結果が偽である場合、タスクT530は、フレームが1つのピッチパルスのみを含んでいるかどうかを判断する。タスクT530の結果が真である場合、フレームは上記のケース2に一致し、ラグ値を送信する必要はない。この場合、タスクT540は、(たとえば、パケットの)ラグビットをラグモード値(たとえば、2r−1)に設定する。
タスクT530の結果が偽である場合、フレームは2つ以上のピッチパルスを含んでおり、フレームの終端に対する端末ピッチパルスの位置は(2r−2)以下(たとえば、126以下)である。そのようなフレームは上記のケース1に一致し、タスクT550は、その位置をrビットで符号化し、ラグ値をラグビットに符号化する。
第1のサンプルに対する端末ピッチパルスの位置(すなわち、初期境界)が与えられた状況では、フレームは、以下の3つのケースのうちの1つに一致することになる。
ケース1:フレームの第1のサンプルに対する端末ピッチパルスの位置は
よりも大きく(たとえば、図29Cに示す160ビットフレームの場合、32よりも大きく)、フレームは2つ以上のピッチパルスを含んでいる。この場合、端末ピッチパルスの位置−
ビット(たとえば、7ビット)に符号化され、ピッチラグも(たとえば、7ビットで)送信される。
ケース2:フレームの第1のサンプルに対する端末ピッチパルスの位置は
よりも大きく(たとえば、図29Cに示す160ビットフレームの場合、32よりも大きく)、フレームは1つのピッチパルスのみを含んでいる。この場合、端末ピッチパルスの位置−
ビット(たとえば、7ビット)に符号化され、ピッチラグは、ラグモード値(この例では、
(たとえば、127))に設定される。
以下(たとえば、図29Dに示す160ビットフレームの場合、32以下)である場合、フレームが2つ以上のピッチパルスを含んでいる可能性はない。160ビットフレームおよび8kHzのサンプリングレートの場合、これは、フレームの最初の約20パーセントにおいて少なくとも250Hzのピッチにおけるアクティビティがあり、フレームの残りにおいてピッチパルスがないことを暗示するであろう。そのようなフレームがオンセットフレームとして分類される可能性はないであろう。この場合、ピッチパルス位置モード値(たとえば、
または127)が実際のパルス位置の代わりに送信され、ラグビットは、フレームの第1のサンプルに関する端末ピッチパルスの位置(すなわち、初期境界)を送信するために使用される。符号化フレームの位置ビットがピッチパルス位置モード値(たとえば、
のパルス位置)を示すかどうかをテストするように、対応するデコーダを構成することができる。そうであれば、デコーダは、符号化フレームのラグビットからフレームの第1のサンプルに関する端末ピッチパルスの位置を代わりに得ることができる。
160ビットフレームに適用されるケース3では、33個のそのような位置(0〜32)が考えられる。その位置のうちの1つを別の位置に丸めることによって(たとえば、位置0を位置1に丸めることによって、または位置32を位置31に丸めることによって)、実際の位置を5つのビットのみで送信することができ、符号化フレームの7つのラグビットのうちの2つは他の情報を自由に搬送することができるようになる。また、パルス位置のうちの1つまたは複数を他のパルス位置に丸めるそのようなスキームを、他の長さのフレームに対して使用して、(たとえば、符号化のために隣接する位置の各ペアを単一の位置に丸めることによって)符号化すべき一意の位置の総数を、場合によっては1/2だけ、またはさらにより多く低減することができる。第1のサンプルに対する端末ピッチパルスの位置が与えられた状況では、方法M500を変更することができることを当業者は認識されよう。
図30Aに、タスクE310およびE320を含む、一般的構成による音声信号フレームを処理する方法M400のフローチャートを示す。方法M400は、音声エンコーダAE10の実装内で(たとえば、タスクE100の実装、第1のフレームエンコーダ100の実装、および/または手段FE100の実装内で)実行できる。タスクE310は、第1の音声信号フレーム内の位置(「第1の位置」)を計算する。第1の位置は、フレームの最後のサンプルに関する(代替的に、フレームの第1のサンプルに関する)フレームの端末ピッチパルスの位置である。タスクE310は、ここで説明されるパルス位置計算タスクE120またはL100のインスタンスとして実装できる。タスクE320は、第1の音声信号フレームを搬送し、第1の位置を含む第1のパケットを発生する。
方法M400は、タスクE330およびE340をも含む。タスクE330は、第2の音声信号フレーム内の位置(「第2の位置」)を計算する。第2の位置は、(A)フレームの第1のサンプルと(B)フレームの最後のサンプルとのうちの一方に関するフレームの端末ピッチパルスの位置である。タスクE330は、ここで説明されるパルス位置計算タスクE120のインスタンスとして実装できる。タスクE340は、第2の音声信号フレームを搬送し、フレーム内に第3の位置を含む第2のパケットを発生する。第3の位置は、フレームの第1のサンプルとフレームの最後のサンプルとのうちの他方に関する端末ピッチパルスの位置である。言い換えれば、タスクT330が最後のサンプルに関する第2の位置を計算する場合、第3の位置は第1のサンプルに関し、その逆も同様である。
1つの特定の例では、第1の位置は、フレームの最終サンプルに関する第1の音声信号フレームの最終ピッチパルスの位置であり、第2の位置は、フレームの最終サンプルに関する第2の音声信号フレームの最終ピッチパルスの位置であり、第3の位置は、フレームの第1のサンプルに関する第2の音声信号フレームの最終ピッチパルスの位置である。
方法M400によって処理される音声信号フレームは、一般にLPC残差信号のフレームである。第1および第2の音声信号フレームは、同じボイス通信セッションからのものか、または異なるボイス通信セッションからのものとすることができる。たとえば、第1および第2の音声信号フレームは、1人の人によって話された音声信号からのものか、または異なる人によってそれぞれ話された2つの異なる音声信号からのものとすることができる。音声信号フレームは、ピッチパルス位置が計算される前および/または後に、他の処理演算(たとえば、知覚的重み付け)を受けることができる。
第1のパケットと第2のパケットの両方が、情報の様々なアイテムについてパケット内の対応するロケーションを示す(パケットテンプレートとも呼ばれる)パケット記述に準拠することが望ましい。パケットを発生する(たとえば、タスクE320およびE340によって実行される)動作は、そのようなパケットテンプレートに従って情報の様々なアイテムをバッファに書き込むことを含むことができる。(たとえば、パケットによって搬送される値を、パケット内の値のロケーションに従って対応するパラメータに関連付けることによって)パケットの復号を可能にするために、そのようなテンプレートに従ってパケットを発生することが望ましい。
パケットテンプレートの長さは、符号化フレームの長さ(たとえば、1/4レートコーディングスキームの場合、40ビット)に等しいとすることができる。そのような一例では、パケットテンプレートは、LSP値と符号化モードとを示すために使用される17ビットの領域と、端末ピッチパルスの位置を示すために使用される7ビットの領域と、推定ピッチ周期を示すために使用される7ビットの領域と、パルス形状を示すために使用される7ビットの領域と、利得プロファイルを示すために使用される2ビットの領域とを含む。他の例では、LSP値のための領域がより小さく、利得プロファイルのための領域が相応してより大きいテンプレートを含む。代替的に、パケットテンプレートは、(たとえば、パケットが2つ以上の符号化フレームを搬送する場合には)符号化フレームよりも長いことがある。また、パケット発生動作、またはそのような動作を実行するように構成されたパケットジェネレータは、(たとえば、あるフレーム情報が他のフレーム情報よりも少ない頻度で符号化される場合)異なる長さのパケットを生成するように構成できる。
1つの一般的な場合には、方法M400は、ビットロケーションの第1および第2のセットを含むパケットテンプレートを使用するように実装される。そのような場合、第1の位置がビットロケーションの第1のセットを占めるように、第1のパケットを発生するようにタスクE320を構成し、第3の位置がビットロケーションの第2のセットを占めるように、第2のパケットを発生するようにタスクE340を構成することができる。ビットロケーションの第1および第2のセットが独立している(すなわち、パケットのビットが両方のセット中にないようにする)ことが望ましい。図31Aに、独立しているビットロケーションの第1および第2のセットを含むパケットテンプレートPT10の一例を示す。この例では、第1および第2のセットの各々は、ビットロケーションの連続する連続である。ただし、概して、セット内のビットロケーションが互いに隣接している必要はない。図31Bに、独立しているビットロケーションの第1および第2のセットを含む別のパケットテンプレートPT20の一例を示す。この例では、第1のセットは、互いから1つまたは複数の他のビットロケーションだけ分離されたビットロケーションの2つの連続を含む。たとえば、図31Cに示すように、パケットテンプレート中のビットロケーションの2つの独立セットを少なくとも部分的にインターリーブすることさえできる。
図30Bに、方法M400の実装M410のフローチャートを示す。方法M410は、第1の位置をしきい値と比較するタスクE350を含む。タスクE350は、第1の位置がしきい値未満のときに第1の状態を有し、第1の位置がしきい値よりも大きいときに第2の状態を有する結果を生成する。そのような場合、第1の状態を有するタスクE350の結果に応答して第1のパケットを発生するようにタスクE320を構成することができる。
一例では、タスクE350の結果は、第1の位置がしきい値未満のときに第1の状態を有し、他の場合(すなわち、第1の位置がしきい値以上であるときに)第2の状態を有する。別の例では、タスクE350の結果は、第1の位置がしきい値以下のときに第1の状態を有し、他の場合(すなわち、第1の位置がしきい値よりも大きいときに)第2の状態を有する。タスクE350は、ここで説明されるタスクT510のインスタンスとして実装できる。
図30Cに、方法M410の実装M420のフローチャートを示す。方法M420は、第2の位置をしきい値と比較するタスクE360を含む。タスクE360は、第2の位置がしきい値未満のときに第1の状態を有し、第2の位置がしきい値よりも大きいときに第2の状態を有する結果を生成する。そのような場合、第2の状態を有するタスクE360の結果に応答して第2のパケットを発生するように、タスクE340を構成することができる。
一例では、タスクE360の結果は、第2の位置がしきい値未満のときに第1の状態を有し、他の場合(すなわち、第2の位置がしきい値以上であるときに)第2の状態を有する。別の例では、タスクE360の結果は、第2の位置がしきい値以下のときに第1の状態を有し、他の場合(すなわち、第2の位置がしきい値よりも大きいときに)第2の状態を有する。タスクE360は、ここで説明されるタスクT510のインスタンスとして実装できる。
方法M400は、第2の位置に基づいて第3の位置を得るように一般に構成される。たとえば、方法M400は、フレーム長から第2の位置を減算し、結果を減分することによって、またはフレーム長未満の値である値から第2の位置を減算することによって、または第2の位置とフレーム長とに基づく別の演算を実行することによって、第3の位置を計算するタスクを含むことができる。ただし、場合によっては、(たとえば、タスクE120に関して)ここで説明されるピッチパルス位置計算演算のいずれかに従って第3の位置を得るように、方法M400を構成することができる。
図32Aに、方法M400の実装M430のフローチャートを示す。方法M430は、フレームのピッチ周期を推定するタスクE370を含む。タスクE370は、ここで説明されるピッチ周期推定タスクE130またはL200のインスタンスとして実装できる。この場合、パケット発生タスクE320は、第1のパケットが、推定ピッチ周期を示す符号化ピッチ周期値を含むように実装される。たとえば、符号化ピッチ周期値がパケットのビットロケーションの第2のセットを占めるように、タスクE320を構成することができる。符号化ピッチ周期値が、推定ピッチ周期を最小ピッチ周期値(たとえば、20)に対するオフセットとして示すように、(たとえば、タスクE370内で)符号化ピッチ周期値を計算するように、方法M430を構成することができる。たとえば、推定ピッチ周期から最小ピッチ周期値を減算することによって符号化ピッチ周期値を計算するように、方法M430(たとえば、タスクE370)を構成することができる。
図32Bに、ここで説明される比較タスクE350をも含む方法M430の実装M440のフローチャートを示す。図32Cに、ここで説明される比較タスクE360をも含む方法M440の実装M450のフローチャートを示す。
図33Aに、音声信号フレームを処理するように構成された装置MF400のブロック図を示す。装置MF100は、(たとえば、タスクE310、E120、および/またはL100の様々な実装に関して上記で説明したように)第1の位置を計算するための手段FE310と、(たとえば、タスクE320の様々な実装に関して上記で説明したように)第1のパケットを発生するための手段FE320とを含む。装置MF100は、(たとえば、タスクE330、E120、および/またはL100の様々な実装に関して上記で説明したように)第2の位置を計算するための手段FE330と、(たとえば、タスクE340の様々な実装に関して上記で説明したように)第2のパケットを発生するための手段FE340とを含む。装置MF400はまた、(たとえば、方法M400に関して上記で説明したように)第3の位置を計算するための手段を含むことができる。
図33Bに、(たとえば、タスクE350の様々な実装に関して上記で説明したように)第1の位置をしきい値と比較するための手段FE350をも含む装置MF400の実装MF410のブロック図を示す。図33Cに、(たとえば、タスクE360の様々な実装に関して上記で説明したように)第2の位置をしきい値と比較するための手段FE360をも含む装置MF410の実装MF420のブロック図を示す。
図34Aに、装置MF400の実装MF430のブロック図を示す。装置MF430は、(たとえば、タスクE370、E130、および/またはL200の様々な実装に関して上記で説明したように)第1のフレームのピッチ周期を推定するための手段FE370を含む。図34Bに、手段FE370を含む装置MF430の実装MF440のブロック図を示す。図34Cに、手段FE360を含む装置MF440の実装MF450のブロック図を示す。
図35Aは、ピッチパルス位置計算器160とパケットジェネレータ170とを含む、一般的構成による音声信号フレームを処理するための装置(たとえば、フレームエンコーダ)A400のブロック図を示す。ピッチパルス位置計算器160は、(たとえば、タスクE310、E120、および/またはL100に関して上記で説明したように)第1の音声信号フレーム内の第1の位置を計算し、(たとえば、タスクE330、E120、および/またはL100に関して上記で説明したように)第2の音声信号フレーム内の第2の位置を計算するように構成される。たとえば、ピッチパルス位置計算器160は、ここで説明されるピッチパルス位置計算器120または端末ピークロケータA310のインスタンスとして実装できる。パケットジェネレータ170は、(たとえば、タスクE320に関して上記で説明したように)第1の音声信号フレームを表し第1の位置を含む第1のパケットを発生し、(たとえば、タスクE340に関して上記で説明したように)第2の音声信号フレームを表し第2の音声信号フレーム内の第3の位置を含む第2のパケットを発生するように構成される。
パケットジェネレータ170は、符号化モード、パルス形状、1つまたは複数のLSPベクトル、および/または利得プロファイルなど、符号化フレームの他のパラメータ値を示す情報を含むようにパケットを発生するように構成できる。パケットジェネレータ170は、装置A400の他の要素から、および/または装置A400を含むデバイスの他の要素からそのような情報を受信するように構成できる。たとえば、装置A400は、(たとえば、音声信号フレームを発生するために)LPC分析を実行するか、または残差発生器RG10のインスタンスなどの別の要素からLPC分析パラメータ(たとえば、1つまたは複数のLSPベクトル)を受信するように構成できる。
図35Bに、コンパレータ180をも含む装置A400の実装A402のブロック図を示す。コンパレータ180は、(たとえば、タスクE350の様々な実装に関して上記で説明したように)第1の位置をしきい値と比較し、第1の位置がしきい値未満のときに第1の状態を有し、第1の位置がしきい値よりも大きいときに第2の状態を有する第1の出力を生成するように構成される。この場合、パケットジェネレータ170は、第1の状態を有する第1の出力に応答して第1のパケットを発生するように構成できる。
また、コンパレータ180は、(たとえば、タスクE360の様々な実装に関して上記で説明したように)第2の位置をしきい値と比較し、第2の位置がしきい値未満のときに第1の状態を有し、第2の位置がしきい値よりも大きいときに第2の状態を有する第2の出力を生成するように構成できる。この場合、パケットジェネレータ170は、第2の状態を有する第2の出力に応答して第2のパケットを発生するように構成できる。
図35Cは、(たとえば、タスクE370、E130、および/またはL200に関して上記で説明したように)第1の音声信号フレームのピッチ周期を推定するように構成されたピッチ周期推定器190を含む装置A400の実装A404のブロック図を示す。たとえば、ピッチ周期推定器190は、ここで説明されるピッチ周期推定器130またはピッチラグ推定器A320のインスタンスとして実装できる。この場合、パケットジェネレータ170は、推定ピッチ周期を示すビットのセットがビットロケーションの第2のセットを占めるように、第1のパケットを発生するように構成される。図35Dに、ピッチ周期推定器190を含む装置A402の実装A406のブロック図を示す。
音声エンコーダAE10は、装置A400を含むように実装できる。たとえば、音声エンコーダAE20の第1のフレームエンコーダ104は、ピッチパルス位置計算器120が計算器160としても働く(場合によっては、ピッチ周期推定器130が推定器190としても働く)ように装置A400のインスタンスを含むように実装できる。
図36Aは、一般的構成による、符号化フレーム(たとえば、パケット)を復号する方法M550のフローチャートを示す。方法M550は、タスクD305、D310、D320、D330、D340、D350、およびD360を含む。タスクD305は、符号化フレームから値PおよびLを抽出する。符号化フレームがここで説明されるパケットテンプレートに準拠する場合、符号化フレームのビットロケーションの第1のセットからPを抽出し、符号化フレームのビットロケーションの第2のセットからLを抽出するようにタスクD305を構成することができる。タスクD310は、Pをピッチ位置モード値と比較する。Pがピッチ位置モード値に等しい場合、タスクD320は、復号フレームの第1および最後のサンプルのうちの一方に対するパルス位置をLから得る。タスクD320はまた、フレーム中のパルスの数Nに値1を割り当てる。Pがピッチ位置モード値に等しくない場合、タスクD330は、復号フレームの第1および最後のサンプルのうちの他方に対するパルス位置をPから得る。タスクD340は、Lをピッチ周期モード値と比較する。Lがピッチ周期モード値に等しい場合、タスクD350は、フレーム中のパルスの数Nに値1を割り当てる。他の場合は、タスクD360は、Lからピッチ周期値を得る。一例では、タスクD360は、最小ピッチ周期値をLに追加することによってピッチ周期値を計算するように構成される。ここで説明されるフレームデコーダ300または手段FD100は、方法M550を実行するように構成できる。
図37に、タスクD410、D420、およびD430を含む、一般的構成によるパケットを復号する方法M560のフローチャートを示す。タスクD410は、(たとえば、方法M400の実装によって生成された)第1のパケットから第1の値を抽出する。第1のパケットがここで説明されるテンプレートに準拠する場合、パケットのビットロケーションの第1のセットから第1の値を抽出するように、タスクD410を構成することができる。タスクD420は、第1の値をピッチパルス位置モード値と比較する。第1の値がピッチパルス位置モード値に等しいときに第1の状態を有し、他の場合は第2の状態を有する結果を生成するようにタスクD420を構成することができる。タスクD430は、第1の値に従って第1の励振信号内のピッチパルスを構成する。タスクD430は、ここで説明されるタスクD110のインスタンスとして実装でき、第2の状態を有するタスクD420の結果に応答して実行するように構成できる。第1および最後のサンプルのうちの一方に対するそのピークのロケーションが第1の値と一致するように、第1の励振信号内のピッチパルスを構成するように、タスクD430を構成することができる。
方法M560はまた、タスクD440、D450、D460、およびD470を含む。タスクD440は、第2のパケットから第2の値を抽出する。第2のパケットがここで説明されるテンプレートに準拠する場合、パケットのビットロケーションの第1のセットから第2の値を抽出するように、タスクD440を構成することができる。タスクD470は、第2のパケットから第3の値を抽出する。パケットがここで説明されるテンプレートに準拠する場合、パケットのビットロケーションの第2のセットから第3の値を抽出するように、タスクD470を構成することができる。タスクD450は、第2の値をピッチパルス位置モード値と比較する。第2の値がピッチパルス位置モード値に等しいときに第1の状態を有し、他の場合は第2の状態を有する結果を生成するようにタスクD450を構成することができる。タスクD460は、第3の値に従って第2の励振信号内のピッチパルスを構成する。タスクD460は、ここで説明されるタスクD110の別のインスタンスとして実装でき、第1の状態を有するタスクD450の結果に応答して実行するように構成できる。
第1および最後のサンプルのうちの他方に対するそのピークのロケーションが第3の値と一致するように、第2の励振信号内のピッチパルスを構成するように、タスクD460を構成することができる。たとえば、タスクD430が、第1の励振信号の最後のサンプルに対するそのピークのロケーションが第1の値と一致するように、第1の励振信号内のピッチパルスを構成する場合、タスクD460は、第2の励振信号の第1のサンプルに対するそのピークのロケーションが第3の値と一致するように、第2の励振信号内のピッチパルスを構成するように構成でき、その逆も同様である。ここで説明されるフレームデコーダ300または手段FD100は、方法M560を実行するように構成できる。
図38に、タスクD480およびD490を含む方法M560の実装M570のフローチャートを示す。タスクD480は、第1のパケットから第4の値を抽出する。第1のパケットがここで説明されるテンプレートに準拠する場合、パケットのビットロケーションの第2のセットから第4の値(たとえば、符号化ピッチ周期値)を抽出するように、タスクD480を構成することができる。第4の値に基づいて、タスクD490は、第1の励振信号内の別のピッチパルス(「第2のピッチパルス」)を構成する。第1の値に基づいて第1の励振信号内の第2のピッチパルスを構成するように、タスクD490を構成することもできる。たとえば、第1の構成されたピッチパルスに対する第1の励振信号内の第2のピッチパルスを構成するように、タスクD490を構成することができる。タスクD490は、ここで説明されるタスクD120のインスタンスとして実装できる。
2つのピッチピーク間の距離が、第4の値に基づくピッチ周期値に等しくなるように第2のピッチピークを構成するように、タスクD490を構成することができる。そのような場合、ピッチ周期値を計算するようにタスクD480またはタスクD490を構成することができる。たとえば、最小ピッチ周期値を第4の値に加算することによってピッチ周期値を計算するように、タスクD480またはタスクD490を構成することができる。
図39に、パケットを復号するための装置MF560のブロック図を示す。装置MF560は、(たとえば、タスクD410の様々な実装に関して上記で説明したように)第1のパケットから第1の値を抽出するための手段FD410と、(たとえば、タスクD420の様々な実装に関して上記で説明したように)第1の値をピッチパルス位置モード値と比較するための手段FD420と、(たとえば、タスクD430の様々な実装に関して上記で説明したように)第1の値に従って第1の励振信号内のピッチパルスを構成するための手段FD430とを含む。手段FD430は、ここで説明される手段FD110のインスタンスとして実装できる。装置MF560はまた、(たとえば、タスクD440の様々な実装に関して上記で説明したように)第2のパケットから第2の値を抽出するための手段FD440と、(たとえば、タスクD470の様々な実装に関して上記で説明したように)第2のパケットから第3の値を抽出するための手段FD470と、(たとえば、タスクD450の様々な実装に関して上記で説明したように)第2の値をピッチパルス位置モード値と比較するための手段FD450と、(たとえば、タスクD460の様々な実装に関して上記で説明したように)第3の値に従って第2の励振信号内のピッチパルスを構成するための手段FD460とを含む。手段FD460は、手段FD110の別のインスタンスとして実装できる。
図40に、装置MF560の実装MF570のブロック図を示す。装置MF570は、(たとえば、タスクD480の様々な実装に関して上記で説明したように)第1のパケットから第4の値を抽出するための手段FD480と、(たとえば、タスクD490の様々な実装に関して上記で説明したように)第4の値に基づいて第1の励振信号内の別のピッチパルスを構成するための手段FD490とを含む。手段FD490は、ここで説明される手段FD120のインスタンスとして実装できる。
図36Bに、パケットを復号するための装置A560のブロック図を示す。装置A560は、(たとえば、タスクD410の様々な実装に関して上記で説明したように)第1のパケットから第1の値を抽出するように構成されたパケットパーサ510と、(たとえば、タスクD420の様々な実装に関して上記で説明したように)第1の値をピッチパルス位置モード値と比較するように構成されたコンパレータ520と、(たとえば、タスクD430の様々な実装に関して上記で説明したように)第1の値に従って第1の励振信号内のピッチパルスを構成するように構成された励振信号発生器530とを含む。パケットパーサ510はまた、(たとえば、タスクD440の様々な実装に関して上記で説明したように)第2のパケットから第2の値を抽出し、(たとえば、タスクD470の様々な実装に関して上記で説明したように)第2のパケットから第3の値を抽出するように構成される。コンパレータ520はまた、(たとえば、タスクD450の様々な実装に関して上記で説明したように)第2の値をピッチパルス位置モード値と比較するように構成される。励振信号発生器530はまた、(たとえば、タスクD460の様々な実装に関して上記で説明したように)第3の値に従って第2の励振信号内のピッチパルスを構成するように構成される。励振信号発生器530は、ここで説明される第1の励振信号発生器310のインスタンスとして実装できる。
装置A560の別の実装では、パケットパーサ510はまた、(たとえば、タスクD480の様々な実装に関して上記で説明したように)第1のパケットから第4の値を抽出するように構成され、励振信号発生器530はまた、(たとえば、タスクD490の様々な実装に関して上記で説明したように)第4の値に基づいて第1の励振信号内の別のピッチパルスを構成するように構成される。
音声エンコーダAD10は、装置A560を含むように実装できる。たとえば、音声デコーダAD20の第1のフレームデコーダ304は、第1の励振信号発生器310が励振信号発生器530としても働くように、装置A560のインスタンスを含むように実装できる。
1/4レートはフレーム当たり40ビットを可能にする。符号化タスクE100、エンコーダ100、または手段FE100の実装によって適用される遷移フレームコーディングフォーマットの一例(たとえば、パケットテンプレート)では、17ビットの領域を使用してLSP値と符号化モードとを示し、7ビットの領域を使用して端末ピッチパルスの位置を示し、7ビットの領域を使用してラグを示し、7ビットの領域を使用してパルス形状を示し、2ビットの領域を使用して利得プロファイルを示す。他の例では、LSP値のための領域がより小さく、利得プロファイルのための領域が相応してより大きいフォーマットを含む。
示されたパルス形状ベクトルを、端末ピッチパルスロケーションとラグ値とによって示されるロケーションの各々にコピーし、得られた信号を利得VQテーブル出力に従ってスケーリングすることによって、パルス形状VQテーブル出力から励振信号を構成するように、対応するデコーダ(たとえば、デコーダ300もしくは560の実装、または手段FD100もしくはMF560の実装、あるいは、復号方法M550もしくはM560または復号タスクD100の実装を実行しているデバイス)を構成することができる。示されたパルス形状ベクトルがラグ値よりも長い場合、隣接するパルス間の重複を、重複した値の各ペアを平均化することによって、各ペアのうちの一方の値(たとえば、最高値もしくは最低値、または左側のパルスもしくは右側のパルスに属する値)を選択することによって、あるいは単にラグ値を越えるサンプルを廃棄することによって処理することができる。同様に、(たとえば、ピッチパルスピークロケーションおよび/またはラグ推定値に従って)励振信号の第1または最後のピッチパルスを構成するとき、フレーム境界外に出る任意のサンプルを、隣接するフレームの対応するサンプルで平均化するか、または単に廃棄することができる。
励振信号のピッチパルスは単にインパルスまたはスパイクではない。そうではなく、ピッチパルスは、典型的に、話者依存である時間にわたる振幅プロファイルまたは形状を有し、この形状を保持することが話者認識にとって重要である。後続の有声フレームのための基準(たとえば、プロトタイプ)として役立つようにピッチパルス形状の良好な表現を符号化することが望ましい。
ピッチパルスの形状は、話者特定および認識にとって知覚的に重要な情報を与える。この情報をデコーダに与えるために、(たとえば、タスクE100、エンコーダ100、または手段FE100の実装によって実行される)遷移フレームコーディングモードを、ピッチパルス形状情報を符号化フレーム中に含めるように構成することができる。ピッチパルス形状を符号化することが、次元が可変であるベクトルを量子化するという問題を提示することがある。たとえば、残差中のピッチ周期の長さ、したがってピッチパルスの長さは、広範囲にわたって変化することがある。上記で説明した一例では、許容ピッチラグ値は20サンプルから146サンプルまで変動する。
ピッチパルスを周波数領域に変換することなしに、そのパルスの形状を符号化することが望ましい。図41に、第1のフレームエンコーダ100の実装によって、および/または手段FE100の実装によってタスクE100の実装内で実行できる、一般的構成によるフレームを符号化する方法M600のフローチャートを示す。方法M600は、タスクT610、T620、T630、T640、およびT650を含む。タスクT610は、フレームが単一のピッチパルスを有するか、または複数のピッチパルスを有するかに応じて、2つの処理経路のうちの一方を選択する。タスクT610を実行する前に、フレームが単一のピッチパルスを有するか、または複数のピッチパルスを有するかを判断するためにピッチパルスを検出するための方法(たとえば、方法M300)を少なくとも十分に実行することが望ましい。
単一パルスフレームの場合、タスクT620は、異なる単一パルスベクトル量子化(VQ)テーブルのセットのうちの1つを選択する。この例では、タスクT620は、(たとえば、タスクE120またはL100、手段FE120またはML100、ピッチパルス位置計算器120、あるいは端末ピークロケータA310によって計算される)フレーム内のピッチパルスの位置に従ってVQテーブルを選択するように構成される。次いで、タスクT630は、選択されたVQテーブルのベクトルを選択することによって(たとえば、選択されたVQテーブル内で最良の一致を発見し、対応するインデックスを出力することによって)パルス形状を量子化する。
一致すべきパルス形状にエネルギーが最も近接しているパルス形状ベクトルを選択するように、タスクT630を構成することができる。一致すべきパルス形状は、フレーム全体、またはピークを含むフレームの若干より小さい部分(たとえば、フレーム長の1/4など、ピークのある距離内の区間)とすることができる。一致演算を実行する前に、一致すべきパルス形状の振幅を正規化することが望ましい。
一例では、タスクT630は、一致すべきパルス形状と選択されたテーブルの各パルス形状ベクトルとの間の差を計算し、最小エネルギーをもつ差に対応するパルス形状ベクトルを選択するように構成される。別の例では、タスクT630は、エネルギーが一致すべきパルス形状のエネルギーに最も近接しているパルス形状ベクトルを選択するように構成される。そのような場合、(ピッチパルスまたは他のベクトルなどの)サンプルのシーケンスのエネルギーは、2乗サンプルの和として計算できる。タスクT630は、ここで説明されるパルス形状選択タスクE110のインスタンスとして実装できる。
単一パルスVQテーブルのセット中の各テーブルは、フレームの長さ(たとえば、160サンプル)と同じ大きさとすることができるベクトル次元を有する。各テーブルが、そのテーブル中のベクトルに一致すべきパルス形状と同じベクトル次元を有することが望ましい。1つの特定の例では、単一パルスVQテーブルのセットは3つのテーブルを含み、パルス形状が7ビットインデックスとして符号化できるように、各テーブルが最高128個のエントリを有する。
(たとえば、ここで説明される抽出タスクD305またはD440、手段FD440、あるいはパケットパーサ510によって判断された)符号化フレームのパルス位置値がピッチパルス位置モード値(たとえば、(2r−1)または127)に等しい場合にフレームを単一パルスとして識別するように、対応するデコーダ(たとえば、デコーダ300、MF560、またはA560の実装、あるいは手段FD100、あるいは復号タスクD100または方法M560の実装を実行しているデバイス)を構成することができる。そのような決定は、ここで説明される比較タスクD310またはD450、手段FD450、あるいはコンパレータ520の出力に基づくことができる。代替または追加として、ラグ値がピッチ周期モード値(たとえば、(2r−1)または127)に等しい場合にフレームを単一パルスとして識別するように、そのようなデコーダを構成することができる。
タスクT640は、複数のパルスフレームから一致すべき少なくとも1つのピッチパルスを抽出する。たとえば、最大利得をもつピッチパルス(たとえば、最高のピークを含んでいるピッチパルス)を抽出するようにタスクT640を構成することができる。抽出されたピッチパルスの長さが(たとえば、タスクE370、E130、またはL200によって計算された)推定ピッチ周期に等しいことが望ましい。パルスを抽出したとき、ピークが、1つまたは複数の重要なサンプルの不連続および/または欠損をもたらすことがある、抽出されたパルスの第1のサンプルまたは最後のサンプルではないことを確認することが望ましい。場合によっては、ピーク後の情報はピーク前の情報よりも音声品質にとって重要であり、したがってピークが始端の近くになるようにパルスを抽出することが望ましい。一例では、タスクT640は、ピッチピークより2サンプル前に開始するピッチ周期から形状を抽出する。そのような手法により、ピーク後に発生し、重要な形状情報を含んでいる可能性があるサンプルをキャプチャすることが可能になる。別の例では、同じく重要な情報を含んでいる可能性がある、ピーク前のより多くのサンプルをキャプチャすることが望ましい。さらなる一例では、タスクT640は、ピークを中心とするピッチ周期を抽出するように構成される。タスクT640は、フレームから2つ以上のピッチパルスを抽出し(たとえば、最高のピークを有する2つのピッチパルスを抽出し)、抽出されたピッチパルスから一致すべき平均パルス形状を計算することが望ましい。タスクT640および/またはタスクT660は、パルス形状ベクトル選択を実行する前に、一致すべきパルス形状の振幅を正規化することが望ましい。
複数パルスフレームの場合、タスクT650は、ラグ値(または、抽出されたプロトタイプの長さ)に基づいてパルス形状VQテーブルを選択する。複数パルスフレームを符号化するために9個または10個のパルス形状VQテーブルのセットを与えることが望ましい。セット中のVQテーブルの各々は、異なるベクトル次元を有し、異なるラグ範囲または「ビン」に関連する。そのような場合、タスクT650は、どのビンが(たとえば、タスクE370、E130、またはL200によって計算された)現在の推定ピッチ周期を含んでいるかを判断し、そのビンに対応するVQテーブルを選択する。現在の推定ピッチ周期が105サンプルに等しい場合、たとえば、タスクT650は、101サンプルから110サンプルまでのラグ範囲を含むビンに対応するVQテーブルを選択することができる。一例では、パルス形状が7ビットインデックスとして符号化できるように、複数パルスパルス形状VQテーブルの各々は最高128個のエントリを有する。一般に、VQテーブル中のパルス形状ベクトルのすべては同じベクトル次元を有することになるが、VQテーブルの各々は、一般に(たとえば、対応するビンのラグ範囲中の最大値に等しい)異なるベクトル次元を有することになる。
タスクT660は、選択されたVQテーブルのベクトルを選択することによって(たとえば、選択されたVQテーブル内で最良の一致を発見し、対応するインデックスを出力することによって)パルス形状を量子化する。量子化すべきパルス形状の長さはテーブルエントリの長さに正確に一致しないので、テーブルから最良の一致を選択する前に、対応するテーブルベクトルサイズに一致するように、パルス形状を(たとえば、終端において)ゼロパディングするように、タスクT660を構成することができる。代替または追加として、テーブルから最良の一致を選択する前に、対応するテーブルベクトルサイズに一致するように、パルス形状の端を打ち切るように、タスクT660を構成することができる。
可能な(許容)ラグ値の範囲を均一な様式でまたは不均一な様式でビンに分割することができる。図42Aに示す均一な分割の一例では、20〜146サンプルのラグ範囲は、20〜33、34〜47、48〜61、62〜75、76〜89、90〜103、104〜117、118〜131、および132〜146サンプルの9つのビンに分割される。この例では、最後のビンを除くすべてのビンは14サンプルの幅を有し、最後のビンは15サンプルの幅を有する。
上記の均一な分割では、低いピッチ周波数における品質に比較して、高いピッチ周波数における品質が低くなることがある。上記の例では、タスクT660が、長さが20サンプルのピッチパルスを一致の前に65%だけ延長する(たとえば、ゼロパディングする)ように構成できるが、長さが132サンプルのピッチパルスは、わずか11%だけ延長され得る(たとえば、ゼロパディングされ得る)。不均一な分割を使用することの1つの潜在的な利点は、異なるラグビン間で最大相対延長を等化することである。図42Bに示す不均一な分割の一例では、20〜146サンプルのラグ範囲は、20〜23、24〜29、30〜37、38〜47、48〜60、61〜76、77〜96、97〜120、および121〜146サンプルの9つのビンに分割される。この場合、長さが20サンプルのピッチパルスを一致の前に15%だけ延長し(たとえば、ゼロパディングし)、長さが121サンプルのピッチパルスを21%だけ延長する(たとえば、ゼロパディングする)ように、タスクT660を構成することができる。この分割スキームでは、20〜146サンプルの範囲中のピッチパルスの最大延長は25%にすぎない。
符号化フレームからラグ値とパルス形状インデックス値とを得、ラグ値を使用して適切なパルス形状VQテーブルを選択し、パルス形状インデックス値を使用して選択されたパルス形状VQテーブルから所望のパルス形状を選択するように、対応するデコーダ(たとえば、デコーダ300、MF560、もしくはA560、または手段FD100の実装、あるいは復号タスクD100または方法M560の実装を実行するデバイス)を構成することができる。
図43Aに、タスクE410、E420およびE430を含む、一般的構成によるピッチパルスの形状を符号化する方法M650のフローチャートを示す。タスクE410は、音声信号フレーム(たとえば、LPC残差のフレーム)のピッチ周期を推定する。タスクE410は、ここで説明されるピッチ周期推定タスクE130、L200、および/またはE370のインスタンスとして実装できる。推定ピッチ周期に基づいて、タスクE420は、パルス形状ベクトルの複数のテーブルのうちの1つを選択する。タスクE420は、ここで説明されるタスクT650のインスタンスとして実装できる。音声信号フレームの少なくとも1つのピッチパルスからの情報に基づいて、タスクE430は、パルス形状ベクトルの選択されたテーブル中のパルス形状ベクトルを選択する。タスクE430は、ここで説明されるタスクT660のインスタンスとして実装できる。
推定ピッチ周期に基づく値を複数の異なる値の各々と比較するように、テーブル選択タスクE420を構成することができる。ここで説明されるラグ範囲ビンのセットのうちのどれが推定ピッチ周期を含むかを判断するために、たとえば、推定ピッチ周期を、ビンのセットのうちの2つ以上の各々のより高い範囲(または、より低い範囲)と比較するように、タスクE420を構成することができる。
パルス形状ベクトルの選択されたテーブル中で、一致すべきピッチパルスにエネルギーが最も近接しているパルス形状ベクトルを選択するように、ベクトル選択タスクE430を構成することができる。一例では、タスクE430は、一致すべきピッチパルスと選択されたテーブルの各パルス形状ベクトルとの間の差を計算し、最小エネルギーをもつ差に対応するパルス形状ベクトルを選択するように構成される。別の例では、タスクE430は、エネルギーが一致すべきピッチパルスのエネルギーに最も近接しているパルス形状ベクトルを選択するように構成される。そのような場合、(ピッチパルスまたは他のベクトルなどの)サンプルのシーケンスのエネルギーは、2乗サンプルの和として計算できる。
図43Bに、タスクE440を含む方法M650の実装M660のフローチャートを示す。タスクE440は、(A)推定ピッチ周期に基づく第1の値と、(B)選択されたテーブル中で選択されたパルス形状ベクトルを識別する第2の値(たとえば、テーブルインデックス)とを含むパケットを発生する。第1の値は、最小ピッチ周期値(たとえば、20)に対するオフセットとして、推定ピッチ周期を示すことができる。たとえば、推定ピッチ周期から最小ピッチ周期値を減算することによって第1の値を計算するように、方法M660(たとえば、タスクE410)を構成することができる。
第1および第2の値をビットロケーションのそれぞれの独立セット中に含むようにパケットを発生するように、タスクE440を構成することができる。たとえば、ここで説明される、ビット位置の第1のセットとビット位置の第2のセットとを有するテンプレートに従ってパケットを発生するように、タスクE440を構成することができ、第1および第2のセットは独立している。そのような場合、タスクE440は、ここで説明されるパケット発生タスクE320のインスタンスとして実装できる。タスクE440のそのような実装は、ビットロケーションの第1のセット中のピッチパルス位置と、ビットロケーションの第2のセット中の第1の値と、第1および第2のセットとは独立しているビットロケーションの第3のセット中の第2の値とを含むようにパケットを発生するように構成できる。
図43Cに、タスクE450を含む方法M650の実装M670のフローチャートを示す。タスクE450は、音声信号フレームの複数のピッチパルスの中からピッチパルスを抽出する。タスクE450は、ここで説明されるタスクT640のインスタンスとして実装できる。エネルギー測度に基づいてピッチパルスを選択するようにタスクE450を構成することができる。たとえば、ピークが最高のエネルギーを有するピッチパルス、または最高のエネルギーを有するピッチパルスを選択するように、タスクE450を構成することができる。方法M670では、抽出されたピッチパルスにとって(または、抽出されたピッチパルスと別の抽出されたピッチパルスとの平均など、抽出されたピッチパルスに基づくパルス形状にとって)最良の一致であるパルス形状ベクトルを選択するように、ベクトル選択タスクE430を構成することができる。
図46Aに、タスクE460、E470、およびE480を含む方法M650の実装M680のフローチャートを示す。タスクE460は、第2の音声信号フレーム(たとえば、LPC残差のフレーム)のピッチパルスの位置を計算する。第1および第2の音声信号フレームは、同じボイス通信セッションからのものか、または異なるボイス通信セッションからのものとすることができる。たとえば、第1および第2の音声信号フレームは、1人の人によって話された音声信号からのものか、または異なる人によってそれぞれ話された2つの異なる音声信号からのものとすることができる。音声信号フレームは、ピッチパルス位置が計算される前および/または後に、他の処理演算(たとえば、知覚的重み付け)を受けることができる。
計算されたピッチパルス位置に基づいて、タスクE470は、パルス形状ベクトルの複数のテーブルのうちの1つを選択する。タスクE470は、ここで説明されるタスクT620のインスタンスとして実装できる。タスクE470は、第2の音声信号フレームが1つのピッチパルスのみを含んでいるという(たとえば、タスクE460による、または場合によっては方法M680による)判断に応答して実行できる。第2の音声信号フレームからの情報に基づいて、タスクE480は、パルス形状ベクトルの選択されたテーブル中のパルス形状ベクトルを選択する。タスクE480は、ここで説明されるタスクT630のインスタンスとして実装できる。
図44Aに、ピッチパルスの形状を符号化するための装置MF650のブロック図を示す。装置MF650は、(たとえば、タスクE410、E130、L200、および/またはE370の様々な実装に関して上記で説明したように)音声信号フレームのピッチ周期を推定するための手段FE410と、(たとえば、タスクE420および/またはT650の様々な実装に関して上記で説明したように)パルス形状ベクトルのテーブルを選択するための手段FE420と、(たとえば、タスクE430および/またはT660の様々な実装に関して上記で説明したように)選択されたテーブル中のパルス形状ベクトルを選択するための手段FE430とを含む。
図44Bに、装置MF650の実装MF660のブロック図を示す。装置MF660は、(たとえば、タスクE440に関して上記で説明したように)(A)推定ピッチ周期に基づく第1の値と、(B)選択されたテーブル中で選択されたパルス形状ベクトルを識別する第2の値と含むパケットを発生するための手段FE440を含む。図44Cに、(たとえば、タスクE450に関して上記で説明したように)音声信号フレームの複数のピッチパルスの中からピッチパルスを抽出するための手段FE450を含む装置MF650の実装MF670のブロック図を示す。
図46Bに、装置MF650の実装MF680のブロック図を示す。装置MF680は、(たとえば、タスクE460に関して上記で説明したように)第2の音声信号フレームのピッチパルスの位置を計算するための手段FE460と、(たとえば、タスクE470に関して上記で説明したように)計算されたピッチパルス位置に基づいてパルス形状ベクトルの複数のテーブルのうちの1つを選択するための手段FE470と、(たとえば、タスクE480に関して上記で説明したように)第2の音声信号フレームからの情報に基づいてパルス形状ベクトルの選択されたテーブル中でパルス形状ベクトルを選択するための手段FE480とを含む。
図45Aに、ピッチパルスの形状を符号化するための装置A650のブロック図を示す。装置A650は、(たとえば、タスクE410、E130、L200、および/またはE370の様々な実装に関して上記で説明したように)音声信号フレームのピッチ周期を推定するように構成されたピッチ周期推定器540を含む。たとえば、ピッチ周期推定器540は、ここで説明されるピッチ周期推定器130、190、またはA320のインスタンスとして実装できる。装置A650はまた、(たとえば、タスクE420および/またはT650の様々な実装に関して上記で説明したように)推定ピッチ周期に基づいて、パルス形状ベクトルのテーブルを選択するように構成されたベクトルテーブルセレクタ550を含む。装置A650はまた、(たとえば、タスクE430および/またはT660の様々な実装に関して上記で説明したように)音声信号フレームの少なくとも1つのピッチパルスからの情報に基づいて、選択されたテーブル中でパルス形状ベクトルを選択するように構成されたパルス形状ベクトルセレクタ560を含む。
図45Bに、(たとえば、タスクE440に関して上記で説明したように)(A)推定ピッチ周期に基づく第1の値と、(B)選択されたテーブル中で選択されたパルス形状ベクトルを識別する第2の値と含むパケットを発生するように構成されたパケットジェネレータ570を含む装置A650の実装A660のブロック図を示す。パケットジェネレータ570は、ここで説明されるパケットジェネレータ170のインスタンスとして実装できる。図45Cに、(たとえば、タスクE450に関して上記で説明したように)音声信号フレームの複数のピッチパルスの中からピッチパルスを抽出するように構成されたピッチパルス抽出器580を含む装置A650の実装MF670のブロック図を示す。
図46Cに、装置A650の実装A680のブロック図を示す。装置A680は、(たとえば、タスクE460に関して上記で説明したように)第2の音声信号フレームのピッチパルスの位置を計算するように構成されたピッチパルス位置計算器590を含む。たとえば、ピッチパルス位置計算器590は、ここで説明されるピッチパルス位置計算器120または160、あるいは端末ピークロケータA310のインスタンスとして実装できる。この場合、ベクトルテーブルセレクタ550はまた、(たとえば、タスクE470に関して上記で説明したように)計算されたピッチパルス位置に基づいてパルス形状ベクトルの複数のテーブルのうちの1つを選択するように構成され、パルス形状ベクトルセレクタ560はまた、(たとえば、タスクE480に関して上記で説明したように)第2の音声信号フレームからの情報に基づいてパルス形状ベクトルの選択されたテーブル中でパルス形状ベクトルを選択するように構成される。
音声エンコーダAE10は、装置A650を含むように実装できる。たとえば、音声エンコーダAE20の第1のフレームエンコーダ104は、ピッチ周期推定器130が推定器540としても働くように、装置A650のインスタンスを含むように実装できる。第1のフレームエンコーダ104のそのような実装はまた、装置A400のインスタンス(たとえば、パケットジェネレータ170がパケットジェネレータ570としても働くように、装置A402のインスタンス)を含むことができる。
図47Aに、一般的構成によるピッチパルスの形状を復号する方法M800のブロック図を示す。方法M800は、タスクD510、D520、D530、およびD540を含む。タスクD510は、(たとえば、方法M660の実装によって生成された)符号化音声信号のパケットから符号化ピッチ周期値を抽出する。タスクD510は、ここで説明されるタスクD480のインスタンスとして実装できる。符号化ピッチ周期値に基づいて、タスクD520は、パルス形状ベクトルの複数のテーブルのうちの1つを選択する。タスクD530は、パケットからインデックスを抽出する。インデックスに基づいて、タスクD540は、選択されたテーブルからパルス形状ベクトルを得る。
図47Bに、タスクD550およびD560を含む方法M800の実装M810のブロック図を示す。タスクD550は、パケットからピッチパルス位置インジケータを抽出する。タスクD550は、ここで説明されるタスクD410の実例として実装できる。ピッチパルス位置インジケータに基づいて、タスクD560は、励振信号内でパルス形状ベクトルに基づくピッチパルスを構成する。タスクD560は、ここで説明されるタスクD430の実例として実装できる。
図48Aに、タスクD570、D575、D580、およびD585を含む方法M800の実装M820のブロック図を示す。タスクD570は、第2のパケットからピッチパルス位置インジケータを抽出する。第2のパケットは、第1のパケットと同じボイス通信セッションからのものか、または異なるボイス通信セッションからのものとすることができる。タスクD570は、ここで説明されるタスクD410のインスタンスとして実装できる。第2のパケットからのピッチパルス位置インジケータに基づいて、タスクD575は、パルス形状ベクトルの第2の複数のテーブルのうちの1つを選択する。タスクD580は、第2のパケットからインデックスを抽出する。第2のパケットからのインデックスに基づいて、タスクD585は、第2の複数のテーブルのうちの選択されたテーブルからパルス形状ベクトルを得る。方法M820はまた、得られたパルス形状ベクトルに基づいて励振信号を発生するように構成できる。
図48Bに、ピッチパルスの形状を復号するための装置MF800のブロック図を示す。装置MF800は、(たとえば、タスクD510の様々な実装に関してここで説明されたように)パケットから符号化ピッチ周期値を抽出するための手段FD510と、(たとえば、タスクD520の様々な実装に関してここで説明されたように)パルス形状ベクトルの複数のテーブルのうちの1つを選択するための手段FD520と、(たとえば、タスクD530の様々な実装に関してここで説明されたように)パケットからインデックスを抽出するための手段FD530と、(たとえば、タスクD540の様々な実装に関してここで説明されたように)選択されたテーブルからパルス形状ベクトルを得るための手段FD540とを含む。
図49Aに、装置MF800の実装MF810のブロック図を示す。装置MF810は、(たとえば、タスクD550の様々な実装に関してここで説明されたように)パケットからピッチパルス位置インジケータを抽出するための手段FD550と、(たとえば、タスクD560の様々な実装に関してここで説明されたように)励振信号内でパルス形状ベクトルに基づくピッチパルスを構成するための手段FD560とを含む。
図49Bに、装置MF800の実装MF820のブロック図を示す。装置MF820は、(たとえば、タスクD570の様々な実装に関してここで説明されたように)第2のパケットからピッチパルス位置インジケータを抽出するための手段FD570と、(たとえば、タスクD575の様々な実装に関してここで説明されたように)第2のパケットからの位置インジケータに基づいてパルス形状ベクトルの第2の複数のテーブルのうちの1つを選択するための手段FD575とを含む。装置MF820はまた、(たとえば、タスクD580の様々な実装に関してここで説明されたように)第2のパケットからインデックスを抽出するための手段FD580と、(たとえば、タスクD585の様々な実装に関してここで説明されたように)第2のパケットからのインデックスに基づいて第2の複数のテーブルのうちの選択されたテーブルからパルス形状ベクトルを得るための手段FD585とを含む。
図50Aに、ピッチパルスの形状を復号するための装置A800のブロック図を示す。装置A800は、(たとえば、タスクD510の様々な実装に関してここで説明されたように)パケットから符号化ピッチ周期値を抽出し、(たとえば、タスクD530の様々な実装に関してここで説明されたように)パケットからインデックスを抽出するように構成されたパケットパーサ610を含む。パケットパーサ620は、ここで説明されるパケットパーサ510のインスタンスとして実装できる。装置A800はまた、(たとえば、タスクD520の様々な実装に関してここで説明されたように)パルス形状ベクトルの複数のテーブルのうちの1つを選択するように構成されたベクトルテーブルセレクタ620と、(たとえば、タスクD540の様々な実装に関してここで説明されたように)選択されたテーブルからパルス形状ベクトルを得るように構成されたベクトルテーブルリーダ630とを含む。
パケットパーサ610はまた、(たとえば、タスクD570およびD580の様々な実装に関してここで説明されたように)第2のパケットからパルス位置インジケータとインデックスとを抽出するように構成できる。ベクトルテーブルセレクタ620はまた、(たとえば、タスクD575の様々な実装に関してここで説明されたように)第2のパケットからの位置インジケータに基づいてパルス形状ベクトルの複数のテーブルのうちの1つを選択するように構成できる。ベクトルテーブルリーダ630はまた、(たとえば、タスクD585の様々な実装に関してここで説明されたように)第2のパケットからのインデックスに基づいて第2の複数のテーブルのうちの選択されたテーブルからパルス形状ベクトルを得るように構成できる。図50Bに、(たとえば、タスクD560の様々な実装に関してここで説明されたように)励振信号内にパルス形状ベクトルに基づくピッチパルスを構成するように構成された励振信号発生器640を含む装置A800の実装A810のブロック図を示す。励振信号発生器640は、ここで説明される励振信号発生器310および/または530のインスタンスとして実装できる。
音声エンコーダAE10は、装置A800を含むように実装できる。たとえば、音声エンコーダAE20の第1のフレームエンコーダ104は、装置A800のインスタンスを含むように実装できる。第1のフレームエンコーダ104のそのような実装はまた、装置A560のインスタンスを含むことができ、その場合、パケットパーサ510はパケットパーサ620としても働くことができ、および/または、励振信号発生器530は励振信号発生器640としても働くことができる。
一構成による音声エンコーダは、(たとえば、音声エンコーダAE20の実装によれば)上述の1/4レートNELP(QNELP)コーディングスキーム、1/4レートPPP(QPPP)コーディングスキーム、および遷移フレームコーディングスキームの3つまたは4つのコーディングスキームを使用して、異なるクラスのフレームを符号化する。QNELPコーディングスキームは、無声フレームおよび立下り過渡フレームを符号化するために使用される。QNELPコーディングスキーム、または1/8レートNELPコーディングスキームは、無音フレーム(たとえば、背景雑音)を符号化するために使用される。QPPPコーディングスキームは、有声フレームを符号化するために使用される。遷移フレームコーディングスキームは、立上り過渡(すなわち、オンセット)フレームおよび過渡フレームを符号化するために使用される。図26のテーブルに、これらの4つのコーディングスキームの各々に対するビット割振りの例を示す。
現代のボコーダは、一般に音声フレームの分類を実行する。たとえば、そのようなボコーダは、無音、無声、有声、過渡、立下り過渡、および立上り過渡の、上述した6つの異なるクラスのうちの1つとしてフレームを分類するスキームに従って動作することができる。そのようなスキームの例が米国特許出願公開第2002/0111798号(Huang)に記載されている。また、そのような分類スキームの一例が、3GPP2(Third Generation Partnership Project 2)文書「Enhanced Variable Rate Codec,Speech Service Options 3,68,and 70 for Wideband Spread Spectrum Digital Systems」(3GPP2 C.S0014−C、2007年1月、www−dot−3gpp2−dot−orgでオンライン入手可能)のセクション4.8(pp.4−57〜4−71)に記載されている。このスキームは、図51のテーブル中に記載された特徴を使用してフレームを分類しており、このセクション4.8は、ここで説明される「EVRC分類スキーム」の一例として参照によりここに組み込まれる。EVRC分類スキームの同様の例について、図55〜図63のコードリストに記載する。
図51のテーブル中に出現するパラメータE、EL、およびEHは(160ビットフレームの場合)次のように計算できる。
上式で、sL(n)およびsH(n)は、それぞれ入力音声信号の(12次極零型低域フィルタを使用して)低域フィルタ処理されたバージョンおよび入力音声信号の(12次極零型高域フィルタを使用して)高域フィルタ処理されたバージョンである。EVRC分類スキームにおいて使用できる他の特徴は、前のフレームモード決定(「prev_mode」)と、前のフレーム中の固定有声音声の存在(「prev_voiced」)と、現在のフレームのボイスアクティビティ検出結果(「curr_va」)とを含む。
分類スキームにおいて使用される重要な特徴は、ピッチベースの正規化自己相関関数(NACF)である。図52に、ピッチベースのNACFを計算するためのプロシージャのフローチャートを示す。最初に、現在のフレームと(ルックアヘッドフレームとも呼ばれる)次のフレームとのLPC残差を、約100Hzにおいて3dBカットオフ周波数を有する3次高域フィルタを通してフィルタ処理する。非量子化LPC係数値を使用して、この残差を計算することが望ましい。次いで、フィルタ処理された残差を、長さ13の有限インパルス応答(FIR)フィルタを用いて低域フィルタ処理し、ファクタ2でデシメートする。デシメートした信号をrd(n)によって示す。
現在のフレームの2つのサブフレームに対するNACFを、k=1,2の場合、
のように、最大化をすべての整数iにわたって行う。上式で、lag(k)はピッチ推定ルーチン(たとえば、相関ベースの技法)によって推定されるサブフレームkに対するラグ値である。また、現在のフレームの第1および第2のサブフレームに対するこれらの値を、それぞれnacf_at_pitch[2](「nacf_ap[2]」とも書かれる)およびnacf_ap[3]として参照する。前のフレームの第1および第2のサブフレームに対して上式に従って計算したNACF値を、それぞれnacf_ap[0]およびnacf_ap[1]として参照する。
のように、最大化をすべての整数iにわたって行う。また、この値をnacf_ap[4]として参照する。
図53は、ハイレベルでのEVRC分類スキームを示すフローチャートである。モード決定は、前のモード決定とNACFなどの特徴とに基づく状態間の遷移として考えられ、状態は、異なるフレーム分類である。図54は、EVRC分類スキームでの状態間の可能な遷移を示す状態図であり、ラベルS、UN、UP、TR、V、およびDOWNは、それぞれ無音、無声、立上り過渡、過渡、有声、および立下り過渡のフレーム分類を示す。
(現在のフレームの第2のサブフレームのNACFで、「nacf_ap[2]」とも書かれる)nacf_at_pitch[2]と、しきい値VOICEDTHおよびUNVOICEDTHとの間の関係に応じて、3つの異なるプロシージャのうちの1つを選択することによってEVRC分類スキームを実装することができる。図55および図56にわたるコードリストに、nacf_ap[2]>VOICEDTHのときに使用することができるプロシージャを記載する。図57〜図59にわたるコードリストに、nacf_ap[2]<UNVOICEDTHのときに使用することができるプロシージャを記載する。図60〜図63にわたるコードリストに、nacf_ap[2]≧UNVOICEDTHおよびnacf_ap[2]≦VOICEDTHのときに使用することができるプロシージャを記載する。
特徴curr_ns_snr[0]の値に従ってしきい値VOICEDTH、LOWVOICEDTH、およびUNVOICEDTHの値を変化させることが望ましい。たとえば、curr_ns_snr[0]の値がSNRしきい値25dB以上である場合、明瞭な音声に対するしきい値VOICEDTH=0.75、LOWVOICEDTH=0.5、UNVOICEDTH=0.35を適用し、curr_ns_snr[0]の値がSNRしきい値25dB未満である場合、雑音が多い音声に対するしきい値VOICEDTH=0.65、LOWVOICEDTH=0.5、UNVOICEDTH=0.35を適用することができる。
フレームの正確な分類は、低レートボコーダの良好な品質を保証するのに特に重要である。たとえば、オンセットフレームが少なくとも1つの別個のピークまたはパルスを有する場合のみ、ここで説明される遷移フレームコーディングモードを使用することが望ましい。そのような特徴は確実なパルス検出にとって重要であり、それがなければ、遷移フレームコーディングモードは歪められた結果を生成することがある。PPPまたは遷移フレームコーディングスキームではなくNELPコーディングスキームを使用して、少なくとも1つの別個のピークまたはパルスがないフレームを符号化することが望ましい。たとえば、そのような過渡フレームまたは立上り過渡フレームを無声フレームとして再分類することが望ましい。
そのような再分類は、1つまたは複数の正規化自己相関関数(NACF)値および/または他の特徴に基づくことができる。再分類はまた、フレームのピーク対RMSエネルギー値(「最大サンプル/RMSエネルギー」)および/またはフレーム中のピッチパルスの実際の数(「ピーク数」)など、EVRC分類スキームに使用されない特徴に基づくことができる。図64のテーブルに示す8個の条件のうちのいずれか1つまたは複数、および/または図65のテーブルに示す10個の条件のうちのいずれか1つまたは複数は、立上り過渡フレームを無声フレームとして再分類するために使用される。図66のテーブルに示す11個の条件のうちのいずれか1つまたは複数、および/または図67のテーブルに示す11個の条件のうちのいずれか1つまたは複数は、過渡フレームを無声フレームとして再分類するために使用される。図68のテーブルに示す4つの条件のうちのいずれか1つまたは複数は、有声フレームを無声フレームとして再分類するために使用される。また、そのような再分類をローバンド雑音が比較的ないフレームに限定することが望ましい。たとえば、図65、図67、または図68の条件のいずれかに従って、あるいは、curr_ns_snr[0]の値が25dB以上である場合のみ、図66の7つの右端の条件のいずれかに従って、フレームを再分類することが望ましい。
逆に、少なくとも1つの別個のピークまたはパルスを含む無声フレームを立上り過渡フレームまたは過渡フレームとして再分類することが望ましい。そのような再分類は、1つまたは複数の正規化自己相関関数(normalized autocorrelation:NACF)値および/または他の特徴に基づくことができる。また、再分類は、フレームのピーク対RMSエネルギー値および/またはピーク数など、EVRC分類スキームにおいて使用されない特徴に基づくことができる。図69のテーブルに示す7つの条件のうちのいずれか1つまたは複数は、無声フレームを立上り過渡フレームとして再分類するために使用される。図70のテーブルに示す9つの条件のうちのいずれか1つまたは複数は、無声フレームを過渡フレームとして再分類するために使用される。図71Aのテーブルに示す条件は、立下り過渡フレームを有声フレームとして再分類するために使用される。図71Bのテーブルに示す条件は、立下り過渡フレームを過渡フレームとして再分類するために使用される。
フレーム再分類の代替として、EVRC分類スキームなどのフレーム分類の方法は、EVRC分類スキームと、上述したおよび/または図64〜図71Bに示す再分類条件のうちの1つまたは複数との組合せに等しい分類結果を生成するように変更できる。
図72に、音声エンコーダAE20の実装AE30のブロック図を示す。図55〜図63のコードリストで説明するEVRC分類スキームなどの分類スキームを適用するように、コーディングスキームセレクタC200を構成することができる。音声エンコーダAE30は、上述したおよび/または図64〜図71Bに示す条件のうちの1つまたは複数に従って、フレームを再分類するように構成されたフレーム再分類器RC10を含む。フレーム分類、および/またはコーディングスキームセレクタC200からの他のフレーム特徴の値を受信するように、フレーム再分類器RC10を構成することができる。また、追加のフレーム特徴(たとえば、ピーク対RMSエネルギー値、ピーク数)の値を計算するように、フレーム再分類器RC10を構成することができる。代替的に、EVRC分類スキームと、上述したおよび/または図64〜図71Bに示す再分類条件のうちの1つまたは複数との組合せに等しい分類結果を生成するコーディングスキームセレクタC200の実装を含むように、音声エンコーダAE30を実装することができる。
図73Aに、音声エンコーダAE10の実装AE40のブロック図を示す。音声エンコーダAE40は、周期フレームを符号化するように構成された周期フレームエンコーダE70と、非周期フレームを符号化するように構成された非周期フレームエンコーダE80とを含む。たとえば、音声エンコーダAE40は、有声、過渡、立上り過渡、または立下り過渡として分類されたフレームの場合は周期フレームエンコーダE70を選択し、無声または無音として分類されたフレームの場合は非周期フレームエンコーダE80を選択するように、セレクタ60a、60bに指示するように構成されたコーディングスキームセレクタC200の実装を含むことができる。音声エンコーダAE40のコーディングスキームセレクタC200は、EVRC分類スキームと、上述したおよび/または図64〜図71Bに示す再分類条件のうちの1つまたは複数との組合せに等しい分類結果を生成するように実装できる。
図73Bに、周期フレームエンコーダE70の実装E72のブロック図を示す。エンコーダE72は、ここで説明される第1のフレームエンコーダ100の実装と、第2のフレームエンコーダ200の実装とを含む。エンコーダE72はまた、コーディングスキームセレクタC200からの分類結果に従って現在のフレームに対して、エンコーダ100および200のうちの1つを選択するように構成されたセレクタ80a、80bを含む。第2のフレームエンコーダ200(たとえば、QPPPエンコーダ)を周期フレームに対するデフォルトのエンコーダとして選択するように、周期フレームエンコーダE72を構成することが望ましい。無声フレームエンコーダ(たとえば、QNELPエンコーダ)と無音フレームエンコーダ(たとえば、1/8レートNELPエンコーダ)とのうちの1つを選択するように、非周期フレームエンコーダE80を同様に実装することができる。代替的に、非周期フレームエンコーダE80を無声フレームエンコーダUE10のインスタンスとして実装することができる。
図74に、周期フレームエンコーダE72の実装E74のブロック図を示す。エンコーダE74は、上述したおよび/または図64〜図71Bに示す条件のうちの1つまたは複数に従ってフレームを再分類し、再分類の結果に従って現在のフレームに対してエンコーダ100および200のうちの1つを選択するようにセレクタ80a、80bを制御するように構成されたフレーム再分類器RC10のインスタンスを含む。さらなる一例では、フレーム再分類器RC10を含むか、あるいは、EVRC分類スキームと、上述したおよび/または図64〜図71Bに示す再分類条件のうちの1つまたは複数との組合せに等しい分類スキームを実行し、そのような分類または再分類によって示される第1のフレームエンコーダ100を選択するように、コーディングスキームセレクタC200を構成することができる。
上述の遷移フレームコーディングモードを使用して、過渡フレームおよび/または立上り過渡フレームを符号化することが望ましい。図75A〜図75Dに、ここで説明される遷移フレームコーディングモードの使用が望ましい、いくつかの典型的なフレームシーケンスを示す。これらの例では、遷移フレームコーディングモードの使用を、典型的に輪郭を太く描いたフレームとして示す。そのようなコーディングモードは典型的に、比較的一定のピッチ周期およびシャープなパルスを有する完全な有声フレーム、または、部分的な有声フレームに対して適切に機能する。ただし、フレームにシャープなパルスがないとき、またはフレームが発声の実際のオンセットに先行するとき、復号された音声の品質が低くなることがある。場合によっては、遷移フレームコーディングモードの使用をスキップまたはキャンセルするか、あるいは、さもなければこのコーディングモードの使用を後のフレーム(たとえば、後続のフレーム)まで遅延させることが望ましい。
パルス検出失敗が、ピッチ誤差、パルスの消失、および/または外来パルスの挿入を引き起こすことがある。そのような誤差が、復号された音声中にポップ、クリックおよび/または他の不連続などのひずみをもたらすことがある。したがって、フレームが遷移フレームコーディングに好適であることを検証することが望ましく、フレームが好適でないとき、遷移フレームコーディングモードの使用をキャンセルすることがそのような問題を低減するのに役立つ。
過渡フレームまたは立上り過渡フレームが遷移フレームコーディングモードに好適でないことが判断されることがある。たとえば、フレームに、別個のシャープなパルスがないことがある。そのような場合、遷移フレームコーディングモードを使用して、好適でないフレームの後に続く第1の好適な有声フレームを符号化することが望ましい。たとえば、オンセットフレームに別個のシャープなパルスがない場合、後に続く第1の好適な有声フレームに対して遷移フレームコーディングを実行することが望ましい。そのような技法は、後続の有声フレームに対する良好な基準を保証するのに役立つ。
場合によっては、遷移フレームコーディングモードの使用は、パルス利得不一致問題および/またはパルス形状不一致問題をもたらす。限られた数のビットしかこれらのパラメータを符号化するために利用可能ではなく、遷移フレームコーディングが別様に示されているが、現在のフレームが良好な基準を与えないことがある。遷移フレームコーディングモードの不要な使用をキャンセルすることが、そのような問題を低減するのに役立つ。したがって、遷移フレームコーディングモードが現在のフレームにとって別のコーディングモードよりも好適であることを検証することが望ましい。
遷移フレームコーディングの使用をスキップまたはキャンセルした場合、遷移フレームコーディングモードを使用して後に続く第1の好適なフレームを符号化する行為が、後続の有声フレームに良好な基準を与えるのに役立つので、そのような行為を行うことが望ましい。たとえば、まさにその次のフレームが少なくとも部分的に有声である場合、そのフレームに対して遷移フレームコーディングを強制することが望ましい。
遷移フレームコーディングのニーズ、および/または遷移フレームコーディングに対するフレームの適合性は、現在のフレーム分類、前のフレーム分類、(たとえば、本明細書で参照した3GPP2文書C.S0014−Cのセクション4.6.3に記載されている一例で、相関ベースの技法などのピッチ推定ルーチンによって判断された)初期ラグ値、(たとえば、方法M300などのパルス検出動作によって判断された)変更されたラグ値、前のフレームのラグ値、および/またはNACF値などの基準に基づいて判断できる。
良好な基準なしにQPPPを使用した結果は予測不可能になることがあるので、有声区間の始端の近くで遷移フレームコーディングモードを使用することが望ましい。ただし、場合によっては、QPPPは、遷移フレームコーディングモードよりも良好な結果を与えることが予想される。たとえば、場合によっては、遷移フレームコーディングモードの使用は、不良基準を生じるか、またはQPPPを使用することよりも好ましくない結果を引き起こすことさえ予想される。
遷移フレームコーディングが現在のフレームに不要である場合、遷移フレームコーディングをスキップすることが望ましい。そのような場合、(たとえば、QPPPの連続性を保持するために)QPPPなどの有声コーディングモードにデフォルト設定されることが望ましい。遷移フレームコーディングモードの不要な使用は、(たとえば、これらの特徴に対する限定されたビットバジェットにより)後のフレームにおけるパルス利得および/またはパルス形状の不一致の問題をもたらすことがある。QPPPなど、限定された時間同期性を有する有声コーディングモードは、特にそのような誤差に反応することができる。
遷移フレームコーディングスキームを使用してフレームを符号化した後、符号化結果を検査し、符号化結果が不良である場合、フレームに対する遷移フレームコーディングの使用を除去することが望ましい。大部分が無声であり、終端の近くでのみ有声になるフレームの場合、遷移コーディングモードを、パルスなしに無声部分を(たとえば、0または低い値として)符号化するように構成するか、または遷移コーディングモードを、無声部分の少なくとも一部をパルスで充填するように構成することができる。無声部分がパルスなしに符号化された場合、フレームは、復号された信号中に可聴クリックまたは不連続を生成することがある。そのような場合、NELPコーディングスキームをフレームに対して代わりに使用することが望ましい。ただし、ひずみを引き起こすことがある有声区間に対するNELPの使用を避けることが望ましい。遷移コーディングモードがフレームに対してキャンセルされた場合、たいていの場合、無声コーディングモード(たとえば、QNELP)ではなく有声コーディングモード(たとえば、QPPP)を使用してフレームを符号化することが望ましい。上述のように、遷移コーディングモードを使用するという選択を、遷移コーディングモードと有声コーディングモードとの間の選択として実装することができる。良好な基準なしにQPPPを使用した結果は予測不可能である(たとえば、フレームの位相は、先行する無声フレームから導出できる)が、復号された信号中にクリックまたは不連続を生成する可能性はない。そのような場合、遷移コーディングモードの使用は、次のフレームまで延期されることがある。
フレーム間のピッチ不連続が検出されたとき、フレームに対して遷移コーディングモードを使用するという決定をオーバーライドすることが望ましい。一例では、タスクT710は、前のフレームとのピッチ連続性について検査する(たとえば、ピッチ2倍誤差について検査する)。フレームが有声または過渡として分類され、パルス検出ルーチンによって現在のフレームに対して示されたラグ値が、パルス検出ルーチンによって前のフレームに対して示されたラグ値よりもはるかに小さい(たとえば、その約1/2、1/3、または1/4である)場合、タスクは、遷移コーディングモードを使用するという決定をキャンセルする。
別の例では、タスクT720は、前のフレームに比較してピッチオーバーフローについて検査する。音声が最大許容ラグよりも高いラグ値を生じる極めて低いピッチ周波数を有するとき、ピッチオーバーフローが発生する。前のフレームに対するラグ値が大きく(たとえば、100サンプルよりも多く)、ピッチ推定ルーチンとパルス検出ルーチンとによって現在のフレームに対して示されたラグ値が、両方とも前のピッチよりもはるかに小さい(たとえば、その50%よりも小さい)場合、遷移コーディングモードを使用するという決定をキャンセルするように、そのようなタスクを構成することができる。そのような場合、また、フレームの最も大きいピッチパルスのみを単一パルスとして保持することが望ましい。代替的に、前のラグ推定値と、有声および/または相対コーディングモード(たとえば、タスクE200、QPPP)とを使用してフレームを符号化することができる。
2つの異なるルーチンからの結果の間の不整合が検出されたとき、フレームに対して遷移コーディングモードを使用するという決定をオーバーライドすることが望ましい。一例では、タスクT730は、強いNACFの存在下での、ピッチ推定ルーチン(たとえば、本明細書で参照した3GPP2文書C.S0014−Cのセクション4.6.3に記載されている、たとえば相関ベースの技法)からのラグ値と、パルス検出ルーチン(たとえば、方法M300)からの推定ピッチ周期との間の整合性について検査する。検出された第2のパルスのピッチにおける極めて高いNACFが良好なピッチ推定値を示すので、2つのラグ推定値間の不整合が予期しないものとなる。パルス検出ルーチンからのラグ推定値がピッチ推定ルーチンからのラグ推定値とは極めて異なる(たとえば、その1.6倍、または160パーセントよりも大きい)場合、遷移コーディングモードを使用するという決定をキャンセルするように、そのようなタスクを構成することができる。
別の例では、タスクT740は、ラグ値と端末パルスの位置との間の一致について検査する。(ピーク間の距離の平均とすることができる)ラグ推定値を使用して符号化された、ピーク位置のうちの1つまたは複数が、対応する実際のピーク位置とはあまりに異なるとき、遷移フレームコーディングモードを使用するという決定をキャンセルすることが望ましい。端末パルスの位置とパルス検出ルーチンによって計算されたラグ値とを使用して、再構成されたピッチパルス位置を計算し、再構成された位置の各々をパルス検出アルゴリズムによって検出された実際のピッチピーク位置と比較し、差のいずれかが大きすぎる(たとえば、8サンプルよりも大きい)場合、遷移フレームコーディングを使用するという決定をキャンセルするように、タスクT740を構成することができる。
さらなる一例では、タスクT750は、ラグ値とパルス位置との間の一致について検査する。最終ピッチピークが最終フレーム境界から2つ以上のラグ周期だけ離れている場合、遷移フレームコーディングを使用するという決定をキャンセルするように、そのようなタスクを構成することができる。たとえば、最終ピッチパルスの位置とフレームの終端との間の距離が最終ラグ推定値(たとえば、ラグ推定タスクL200および/または方法M300によって計算されたラグ値)よりも大きい場合、遷移フレームコーディングを使用するという決定をキャンセルするように、そのようなタスクを構成することができる。そのような条件は、パルス検出失敗、またはまだ安定していないラグを示すことができる。
現在のフレームが2つのパルスを有し、過渡フレームとして分類された場合、および2つのパルスのピークの2乗絶対値の比が大きい場合、ラグ値全体にわたって2つのパルスを相関させ、相関結果が対応するしきい値よりも大きくなければ(代替的に、しきい値以上でなければ)より小さいピークを除去することが望ましい。また、より小さいピークが除去された場合、フレームに対して遷移フレームコーディングモードを使用するという決定をキャンセルすることが望ましい。
図76に、フレームに対して遷移フレームコーディングを使用するという決定をキャンセルするために使用できる2つのルーチンのコードリストを示す。このリストで、mod_lagは、パルス検出ルーチンからのラグ値を示し、orig_lagは、ピッチ推定ルーチンからのラグ値を示し、pdelay_transient_codingは、前のフレームに対するパルス検出ルーチンからのラグ値を示し、PREV_TRANSIENT_FRAME_Eは、遷移コーディングモードが前のフレームに対して使用されたかどうかを示し、loc[0]は、フレームの最終ピッチピークの位置を示す。
図77に、遷移フレームコーディングを使用するという決定をキャンセルするために使用できる4つの異なる条件を示す。このテーブルで、curr_modeは、現在のフレーム分類を示し、prev_modeは、前のフレームに対するフレーム分類を示し、number_of_pulsesは、現在のフレーム中のパルスの数を示し、prev_no_of_pulsesは、前のフレーム中のパルスの数を示し、pitch_doublingは、ピッチ2倍誤差が現在のフレーム中で検出されたかどうかを示し、delta_lag_intraは、ピッチ推定ルーチン(たとえば、本明細書で参照した3GPP2文書C.S0014−Cのセクション4.6.3に記載されている、たとえば相関ベースの技法)からのラグ値と、たとえば方法M300などのパルス検出ルーチンからのラグ値との間の差の(たとえば、整数の)絶対値(または、ピッチ2倍が検出された場合、ピッチ推定ルーチンからのラグ値の半分と、パルス検出ルーチンからのラグ値との間の差の絶対値)を示し、delta_lag_interは、前のフレームの最終ラグ値と、現在のフレームに対するピッチ推定ルーチンからのラグ値(またはピッチ2倍が検出された場合、そのラグ値の半分)との間の差の(たとえば、浮動小数点の)絶対値を示し、NEED_TRANSは、現在のフレームに対する遷移フレームコーディングモードの使用が前のフレームのコーディング中に示されたかどうかを示し、TRANS_USEDは、遷移コーディングモードが前のフレームを符号化するために使用されたかどうかを示し、fully_voicedは、端末ピッチパルスの位置と反対側のフレームの終端との間の距離を最終ラグ値によって除算した整数部分がnumber_of_pulses−1に等しいかどうかを示す。しきい値の例には、T1A=[0.1*(パルス検出ルーチンからのラグ値)+0.5]、T1B=[0.05*(パルス検出ルーチンからのラグ値)+0.5]、T2A=[0.2*(前のフレームに対する最終ラグ値)]、およびT2B=[0.15*(前のフレームに対する最終ラグ値)]がある。
タスクT710〜T750、図76のコードリスト、および図77に示す条件など、遷移コーディングモードを使用するという決定をキャンセルするための上述の設定のうちの1つまたは複数を含むように、フレーム再分類器RC10を実装することができる。たとえば、図78に示す方法M700を実行し、テストタスクT710〜T750のいずれかが不合格になった場合、遷移コーディングモードを使用するという決定をキャンセルするように、フレーム再分類器RC10を実装することができる。
図79Aに、タスクE510、E520、E530、およびE540を含む、一般的構成による音声信号フレームを符号化する方法M900のフローチャートを示す。タスクE510は、フレームの残差(たとえば、LPC残差)のピークエネルギーを計算する。最も大きい振幅を有するサンプル(代替的に、最も大きい絶対値を有するサンプル)の値を2乗することによってピークエネルギーを計算するように、タスクE510を構成することができる。タスクE520は、残差の平均エネルギーを計算する。サンプルの2乗値を合計し、その合計をフレーム中のサンプル数で除算することによって平均エネルギーを計算するように、タスクE520を構成することができる。計算されたピークエネルギーと計算された平均エネルギーとの間の関係に基づいて、タスクE530は、雑音励振コーディングスキーム(たとえば、ここで説明されたNELPスキーム)、または(たとえば、タスクE100に関してここで説明された)非差分ピッチプロトタイプコーディングスキームのいずれかを選択する。タスクE540は、タスクE530によって選択されたコーディングスキームに従ってフレームを符号化する。タスクE530が非差分ピッチプロトタイプコーディングスキームを選択する場合、タスクE540は、フレームのピッチパルスの時間領域形状の表現と、フレームのピッチパルスの位置の表現と、フレームの推定ピッチ周期の表現とを含む、符号化フレームを生成することを含む。たとえば、タスクE540は、ここで説明されるタスクE100のインスタンスを含むように実装できる。
典型的に、タスクE530が基づく計算されたピークエネルギーと計算された平均エネルギーとの間の関係は、ピーク対RMSエネルギーの比である。そのような比は、タスクE530によって、または方法M900の別のタスクによって計算できる。コーディングスキーム選択決定の一部として、この比を、1つまたは複数の他のパラメータの現在値に従って変化することがあるしきい値と比較するように、タスクE530を構成することができる。たとえば、図64〜図67、図69、および図70に、他のパラメータの値に従って、異なる値(たとえば、14、16、24、25、35、40、または60)がこのしきい値に使用される例を示す。
図79Bに、方法M900の実装M910のフローチャートを示す。この場合、タスクE530は、ピークと平均エネルギーとの間に関係に基づいて、同様に1つまたは複数の他のパラメータ値に基づいてコーディングスキームを選択するように構成される。方法M910は、フレーム中のピッチピークの数(タスクE550)および/またはフレームのSNR(タスクE560)などの追加のパラメータの値を計算する1つまたは複数のタスクを含む。コーディングスキーム選択決定の一部として、そのようなパラメータ値を、1つまたは複数の他のパラメータの現在値に従って変化することがあるしきい値と比較するように、タスクE530を構成することができる。図65および図66に、異なるしきい値(たとえば、4または5)が、タスクE550によって計算された現在のピーク数の値を評価するために使用される例を示す。タスクE550は、ここで説明された方法M300のインスタンスとして実装できる。フレームのSNR、あるいはローバンド部分またはハイバンド部分(たとえば、図51に示すcurr_ns_nsr[0]またはcurr_ns_snr[1])などのフレームの部分のSNRを計算するように、タスクE560を構成することができる。たとえば、curr_ns_snr[0](すなわち、0〜2kHz帯域のSNR)を計算するように、タスクE560を構成することができる。1つの特定の例では、タスクE530は、図65または図67の条件のいずれかに従って、あるいは、curr_ns_snr[0]の値がしきい値(たとえば、25dB)以上である場合のみ、図66の7つの右端の条件のいずれかに従って、雑音励振コーディングスキームを選択するように構成される。
図80Aに、タスクE570およびE580を含む方法M900の実装M920のフローチャートを示す。タスクE570は、音声信号の次のフレーム(「第2のフレーム」)が有声である(たとえば、高度に周期的である)ことを判断する。たとえば、タスクE570は、第2のフレームに対してここで説明されたEVRC分類のバージョンを実行するように構成できる。タスクE530が第1のフレーム(すなわち、タスクE540において符号化されたフレーム)に対して雑音励振コーディングスキームを選択した場合、タスクE580は、非差分ピッチプロトタイプコーディングスキームに従って第2のフレームを符号化する。タスクE580は、ここで説明されたタスクE100のインスタンスとして実装できる。
方法M920はまた、第2のフレームの直後に続く第3のフレームに対して差分符号化演算を実行するタスクを含むように実装できる。そのようなタスクは、(A)第3のフレームのピッチパルス形状と第2のフレームのピッチパルス形状との間の差の表現と、(B)第3のフレームのピッチ周期と第2のフレームのピッチ周期との間の差の表現とを含む、符号化フレームを生成することを含むことができる。ここで説明されるタスクE200のインスタンスとしてそのようなタスクを実装することができる。
図80Bに、音声信号フレームを符号化するための装置MF900のブロック図を示す。装置MF900は、(たとえば、タスクE510の様々な実装に関して上記で説明したように)ピークエネルギーを計算するための手段FE510と、(たとえば、タスクE520の様々な実装に関して上記で説明したように)平均エネルギーを計算するための手段FE520と、(たとえば、タスクE530の様々な実装に関して上記で説明したように)コーディングスキームを選択するための手段FE530と、(たとえば、タスクE540の様々な実装に関して上記で説明したように)フレームを符号化するための手段FE540とを含む。図81Aに、(たとえば、タスクE550の様々な実装に関して上記で説明したように)フレームのピッチパルスピークの数を計算するための手段FE550、および/または(たとえば、タスクE560の様々な実装に関して上記で説明したように)フレームのSNRを計算するための手段FE560など、1つまたは複数の追加の手段を含む装置MF900の実装MF910のブロック図を示す。図81Bに、(たとえば、タスクE570の様々な実装に関して上記で説明したように)音声信号の第2のフレームが有声であることを示すための手段FE570と、(たとえば、タスクE580の様々な実装に関して上記で説明したように)第2のフレームを符号化するための手段FE580とを含む装置MF900の実装MF920のブロック図を示す。
図82Aに、一般的構成による、音声信号フレームを符号化するための装置A900のブロック図を示す。装置A900は、(たとえば、タスクE510に関して上記で説明したように)フレームのピークエネルギーを計算するように構成されたピークエネルギー計算器710と、(たとえば、タスクE520に関して上記で説明したように)フレームの平均エネルギーを計算するように構成された平均エネルギー計算器720とを含む。装置M900は、雑音励振コーディングスキーム(たとえば、NELPコーディングスキーム)に従ってフレームを符号化するように選択可能に構成された第1のフレームエンコーダ740を含む。エンコーダ740は、ここで説明される無声フレームエンコーダUE10または非周期フレームエンコーダE80のインスタンスとして実装できる。装置A900はまた、非差分ピッチプロトタイプコーディングスキームに従ってフレームを符号化するように選択可能に構成された第2のフレームエンコーダ750を含む。エンコーダ750は、フレームのピッチパルスの時間領域形状の表現と、フレームのピッチパルスの位置の表現と、フレームの推定ピッチ周期の表現とを含む、符号化フレームを生成するように構成される。エンコーダ750は、ここで説明されるフレームエンコーダ100、装置A400、または装置A650の実例として実装でき、ならびに/あるいは計算器710および/または720を含むように実装できる。装置A900はまた、選択可能にフレームエンコーダ740および750のうちの1つにフレームを符号化させるように構成されたコーディングスキームセレクタ730を含み、その選択は、(たとえば、タスクE530の様々な実装に関して上記で説明したように)計算されたピークエネルギーと計算された平均エネルギーとの間に関係に基づく。コーディングスキームセレクタ730は、ここで説明されるコーディングスキームセレクタC200またはC300のインスタンスとして実装でき、ここで説明されるフレーム再分類器RC10のインスタンスを含むことができる。
音声エンコーダAE10は、装置A900を含むように実装できる。たとえば、音声エンコーダAE20、AE30、またはAE40のコーディングスキームセレクタC200は、ここで説明されるコーディングスキームセレクタ730のインスタンスを含むように実装できる。
図82Bに、装置A900の実装A910のブロック図を示す。この場合、コーディングスキームセレクタ730は、(たとえば、方法M910に実装されるタスクE530に関してここで説明されたように)ピークと平均エネルギーとの間に関係に基づいて、同様に1つまたは複数の他のパラメータ値に基づいてコーディングスキームを選択するように構成される。装置A910は、追加のパラメータの値を計算する1つまたは複数の要素を含む。たとえば、装置A910は、(たとえば、タスクE550または装置A300に関して上記で説明したように)フレーム中のピッチピークの数を計算するように構成されたピッチパルスピークカウンタ760を含むことができる。追加または代替として、装置A910は、(たとえば、タスクE560に関して上記で説明したように)フレームのSNRを計算するように構成されたSNR計算器770を含むことができる。コーディングスキームセレクタ730は、カウンタ760および/またはSNR計算器770を含むように実装できる。
便宜のために、ここで、装置A900に関して上記で説明した音声信号フレームを「第1のフレーム」と呼び、音声信号中の第1のフレームに続くフレームを「第2のフレーム」と呼ぶ。コーディングスキームセレクタ730は、(たとえば、方法M920に実装されるタスクE570に関してここで説明されたように)第2のフレームに対してフレーム分類演算を実行するように構成できる。たとえば、コーディングスキームセレクタ730は、第1のフレームに対して雑音励振コーディングスキームを選択し、第2のフレームが有声であると判断したことに応答して、(すなわち、非差分ピッチプロトタイプコーディングスキームに従って)第2のフレームエンコーダ750に第2のフレームを符号化させるように構成できる。
図83Aに、(たとえば、タスクE200に関してここで説明されたように)フレームに対して差分符号化演算を実行するように構成された第3のフレームエンコーダ780を含む装置A900の実装A920のブロック図を示す。言い換えれば、エンコーダ780は、(A)現在のフレームのピッチパルス形状と前のフレームのピッチパルス形状との間の差の表現と、(B)現在のフレームのピッチ周期と前のフレームのピッチ周期との間の差の表現とを含む、符号化フレームを生成するように構成される。エンコーダ780が音声信号中の第2のフレームの直後に続く第3のフレームに対して差分符号化演算を実行するように、装置A920を実装することができる。
図83Bに、タスクT610、E620、E630、およびT640を含む、一般的構成による音声信号フレームを符号化する方法M950のフローチャートを示す。タスクE610は、フレームのピッチ周期を推定する。タスクE610は、ここで説明されるタスクE130、L200、E370、またはE410のインスタンスとして実装できる。タスクE620は、第1の値と第2の値との間の関係の値を計算し、第1の値は推定ピッチ周期に基づき、第2の値はフレームの別のパラメータに基づく。計算値に基づいて、タスクE630は、雑音励振コーディングスキーム(たとえば、ここで説明されるNELPスキーム)または(たとえば、タスクE100に関してここで説明されたように)非差分ピッチプロトタイプコーディングスキームのいずれかを選択する。タスクE640は、タスクE630によって選択されたコーディングスキームに従ってフレームを符号化する。タスクE630が非差分ピッチプロトタイプコーディングスキームを選択する場合、タスクE640は、フレームのピッチパルスの時間領域形状の表現と、フレームのピッチパルスの位置の表現と、フレームの推定ピッチ周期の表現とを含む、符号化フレームを生成することを含む。たとえば、タスクE640は、ここで説明されるタスクE100のインスタンスを含むように実装できる。
図84Aに、方法M950の実装M960のフローチャートを示す。方法M960は、フレームの他のパラメータを計算する1つまたは複数のタスクを含む。方法M960は、フレームの端末ピッチパルスの位置を計算するタスクE650を含むことができる。タスクE650は、ここで説明されるタスクE120、L100、E310、またはE460のインスタンスとして実装できる。端末ピッチパルスがフレームの最終ピッチパルスである場合、タスクE620を、端末ピッチパルスとフレームの最後のサンプルとの間の距離が推定ピッチ周期以下であることを確認するように構成することができる。タスクE650が最後のサンプルに対するパルス位置を計算する場合、この確認は、パルス位置の値と推定ピッチ周期の値とを比較することによって実行できる。たとえば、そのようなパルス位置から推定ピッチ周期を減算することが少なくとも0に等しい結果を残す場合、その状態が確認される。端末ピッチパルスがフレームの最初のピッチパルスである場合、タスクE620を、端末ピッチパルスとフレームの第1のサンプルとの間の距離が推定ピッチ周期以下であることを確認するように構成することができる。これらの場合のいずれかでは、(たとえば、タスクT750に関してここで説明されたように)確認が不合格になった場合、雑音励振コーディングスキームを選択するようにタスクE630を構成することができる。
端末ピッチパルス位置計算タスクE650に加えて、方法M960は、フレームの複数の他のピッチパルスの位置を特定するタスクE670を含むことができる。この場合、タスクE650は、推定ピッチ周期と計算されたピッチパルス位置とに基づいて複数のピッチパルス位置を計算するように構成でき、タスクE620は、位置を特定されたピッチパルスの位置が計算されたピッチパルス位置にどのくらい一致するかを評価するように構成できる。たとえば、タスクE620が、(たとえば、タスクT740に関して上記で説明したように)8つのサンプルなど、(A)位置を特定されたピッチパルスの位置と、(B)対応する計算されたピッチパルス位置との間の差のいずれかがしきい値よりも大きいと判断した場合、雑音励振コーディングスキームを選択するようにタスクE630を構成することができる。
上記の例のいずれかに加えてまたはその代替として、方法M960は、フレームの残差(たとえば、LPC残差)の自己相関値を最大にするラグ値を計算するタスクE660を含むことができる。そのようなラグ値(または「ピッチ遅延」)の計算は、上記で参照した3GPP2文書C.S0014−Cのセクション4.6.3(pp.4−44〜4−49)に記載されており、そのセクションは、そのような計算の一例として参照によりここに組み込まれる。この場合、タスクE620は、推定ピッチ周期が計算されたラグ値の指定された比率(たとえば、160パーセント)以下であることを確認するように構成できる。確認が不合格になった場合、雑音励振コーディングスキームを選択するようにタスクE630を構成することができる。方法M960の関係する実装では、確認が不合格になり、また、(たとえば、タスクT730に関して上記で説明したように)現在のフレームの1つまたは複数のNACF値が十分に高い場合、雑音励振コーディングスキームを選択するようにタスクE630を構成することができる。
上記の例のいずれかに加えてまたはその代替として、タスクE620は、推定ピッチ周期に基づく値を音声信号の前のフレーム(たとえば、現在のフレームの前の最後のフレーム)のピッチ周期と比較するように構成できる。そのような場合、(たとえば、タスクT710に関して上記で説明したように)推定ピッチ周期が前のフレームのピッチ周期よりもはるかに小さい(たとえば、約1/2、1/3、または1/4)である場合、雑音励振コーディングスキームを選択するようにタスクE630を構成することができる。追加または代替として、前のピッチ周期が大きく(たとえば、100サンプルよりも多い)、(たとえば、タスクT720に関して上記で説明したように)推定ピッチ周期が前のピッチ周期の半分未満である場合、雑音励振コーディングスキームを選択するようにタスクE630を構成することができる。
図84Bに、タスクE680およびE690を含む方法M950の実装M970のフローチャートを示す。タスクE680は、音声信号の次のフレーム(「第2のフレーム」)が有声である(たとえば、高度に周期的である)ことを判断する。(この場合、タスクE640において符号化されたフレームは、「第1のフレーム」と呼ばれる。)たとえば、タスクE680は、第2のフレームに対してここで説明されるEVRC分類のバージョンを実行するように構成できる。タスクE630が第1のフレームに対して雑音励振コーディングスキームを選択した場合、タスクE690は、非差分ピッチプロトタイプコーディングスキームに従って第2のフレームを符号化する。タスクE690は、ここで説明されるタスクE100の実例として実装できる。
方法M970はまた、第2のフレームの直後に続く第3のフレームに対して差分符号化演算を実行するタスクを含むように実装できる。そのようなタスクは、(A)第3のフレームのピッチパルス形状と第2のフレームのピッチパルス形状との間の差の表現と、(B)第3のフレームのピッチ周期と第2のフレームのピッチ周期との間の差の表現とを含む、符号化フレームを生成することを含むことができる。ここで説明されるタスクE200の実例としてそのようなタスクを実装することができる。
図85Aに、音声信号フレームを符号化するための装置MF950のブロック図を示す。装置MF950は、(たとえば、タスクE610の様々な実装に関して上記で説明したように)フレームのピッチ周期を推定するための手段FE610と、(たとえば、タスクE620の様々な実装に関して上記で説明したように)(A)推定ピッチ周期に基づく第1の値と、(B)フレームの別のパラメータに基づく第2の値との間の関係の値を計算するための手段FE620と、(たとえば、タスクE630の様々な実装に関して上記で説明したように)計算値に基づいてコーディングスキームを選択するための手段FE630と、(たとえば、タスクE640の様々な実装に関して上記で説明したように)選択されたコーディングスキームに従ってフレームを符号化するための手段FE640とを含む。
図85Bに、(たとえば、タスクE650の様々な実装に関して上記で説明したように)フレームの端末ピッチパルスの位置を計算するための手段FE650、(たとえば、タスクE660の様々な実装に関して上記で説明したように)フレームの残差の自己相関値を最大にするラグ値を計算するための手段FE660、および/または(たとえば、タスクE670の様々な実装に関して上記で説明したように)フレームの複数の他のピッチパルスの位置を特定するための手段FE670など、1つまたは複数の追加の手段を含む装置MF950の実装MF960のブロック図を示す。図86Aに、(たとえば、タスクE680の様々な実装に関して上記で説明したように)音声信号の第2のフレームが有声であることを示すための手段FE680と、(たとえば、タスクE690の様々な実装に関して上記で説明したように)第2のフレームを符号化するための手段FE690とを含む装置MF950の実装MF970のブロック図を示す。
図86Bに、一般的構成による、音声信号フレームを符号化するための装置A950のブロック図を示す。装置A950は、フレームのピッチ周期を推定するように構成されたピッチ周期推定器810を含む。推定器810は、ここで説明される推定器130、190、A320、または540のインスタンスとして実装できる。装置A950はまた、(A)推定ピッチ周期に基づく第1の値と(B)フレームの別のパラメータに基づく第2の値との間の関係の値を計算するように構成された計算器820を含む。装置M950は、雑音励振コーディングスキーム(たとえば、NELPコーディングスキーム)に従ってフレームを符号化するように選択可能に構成された第1のフレームエンコーダ840を含む。エンコーダ840は、ここで説明される無声フレームエンコーダUE10または非周期フレームエンコーダE80のインスタンスとして実装できる。装置A950はまた、非差分ピッチプロトタイプコーディングスキームに従ってフレームを符号化するように選択可能に構成された第2のフレームエンコーダ850を含む。エンコーダ850は、フレームのピッチパルスの時間領域形状の表現と、フレームのピッチパルスの位置の表現と、フレームの推定ピッチ周期の表現とを含む、符号化フレームを生成するように構成される。エンコーダ850は、ここで説明されるフレームエンコーダ100、装置A400、または装置A650のインスタンスとして実装でき、ならびに/あるいは推定器810および/または計算器820を含むように実装できる。装置A950はまた、(たとえば、タスクE630の様々な実装に関して上記で説明したように)選択可能に、計算値に基づいて、フレームエンコーダ840および850のうちの1つにフレームを符号化させるように構成されたコーディングスキームセレクタ830を含む。コーディングスキームセレクタ830は、ここで説明されるコーディングスキームセレクタC200またはC300のインスタンスとして実装でき、ここで説明されるフレーム再分類器RC10のインスタンスを含むことができる。
音声エンコーダAE10は、装置A950を含むように実装できる。たとえば、音声エンコーダAE20、AE30、またはAE40のコーディングスキームセレクタC200は、ここで説明されるコーディングスキームセレクタ830の実例を含むように実装できる。
図87Aに、装置A950の実装A960のブロック図を示す。装置A960は、フレームの他のパラメータを計算する1つまたは複数の要素を含む。装置A960は、フレームの端末ピッチパルスの位置を計算するように構成されたピッチパルス位置計算器860を含むことができる。ピッチパルス位置計算器860は、ここで説明される計算器120、160、または590、あるいはピーク検出器150のインスタンスとして実装できる。端末ピッチパルスがフレームの最終ピッチパルスである場合、計算器820を、端末ピッチパルスとフレームの最後のサンプルとの間の距離が推定ピッチ周期以下であることを確認するように構成することができる。ピッチパルス位置計算器860が最後のサンプルに対するパルス位置を計算する場合、計算器820は、この確認を、パルス位置の値と推定ピッチ周期の値とを比較することによって実行することができる。たとえば、そのようなパルス位置から推定ピッチ周期を減算することが少なくとも0に等しい結果を残す場合、その状態が確認される。端末ピッチパルスがフレームの最初のピッチパルスである場合、計算器820を、端末ピッチパルスとフレームの第1のサンプルとの間の距離が推定ピッチ周期以下であることを確認するように構成することができる。これらの場合のいずれかでは、(たとえば、タスクT750に関してここで説明されたように)確認が不合格になった場合、雑音励振コーディングスキームを選択するようにコーディングスキームセレクタ830を構成することができる。
端末ピッチパルス位置計算器860に加えて、装置A960は、フレームの複数の他のピッチパルスの位置を特定するように構成されたピッチパルスロケータ880を含むことができる。この場合、装置A960は、推定ピッチ周期と計算されたピッチパルス位置とに基づいて複数のピッチパルス位置を計算するように構成された第2のピッチパルス位置計算器885を含むことができ、計算器820は、位置を特定されたピッチパルスの位置が計算されたピッチパルス位置にどのくらい一致するかを評価するように構成できる。たとえば、計算器820が、(たとえば、タスクT740に関して上記で説明したように)8つのサンプルなど、(A)位置を特定されたピッチパルスの位置と、(B)対応する計算されたピッチパルス位置との間の差のいずれかがしきい値よりも大きいと判断した場合、雑音励振コーディングスキームを選択するようにコーディングスキームセレクタ830を構成することができる。
上記の例のいずれかに加えてまたはその代替として、装置A960は、(たとえば、タスクE660に関して上記で説明したように)フレームの残差の自己相関値を最大にするラグ値を計算するように構成されたラグ値計算器870を含むことができる。この場合、計算器820は、推定ピッチ周期が計算されたラグ値の指定された比率(たとえば、160パーセント)以下であることを確認するように構成できる。確認が不成功になった場合、雑音励振コーディングスキームを選択するようにコーディングスキームセレクタ830を構成することができる。装置A960の関係する実装では、確認が不合格になり、また、(たとえば、タスクT730に関して上記で説明したように)現在のフレームの1つまたは複数のNACF値が十分に高い場合、雑音励振コーディングスキームを選択するようにコーディングスキームセレクタ830を構成することができる。
上記の例のいずれかに加えてまたはその代替として、計算器820は、推定ピッチ周期に基づく値を音声信号の前のフレーム(たとえば、現在のフレームの前の最後のフレーム)のピッチ周期と比較するように構成できる。そのような場合、(たとえば、タスクT710に関して上記で説明したように)推定ピッチ周期が前のフレームのピッチ周期よりもはるかに小さい(たとえば、約1/2、1/3、または1/4)である場合、雑音励振コーディングスキームを選択するようにコーディングスキームセレクタ830を構成することができる。追加または代替として、前のピッチ周期が大きく(たとえば、100サンプルよりも多い)、(たとえば、タスクT720に関して上記で説明したように)推定ピッチ周期が前のピッチ周期の半分未満である場合、雑音励振コーディングスキームを選択するようにコーディングスキームセレクタ830を構成することができる。
便宜のために、ここで、装置A950に関して上記で説明した音声信号フレームを「第1のフレーム」と呼び、音声信号中の第1のフレームに続くフレームを「第2のフレーム」と呼ぶ。コーディングスキームセレクタ830は、(たとえば、方法M960に実装されるタスクE680に関してここで説明されたように)第2のフレームに対してフレーム分類演算を実行するように構成できる。たとえば、コーディングスキームセレクタ830は、第1のフレームに対して雑音励振コーディングスキームを選択し、第2のフレームが有声であると判断したことに応答して、(すなわち、非差分ピッチプロトタイプコーディングスキームに従って)第2のフレームエンコーダ850に第2のフレームを符号化させるように構成できる。
図87Bに、(たとえば、タスクE200に関してここで説明されたように)フレームに対して差分符号化演算を実行するように構成された第3のフレームエンコーダ890を含む装置A950の実装A970のブロック図を示す。言い換えれば、エンコーダ890は、(A)現在のフレームのピッチパルス形状と前のフレームのピッチパルス形状との間の差の表現と、(B)現在のフレームのピッチ周期と前のフレームのピッチ周期との間の差の表現とを含む、符号化フレームを生成するように構成される。エンコーダ890が音声信号中の第2のフレームの直後に続く第3のフレームに対して差分符号化演算を実行するように、装置A970を実装することができる。
ここで説明された方法の実装の典型的な適用例(たとえば、方法M100、M200、M300、M400、M500、M550、M560、M600、M650、M700、M800、M900、またはM950、あるいは別のルーチンまたはコードリスト)では、論理要素のアレイ(たとえば、論理ゲート)は、この方法の様々なタスクのうちの1つ、複数、さらにはすべてを実行するように構成される。タスクの1つまたは複数(場合によってはすべて)は、論理要素のアレイ(たとえば、プロセッサ、マイクロプロセッサ、マイクロコントローラ、または他の有限状態機械)を含む機械(たとえば、コンピュータ)によって読取り可能および/または実行可能であるコンピュータプログラム製品(たとえば、ディスク、フラッシュまたは他の不揮発性メモリカード、半導体メモリチップなどの1つまたは複数のデータ記憶媒体など)に埋め込まれたコード(たとえば、命令の1つまたは複数のセット)として実装することもできる。そのような方法の実装のタスクを、2つ以上のそのようなアレイまたは機械によって実行することもできる。これらのまたは他の実装では、タスクは、モバイルユーザ端末など、ワイヤレス通信用のデバイス、またはそのような通信機能をもつ他のデバイス内で実行することができる。そのようなデバイスは、(たとえば、VoIP(ボイスオーバーインターネットプロトコル(voic over Internet Protocol))などの1つまたは複数のプロトコルを使用して)回線交換および/またはパケット交換ネットワークと通信するように構成できる。たとえば、そのようなデバイスは、符号化フレーム(たとえば、パケット)を含む信号を送信し、および/またはそのような信号を受信するように構成されたRF回路を含むことができる。また、そのようなデバイスは、RF送信の前に符号化フレームもしくはパケットに対して、インターリーブ、パンクチャリング、畳み込み符号化、誤り訂正符号化、および/またはネットワークプロトコルの1つまたは複数のレイヤを適用することなどの1つまたは複数の他の動作を実行する、ならびに/あるいはRF受信後にそのような動作の補完を実行するように構成できる。
ここで説明された装置(たとえば、装置A100、A200、A300、A400、A500、A560、A600、A650、A700、A800、A900、音声エンコーダAE20、音声デコーダAD20、またはその要素)の実装の様々な要素は、たとえば、チップセット中の同じチップ上にまたは2つ以上のチップの間に常駐する電子および/または光デバイスとして実装できるが、そのような限定なしに他の構成も考えられる。そのような装置の1つまたは複数の要素は、マイクロプロセッサ、組み込みプロセッサ、IPコア、デジタル信号プロセッサ、FPGA(フィールドプログラマブルゲートアレイ(field−programmable gate array))、ASSP(特定用途向け標準製品(application−specific standard product))、およびASIC(特定用途向け集積回路(application―specific integrated circuit))などの、論理要素(たとえば、トランジスタ、ゲート)の1つまたは複数の固定またはプログラマブルなアレイ上で実行するように構成された命令の1つまたは複数のセットとして全体的にまたは部分的に実装できる。
そのような装置の実装の1つまたは複数の要素は、装置が組み込まれているデバイスまたはシステムの別の動作に関係するタスクなど、装置の動作に直接関係しないタスクまたは命令の他のセットを実行するために使用することが可能である。また、ここで説明された装置の実装の1つまたは複数の要素は、共通の構造(たとえば、異なる要素に対応するコードの部分を異なる時間に実行するために使用されるプロセッサ、異なる要素に対応するタスクを異なる時間に実施するために実行される命令のセット、あるいは、異なる要素向けの動作を異なる時間に実施する電子デバイスおよび/または光デバイスの構成)を有することが可能である。
説明した構成の前述の提示は、ここで開示される方法および他の構造を当業者が製造または使用できるように与えたものである。ここで図示および説明されたフローチャートおよび他の構造は例にすぎず、これらの構造の他の変形態も開示の範囲内である。これらの構成に対する様々な変更が可能であり、ここで提示された一般的原理は他の構成にも同様に適用できる。
ここで説明した構成の各々は、部分的にまたは全体的に、ハードワイヤード回路として、特定用途向け集積回路中に作成された回路構成として、あるいは不揮発性記憶装置にロードされるファームウェアプログラム、またはマイクロプロセッサもしくは他のデジタル信号処理ユニットなどの論理要素のアレイによって実行可能な命令である機械可読コードとしてデータ記憶媒体から、もしくはデータ記憶媒体にロードされるソフトウェアプログラムとして実装できる。データ記憶媒体は、(限定はしないが、ダイナミックもしくはスタティックRAM(ランダムアクセスメモリ(random−access memory))、ROM(読取り専用メモリ(read―only memory))、および/またはフラッシュRAMを含む)半導体メモリ、または強誘電体メモリ、磁気抵抗メモリ、オボニックメモリ、ポリマーメモリ、もしくは位相変化メモリなどの記憶要素のアレイ、磁気ディスクまたは光ディスクなどのディスク媒体とすることができる。「ソフトウェア」という用語は、ソースコード、アセンブリ言語コード、機械コード、バイナリコード、ファームウェア、マクロコード、マイクロコード、論理要素のアレイによって実行可能な命令の1つまたは複数のセットまたはシーケンス、およびそのような例の任意の組合せを含むことを理解されたい。
また、ここで開示される方法の各々は、論理要素(たとえば、プロセッサ、マイクロプロセッサ、マイクロコントローラ、または他の有限状態機械)のアレイを含む機械によって読取り可能および/または実行可能な命令の1つまたは複数のセットとして(たとえば、上記に記載する1つまたは複数のデータ記憶媒体中で)有形に実施することができる。したがって、本開示は、上記に示した構成に限定されるものではなく、原開示の一部をなす、出願した添付の特許請求の範囲を含む、ここにおいて任意の方法で開示した原理および新規の特徴に一致する最も広い範囲が与えられるべきである。