JP4107085B2 - 波形データ圧縮方法 - Google Patents
波形データ圧縮方法 Download PDFInfo
- Publication number
- JP4107085B2 JP4107085B2 JP2003000608A JP2003000608A JP4107085B2 JP 4107085 B2 JP4107085 B2 JP 4107085B2 JP 2003000608 A JP2003000608 A JP 2003000608A JP 2003000608 A JP2003000608 A JP 2003000608A JP 4107085 B2 JP4107085 B2 JP 4107085B2
- Authority
- JP
- Japan
- Prior art keywords
- waveform data
- linear prediction
- data
- frame
- order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
この発明は、波形データを圧縮するための波形データ圧縮方法に関し、特に、音源用の波形メモリに記憶させる波形データに好適な、線形予測を用いた波形データ圧縮方法に関する。
【0002】
【従来の技術】
波形データは一般に容量が大きいため、波形データを記憶させる際には、圧縮処理を施した状態で記憶させることが行われている。このような圧縮を行うための圧縮方法は様々なものが知られており、例えばAPC(Adaptive Predictive Coding:適応予測符号化)法や、LPC(Linear Prediction Coding:線形予測符号化)法、CELP(Code Excited Linear Prediction)法、ADPCM(Adaptive Differential Pulse Code Modulation)法等が知られている。
【0003】
そして、LPC法を用いたものとしては、例えば特許文献1に記載された波形データ圧縮方法が知られている。この方法によれば、波形データ(楽音信号)を1024サンプルのフレーム(ブロック)に分割し、圧縮しようとする波形データから自己相関法によって線形予測係数を求め、求めた線形予測係数を用いて波形データの圧縮を行っている。また、圧縮後のデータを記憶させる際に、各ブロックの圧縮データを再生するための線形予測係数(圧縮係数)とシフトデータ(スケールファクタ)をそのブロックの前のブロックの圧縮データに埋め込んで記憶させるようにしている。
このような圧縮方法によって圧縮したデータは、ある程度の圧縮効率が得られる一方、その伸長が比較的容易であり、このような圧縮方法は、電子楽器等に搭載する音源チップに記憶させる波形データの圧縮に好適である。
【0004】
【特許文献1】
特許第2727798号公報(特に明細書の段落0046)
【0005】
【発明が解決しようとする課題】
しかしながら、上述のように圧縮しようとする波形データのみから線形予測係数を求める自己相関法においては、一連の波形データのうち圧縮対象の部分以外は0と仮定して線形予測係数を求めているので、各フレームの先頭部分と末尾部分においては線形予測係数を用いた予測を正確に行うことができず、実際の値との残差が大きくなってしまう。LPC法による圧縮では、この残差を記憶することによってデータ量を低減しているので、大きな残差が残ると、圧縮効率が悪くなったり、圧縮効率を確保するためには丸め込みによって圧縮データの品質を低下させざるを得なかったりするという問題があった。
また、自己相関法を用いる場合には、先頭と末尾の信号に急な落差が生じるのを防止するためにフレーム中のデータに窓関数を乗じることが行われているが、この窓関数のために先頭付近と末尾付近の特性が線形予測係数に反映されにくくなっているという問題もあった。
【0006】
また、線形予測については、1フレームのサンプル数を少なくすれば、より緻密な予測が可能になり、予測値と実データの残差を低減して圧縮効率を向上させることができると考えられる。しかし、自己相関法においては、1フレームのサンプル数を低減すると、上述した先頭と末尾における不正確さが全体の予測に及ぼす影響が大きくなり、全体として予測が不正確になり、大きな残差が残るので、圧縮効率の向上が図れないという問題もあった。
この発明は、このような問題を解決し、波形データを圧縮する場合において、伸長を比較的容易としながら高い圧縮効率での圧縮を可能とすることを目的とする。
【0007】
【課題を解決するための手段】
上記の目的を達成するため、この発明の波形データ圧縮方法は、波形データ圧縮装置が波形データを所定のサンプル数からなるフレーム毎に圧縮する波形データ圧縮方法であって、上記波形データ圧縮装置が、圧縮対象のフレームに含まれる波形データとそのフレームの直前のpサンプルの波形データとからp次の共分散行列を求め、求めた共分散行列に基づいてp次の線形予測係数を求め、求めた線形予測係数を用いて上記フレーム毎の圧縮を行う圧縮手順を実行し、上記圧縮手順において、求めた上記共分散行列が正則か否かを判断し、正則でない場合には自動的に次数pを1少ない次数に変更し、その新たな次数の共分散行列を再度求め、これを用いてその次数の上記線形予測係数を求めるものである。
このような波形データ圧縮方法において、1フレーム当たりのサンプル数を次数pの150倍以下とするとよい。
また、上記波形データ圧縮装置が、上記圧縮手順において、求めた上記線形予測係数の値が所定の範囲に入るか否かを判断し、入らない場合には自動的に次数pを1少ない次数に変更し、その新たな次数の共分散行列を再度求め、これを用いてその次数の上記線形予測係数を求めるようにするとよい。
これらの波形データ圧縮方法は、音源用の波形メモリに記憶させる波形データを圧縮対象とする場合に特に好適である。
【0008】
【発明の実施の形態】
以下、この発明の好ましい実施の形態を図面を参照して説明する。
〔波形データ圧縮方法の実施形態:図1乃至図5〕
まず、この発明の波形データ圧縮方法の実施形態について説明する。
この発明の波形データ圧縮方法は、LPC法を利用した圧縮方法であるが、線形予測係数の算出に、圧縮対象のフレームに含まれる波形データとそのフレームの直前のpサンプルの波形データとを用いる点が特徴である。この点についてまず説明する。
【0009】
一般に、波形データS(n)についてp次の線形予測を行う場合、i=1〜pのp個の線形予測係数αiを用い、予測したいサンプルS(n)の直前p個のサンプルを用い、数1に示すように予測サンプルY(n)を求める。そして線形予測係数αiは、実際の波形データS(n)と予測サンプルY(n)との残差データZD(n)を最小にするように定める。なお、αiをi次の線形予測係数と呼ぶことにする。
【0010】
【数1】
【0011】
そして、このようなp個の線形予測係数αiは、数2に示す残差平方和Eを最小化するような値として求める。残差平方和Eは、数2に示すようにαについてたかだか2次の式として表わせる。なお数2においては、n0番目からn1番目のサンプルを予測対象としてp次の線形予測を行った場合の残差平方和を示している。
【0012】
【数2】
【0013】
従って、線形予測係数α1〜αpは、数3に示すようにα1〜αpの全てについてEの偏微分を0とするような値として求めることができる。そしてこのようなα1〜αpは、数4に示す連立方程式の解である。
【0014】
【数3】
【0015】
【数4】
【0016】
このような連立方程式を行列形式で表現した場合には数5のようになるが、この数5の左辺におけるp×pの係数行列が、p次の共分散行列である。従って、線形予測係数は、この共分散行列に基づいて求めることになる。なお、この名称は線形予測の分野で知られている共分散法に由来するものであり、統計学の分野で一般に用いられる「共分散」を応用したものである。
【0017】
【数5】
【0018】
ところで、数4,数5に示した連立方程式を解くには、C01〜Cppの値を求める必要があるが、数2の定義から、このためにはn0−p番目からn1番目までのサンプルのデータが必要である。すなわち、予測対象とするフレームの波形データをn0番目からn1番目のN個のサンプルとすると、図2に示すように、このN個のサンプルとその直前のp個のサンプルの波形データを用いることにより、上述の線形予測係数を求めることができる。
【0019】
ただし、上記の連立方程式は、数5に示した共分散行列が正則でない場合には一意な解を持たない。そして、この場合には適当な線形予測係数を求めることができないので、pを1少ない次数に変更し、その新たな次数の共分散行列を再度求め、これを用いてその次数の線形予測係数を求めるとよい。正則であるか否かの判断は、行列式を求める等、適宜公知の手法によって行うことできるし、連立方程式を解く際に0による除算が起こったか否かによって行うこともできる。p次の線形予測係数が求められない場合でも、このようにより低い次数の線形予測係数を求めることにより、次善の線形予測を行うことができる。
また、線形予測係数を求めることができた場合でも、その係数のうち1つでも所定の範囲に入らない場合には、上記と同様にpを1少ない次数に変更し、その次数の線形予測係数を求めるとよい。線形予測係数が符号化可能な範囲内にない場合には、符号化の際に丸め込みが必要になり、正確な値を記憶することができないので、次数を下げたほうが却って利得の高い予測値を得易いためである。
【0020】
ここで、以上の共分散行列を用いる方法と従来用いられていた自己相関法による圧縮の特性及び性能の違いについて説明する。
まず、共分散行列を用いる方法の特性としては、残差平方和Eを最小化する線形予測係数を求めるに当たって必要なデータを全て用いるため、窓関数を用いる必要がなく、また線形予測係数として最適な解が得られるという利点が挙げられる。一方で、計算式の簡単化を行えない(Durbin法が使えない)ため計算量が多くなり、また得られる線形予測係数が不安定になることがあるという欠点もある。なお、線形予測係数が不安定とは、その係数を線形予測器に与えると線形予測器の出力が発散してしまう恐れがあるということである。
一方、自己相関法の特性としては、得られる線形予測係数が安定であり、また計算式を簡単化できるため計算量が少ないというメリットがあるが、計算式の簡単化の際に、予測対象とするフレームの波形データ以外は0であるとする近似を行うため、予測次数に対比してフレーム長が十分に大きくない場合又は滑らかに立ち上がる窓をかけない場合には予測誤差が大きいという欠点がある。
【0021】
そして、音声通信や音声記録等の分野においては、このような特性のうち、自己相関法の安定した線形予測係数が得られるという利点が重視され、自己相関法が広く用いられ、その分野から研究が進んでいった。そして、線形予測係数の算出には自己相関法を用いることが当たり前となり、他の方法は注目されなかった。
しかし、このようになった理由は、通信路における伝送誤りを考慮した場合には係数が不安定であると圧縮した情報の欠落が起こる可能性があるからというものである。対するに波形データを半導体メモリに記憶している音源装置の場合、メモリからの波形データの読み出しでエラーが生じることはまず無い。すなわち、ほとんど伝送誤りの起こらない通信路が確保できており、共分散行列を用いる方法において線形予測係数が不安定になるという点は全く問題にならない。むしろ、最適な線形予測係数が得られるため、予測残差を最小化し、圧縮効率を上げることができるという利点に注目することができる。
また、音源装置では予め符号化されメモリに記録されている波形データをそのメモリから読み出して復号化するだけであり、符号化に関してはリアルタイムに行う必要はない。従って、符号化時の係数算出にかかる計算量が多いという点も、音源装置では問題になることはない。
【0022】
発明者らは、このような点に鑑み、共分散行列を用いる方法と自己相関法によってそれぞれ線形予測係数を求めてLPC法で音声データの圧縮を行った場合の予測利得を比較する実験を行った。ここで、予測利得とは、LPC法でデータの圧縮を行うことによって低減できる残差の大きさ、例えば削減できるビット数のことであるが、ここではそれぞれの方法で求めた線形予測係数を用いて線形予測を行った場合の平均二乗誤差の値と圧縮前のデータの大きさとから予測利得を求めた。
【0023】
この結果を図8のグラフに示す。このグラフにおいて、縦軸には共分散行列を用いる方法と自己相関法における予測利得の差を相対値で示し、横軸には圧縮時の1フレームのサンプル数Nを予測次数(求める線形予測係数の次数)pで割った値を示している。すなわち、縦軸の値が大きいほど、共分散法を用いた場合の圧縮効率が自己相関法を用いた場合の圧縮効率を上回る度合いが大きいことになる。なお、横軸の取り方については、今回の実験でN/pが一定ならばNやpの値によらず予測利得(および予測利得差)が等しいということが明らかになり、この値を採用したものである。
このグラフから明らかなように、圧縮率に関しては、どのようなサンプル数であっても共分散行列を用いる方法を用いた方が自己相関法を用いるよりもデータの圧縮効率がよく、その差は、N/pがおよそ150以下、つまり1フレーム当たりのサンプル数が次数pのおよそ150倍以下の場合に無視できなくなる。これは、共分散行列を用いる方法ではフレームを小さくしていくにつれてデータ圧縮効率が徐々に上がるのに対し、自己相関法では圧縮効率がそれ程上がらないためである。N/pが150以下の領域でも、圧縮効率の差はN/pが小さくなるにつれてさらに大きくなり、特にN/pが50以下で顕著となる。従って、この発明の波形データ圧縮方法は、このような場合に特に有効であるといえる。
【0024】
次に、以上の考え方に基づいて共分散行列を用いる方法で各フレームについての線形予測係数を求める処理を示すフローチャートが図1である。なお、図1には4次の線形予測係数を求める場合の例を示している。
すなわち、線形予測係数を求める際には、まずステップS1で先頭フレームについての線形予測係数を求めるために必要な波形データを準備する。ここでは、そのフレームの前には波形データは存在しないので、フレームの直前の4個のサンプルは、「0」であるとして以後の処理を行う。
次に、ステップS2で予測次数を示すレジスタpを4に設定し、ステップS3〜S8で、上述したように波形データから共分散行列を求めると共に、連立方程式を解いてp次の線形予測係数を算出する。求めた共分散行列が正則でなかったり、求めた予測係数が所定範囲内になかったりした場合にはpを1減らして算出を行うが、pが0になってしまった場合には、予測係数は定められなかったものとしてステップS9に進む。
【0025】
ステップS9では、ステップS8までの処理で求めたp次の線形予測係数を記憶する。ここではpの初期値が4であるので通常4つの線形予測係数を記憶することになるが、次数を下げて線形予測係数を求めた場合には、その旨を示すフラグといくつ次数を下げたかを示すデータも線形予測係数と共に記憶するものとする。
そして、ステップS10で次のフレームについての線形予測係数を求めるために必要な波形データとして、そのフレーム及びその直前の4サンプルの波形データを準備する。そして、次のフレームのデータがあればステップS11からステップS2に戻って処理を繰り返し、なければ処理を終了する。
【0026】
このような処理により、波形データの各フレームについての線形予測係数を求めることができる。なお、ここでは全てのフレームについての線形予測係数をまとめて求めてしまう例について説明したが、圧縮処理の進行に応じて順次求めていくようにしてもよい。
そして、求めた線形予測係数を用いた線形予測によって予測したデータと実際の波形データとの残差を量子化符号化し、線形予測係数と共に記憶することにより、波形データのデータ量を低減してデータを圧縮することができる。
【0027】
このような波形データ圧縮方法に係る圧縮処理を行う装置の構成例を図3に示す。この装置は、専用のハードウェアによって実現してもよいが、コンピュータに所要のプログラムを実行させることによって実現してもよい。
この装置において、元波形データSnはまず予測係数算出部11に入力され、予測係数算出部11で図1に示した処理によって各フレームについての線形予測係数Pnを算出する。そして、初期値よりも低い次数で予測係数を求めた場合には、その旨のデータを非一様量子化部13に入力する。
【0028】
各フレームの線形予測係数Pnは、減算器12で前のフレームについての線形予測係数の復元値◇Pn−1との差分Dnを求め、その差分Dnを非一様量子化部13で非一様に量子化符号化して係数差分符号Lnとし、フレームデータ生成部22にて圧縮後のデータであるフレームデータの一部として記憶する。なお、初期値よりも低い次数で予測係数を求めた場合には高次の線形予測係数は存在しないので、これに代えて次数の低下数を示すデータを係数差分符号Lnに含めるものとする。次数を低下させたか否かを示す情報も係数差分符号Lnに含めるものとする。
このように各フレームの線形予測係数を係数差分符号として記憶することにより、そのままの値として記憶するよりも圧縮データの情報量を低減し、圧縮効率を高めることができる。
【0029】
また、符号化データLnは逆量子化部14にも入力し、ここで非一様量子化部13とは逆の非一様な復号化逆量子化を行って差分の復号データQnを得る。そして、加算器15でこの復号データQnに予測係数キャッシュ16に記憶している前のフレームについての線形予測係数の復元値◇Pn−1を加えてそのフレームについての復元値◇Pnを得る。ただし、上述のように高次の線形予測係数が存在しない場合には、存在しない次数の予測係数はフィルタをかけて「0」にする。そしてこの復元値◇Pnは、次のフレームについての線形予測係数との差分を得るために減算器12に入力する一方、予測係数キャッシュ16に記憶する。
【0030】
ここで、非一様量子化について説明する。
上述のように、線形予測係数は前のフレームについての線形予測係数との差分を量子化符号化して記憶するのであるが、この際、波形データの特性によって、差分が大きい場合と小さい場合がある。例えばバイオリンやピアノ等の安定した波形では差分が小さく、シンバル等のノイズ的で変化の大きい波形では差分が大きい等である。そして、前者の場合には量子化誤差に対する感受性が比較的高いが、後者の場合にはもともとノイズ的であるので、誤差が大きくても最終的な音質の上ではあまり問題にならない。
そこでこの実施形態では、図4に示すように、係数差分の絶対値が小さい場合に量子化閾値を細かく設定し、係数差分の絶対値が大きい場合には量子化閾値を荒く設定して非一様な量子化を行うようにしている。このようにすることにより、全体としてデータ量(量子化レベル数)を増加させることも量子化可能な係数差分の範囲を狭めることもなく、線形予測係数の差分が小さい波形については高い精度で量子化を行うことができるので、圧縮効率を維持したままデータの品質を向上させることができる。
【0031】
なお、先頭フレームについての線形予測係数は、残差を取らずにそのまま量子化符号化して、他のフレームについての線形予測係数とは別の量子化精度を高くしたフォーマットでフレームデータのヘッダに記憶する。予測係数キャッシュ16にも、そのままの状態で記憶する。
先頭フレームについては、差分の基準となる値がないため、例えば初期データを「0」とする等して差分をとった場合、その差分が大きいと上述した非一様量子化により量子化誤差が大きくなってしまうが、上記のようにすることにより、差分の大小に関わらず高精度な量子化を行うことができる。
【0032】
図3の説明に戻る。
図3に示した装置において、元波形データSnは減算器17にも入力し、ここで線形予測部21による予測波形データ◇Snとの残差データdnを求める。そして、その残差データdnを量子化部18で量子化符号化した残差符号lnを圧縮波形データとしてフレームデータ生成部22に入力し、フレームデータの一部として記憶する。なお、量子化部18における量子化処理は、量子化レベル数を1サンプル当たりのデータ長で定めるデータビット数及び量子化前の桁調整量を示すスケールファクタに基づいて行う。
このデータビット数は1波形内では全てのフレームについて同一であり、その値は手動で定めるか、予備的な圧縮処理を行って圧縮効率や再生データの歪率を考慮して自動で定めることができる。また、スケールファクタはフレーム毎に設定され、フレームデータの記録前に予備的な圧縮処理を行って圧縮効率や再生データの歪率を考慮して自動で定める。
【0033】
また、残差符号lnは逆量子化部19にも入力し、ここでスケールファクタとデータビット数とに基づいて復号化逆量子化を行い、差分の復号データqnを得る。そして、加算器20で線形予測部21による予測波形データ◇Snとの和をとって再生波形データ◇Xnを生成し、線形予測部21へ入力する。
線形予測部21では、予測係数キャッシュ16から入力するそのフレームについての線形予測係数を用い、例えばp次の予測係数の場合には過去p個の再生波形データ◇Xn−p,◇Xn−p+1,…,◇Xn−1を用いて数1に示したような線形予測を行って予測波形データ◇Snを生成する。線形予測係数の次数を低下させている場合には、予測に用いる再生波形データの個数もその分減ることになる。
【0034】
このような装置によって得られる圧縮データであるフレームデータは、最終的に図5に示す形式で作成し、記憶手段に記憶させる。すなわち、各フレームについての圧縮データとして、そのフレームに含まれる各サンプルの残差符号lnと、副情報データとを記憶する。ここでは1フレームを30サンプルとし、残差符号を4ビットで記録した例を示しているが、データビット数が変化した場合でも1フレーム当たりのアドレス数や1アドレス当たりの残差符号の記憶に用いるビット数は変化させず、1フレームのサンプル数を変化させて対応するものとする。ただし、1フレーム当たりのアドレス数や1アドレス当たりのビット数,残差符号の記憶に用いるビット数は、これに限定されるものではない。
【0035】
副情報データとしては、上述した係数差分符号Ln(ここでは4次の例を示している)と、スケールファクタと、線形予測の次数を低下させたか否かを示す情報としてフラグFとを記憶させる。これらの情報はデコード時に残差符号と共に読み出されるものであるから、そのフレームのデコードに使用することができないので、次のフレームについての情報を記憶させる。従って、係数差分符号は、そのフレームについての線形予測係数と次のフレームについての線形予測係数との差分を非一様に量子化して得たものとなる。また、フラグFが次数を低下させたことを示すONである場合には、このために不要になる係数差分符号に代えて、次数の低下数を示すデータを次数情報として記憶させる。フラグFがOFFである場合には、この情報が次数が最大値であることを示す次数情報となる。
【0036】
また、各先頭フレームについての圧縮データの前にはヘッダを設け、第1フレームの線形予測係数とスケールファクタ,前述したデータビット数,最終フレームの位置を示す終了フレームデータ,およびその他データを記憶している。
以上が1つの波形データについての圧縮データの形式であるが、複数の波形データについて圧縮データを記憶させる場合には、それらの圧縮データを(少なくとも論理的には)連続的に記憶させ、その前に管理データを作成して読み出しや管理を容易にするものとする。
【0037】
以上説明した波形圧縮方法によれば、波形データの1フレーム当たりのサンプル数が少ない場合でも精度の高い線形予測が可能になるので、残差符号を少ないビット数で十分な精度で記憶でき、高い品質と高い圧縮効率を同時に実現できる。また、圧縮データの復元処理も、従来の自己相関法を用いた圧縮の場合と同様の簡単な処理で行うことができる。
なお、以上説明した実施形態では、データビット数は1つの波形データ内では固定である例について説明したが、スケールファクタの場合と同様にフレーム毎に設定可能にしてもよい。この場合、データビット数は予備的な圧縮処理の結果を参照してスケールファクタと共に定め、各フレームの副情報として次のフレームのデータビット数も記憶させるものとする。
【0038】
また、以上の説明では具体例としてpが4の場合を挙げたが、これに限られるものではないことはもちろんである。さらに、第1フレームの線形予測係数や各フレームの係数差分符号はそれぞれ図5に示した10ビット,8ビットに限られるものではなく、第1フレームの線形予測係数の方が係数差分符号よりもビット数が多ければよい。他のデータのビット数についても、図示したものは一例であり、これに限られるものではない。
さらに、求めた共分散行列が正則でなかったり、求めた予測係数が所定範囲内になかったりした場合に予測次数を下げ、存在しない高次の予測係数を0にする例について説明したが、予測次数を変化させることなく、低次の予測係数を0として予測係数を求めるようにしてもよい。また、求めた予測係数のうち何れか1ないし複数が所定範囲内になかった場合に、予測次数を下げる代わりに、共分散行列を部分的に変更して、所定範囲内から外れていた予測係数が所定範囲に入るように調整してもよい。
【0039】
〔音源装置の実施形態:図6,図7〕
次に、上述した波形データ圧縮方法で圧縮した波形データを記憶し、必要に応じてこれを伸長してその伸長データに基づいた楽音信号を生成する音源装置の実施形態である電子楽器について説明する。
この電子楽器の構成を示す図が図6である。
この電子楽器において、RAM41はCPU43のワークエリアとして使用するメインメモリであり、その一部の波形メモリである波形記憶部41aに、楽音信号生成に供する圧縮波形データを図5に示した形式で記憶している。フラッシュメモリ42は書き換え可能な不揮発性記憶手段であり、楽音生成処理プログラムを始めとするCPU43の実行する各種制御プログラムや、上述した波形データ圧縮方法で圧縮した図5に示す形式の圧縮波形データを記憶している。波形記憶部41aには、必要な波形データをここから読み出して記憶する。
【0040】
CPU43はこの電子楽器全体を統括制御する制御部であり、また、演奏操作子の操作,自動演奏の指示,通信入出力部(I/O)46からの入力等によって発音開始指示(ノートオン)があった場合には、音源部50に対して楽音信号の生成開始を指示する。
操作子44は、この電子楽器を演奏するための鍵盤等の演奏操作子と、CPU43や音源部50に自動演奏等の各種の指示を与えるための指示操作子とによって構成される。表示器45はCPU43の制御に従って必要なメッセージ等を表示する表示手段である。通信I/O46は、MIDI(Musical Instruments Digital Interface)等による通信インタフェースであり、外部装置とのデータや信号の授受を行うための通信手段である。
そして、これらの各ユニットは、圧縮波形データの伸長とその伸長データに基づいた楽音信号の生成/出力を行う音源部50と共にバスライン47に接続されている。また、音源部50から出力される楽音信号はサウンドシステム70に入力し、ここで楽音信号に従った発音が行われる。
【0041】
次に、このような電子楽器における発音時の動作について、音源部の内部構成と共に説明する。
上述のノートオンは、パートP,音高N,強度Vの指定を伴うが、CPU43は、ノートオンがあると発音チャンネルのうち1つをそのノートオンに応じた楽音の発生に割り当てる。なお、発音チャンネルは通常複数あるが、1つでも構わない。そして、パートPで現在選択されている音色データに基づいて、RAM41に記憶されている圧縮波形データの1つを選択すると共に、音高N及び強度Vに基づいてその発音についてのピッチシフト量,音量EG(エンベロープジェネレータ)パラメータ,LFO(低周波発振器)パラメータ,出力レベル等を制御レジスタ60中の割り当てた発音チャンネルの領域に設定する。ここで、使用される可能性がある圧縮波形データについては、予めフラッシュメモリ42からRAM41の波形記憶部41aにコピーしておくものとする。
【0042】
そして、選択された圧縮波形データのヘッダを読み出し、ヘッダの内容に従って、データビット数,読み出し開始アドレス,読み出し終了アドレス,ループアドレス,第1フレームの残差予測係数,第1フレームのスケールファクタ,その他データを同じく制御レジスタ60中の割り当てた発音チャンネルの領域に設定する。アドレスについては、ワード単位のアドレスでもフレーム単位のアドレスでもよい。ここでは、CPU43が第1の読出手段として機能する。
その後、割り当てた発音チャンネルの領域にノートオンの指示を書き込むと、音源部50が発音に必要な動作を開始する。複数の音を同時に発音する場合には以下の処理は必要な各発音チャンネルについてサンプリング周期内に時分割で行うのであるが、ここでは説明を簡単にするため、1つの発音チャンネルに係る動作のみを説明する。
【0043】
まず、アドレス生成手段であるアドレス発生部52では、制御レジスタ60に設定されているピッチシフト量を参照して、各サンプリング周期毎に発音チャンネルの発する音のピッチに応じた速度で変化する読み出しアドレスを生成する。具体的には、サンプリング周期毎に発音周波数をサンプリング周波数で割ったFナンバだけ増加するサンプルアドレスを生成する。
そして、このサンプルアドレスのうち整数部は残差情報キャッシュ54に、小数部は補間部56に出力し、整数部が圧縮データの1アドレスのサンプル数(データビット数によって異なるが、図5に示した例では3)だけ増加する毎にフレーム読出部51に読出要求パルスを出力する。また、アドレス発生部52は読出要求パルスの送出毎に1ずつアドレスをカウントアップするメモリカウンタを備えており、読出要求パルスと共にそのメモリカウンタのカウント値をフレーム読出部51に送出する。
【0044】
フレーム読出部51は、第2の読出手段であり、アドレス発生部52からの読出要求パルスに応じて波形記憶部41a中のメモリカウンタの示すアドレスから1アドレス分の圧縮データを読み出す。そして、副情報の部分を副情報デコード部53に、残差符号の部分を残差情報キャッシュ54に出力する。
【0045】
副情報デコード部53は、復元保持手段であり、フレーム読出部51から入力する副情報データを順次収集し、1フレーム分集まった時点で副情報データをデコードして線形予測係数,スケールファクタ,その他データを取得し、これを保持すると共に次のフレームの波形データの復元のために音源部50の各部に供給する。すなわち、各フレームの圧縮データとして記憶されている副情報は、そのフレームの次のフレームの残差データの復元に使用される。
なお、線形予測係数については、係数差分符号として記憶されているので、まずこれを復号化逆量子化してから現在のフレームの線形予測係数に加えて次のフレームの線形予測係数を復元する。そして、フラグFがONであった場合には次数の低下数を示すデータを参照し、不要な線形予測係数をフィルタして「0」に設定する。また、第1フレームの線形予測係数は、フレーム読出部51が制御レジスタ60から読み出して副情報デコード部53に入力するものとする。
【0046】
残差情報キャッシュ54は、フレーム読出部51から入力する残差符号データを最新の3アドレス分保持し、アドレス発生部52から入力するサンプルアドレスの整数部に応じて、その進行量に相当する数の残差符号データを順に取り出してデコーダ部55に出力する。
【0047】
デコーダ部55は、伸長手段であり、残差情報キャッシュ54から残差符号データが入力する毎に、その残差符号データをデコードして伸長波形データを生成し、波形データキャッシュに保持する。デコーダ部55のより詳細な構成は図7に示す通りであり、このデコードは、副情報デコード部53から供給されるスケールファクタを用いて残差符号データを逆量子化部81で復号化逆量子化して残差データを得、過去にデコードして波形データキャッシュ82に保持している伸長波形データと副情報デコード部53から供給される線形予測係数とを用いて線形予測部83で線形予測を行って得られる予測データに、加算部84でその残差データを加算することによって行うことができる。
波形データキャッシュに保持している伸長波形データは、線形予測部83による線形予測と補間部56によるサンプル間補間の両方に使用する。従って、波形データキャッシュには、線形予測の次数(ここでは4とする)に応じた数とサンプル間補間に必要な数(例えば4点補間を行う場合には4つ)の多い方の数だけ伸長波形データを保持しておく。
【0048】
補間部56は、補間手段であり、各サンプリング周期毎にデコーダ部55の波形データキャッシュに保持している伸長波形データを取得し、アドレス発生部52から入力するサンプルアドレスの小数部に基づいてこれを補間し、補間サンプルを生成する。この補間の方法としては、例えば4点補間を用いることができる。また、波形データキャッシュ82にはサンプルアドレスの整数部に応じた最新の所定数の伸長波形データが保持されているので、ここから新しい方の必要数のデータを取得することで、補間に必要な伸長波形データを得ることができる。
音量EG部57は、ノートオン及び音量EGパラメータに基づいて、楽音の立上がりから立下がりまでの音量変化に対応した音量エンベロープを発生し、その音量エンベロープを補間部56から出力される補間サンプルに乗じて音量を制御し、対応するチャンネルの楽音データとして出力する。
【0049】
ミキサ58は、各サンプリング周期毎に音量EG部57から時分割で出力される各チャンネルの楽音データを累算し、最終的な楽音データとしてD/Aコンバータ59に出力する。
DAコンバータ59はミキサ58から入力する楽音データをアナログの楽音信号に変換してサウンドシステム70に出力し、その楽音信号に基づいた発音を行わせる。以上の音量EG部57乃至DAコンバータ59が出力手段である。
【0050】
以上説明した電子楽器によれば、上述した波形データ圧縮方法で圧縮した波形データを必要に応じて伸長してその伸長データに基づいた楽音信号を生成することができる。従って、復元の処理負担が小さくかつ圧縮効率の良い圧縮波形データを用いることができるので、メモリの容量を低減し、コストダウンを図ることができる。
なお、データビット数をフレーム毎に設定するようにした場合には、副情報デコード部53でこの情報もデコードし、アドレス発生部52や残差情報キャッシュ54に供給するものとする。
また、上記の音源装置は電子楽器だけでなく、音源チップ等として構成してもよい。
【0051】
【発明の効果】
以上説明してきたように、この発明の波形データ圧縮方法によれば、波形データの1フレーム当たりのサンプル数が少ない場合でも精度の高い線形予測が可能になるので、残差符号を少ないビット数で十分な精度で記憶でき、高い品質と高い圧縮効率を同時に実現できる。
【図面の簡単な説明】
【図1】この発明の波形データ圧縮方法の実施形態における線形予測係数を求める処理を示すフローチャートである。
【図2】その線形予測係数を求める際に使用する波形データサンプルについて説明するための図である。
【図3】この発明の波形データ圧縮方法に係る圧縮処理を行う装置の構成例を示すブロック図である。
【図4】その圧縮処理における非一様量子化について説明するための図である。
【図5】その圧縮処理で波形データを圧縮して得た圧縮波形データの記憶フォーマットの例を示す図である。
【図6】その圧縮波形データを伸長してその伸長データに基づいた楽音信号を生成する音源装置の実施形態である電子楽器の構成を示すブロック図である。
【図7】図6に示したデコーダ部の構成をより詳細に示すブロック図である。
【図8】共分散行列を用いる方法と自己相関法との間の圧縮効率の差について説明するためのグラフである。
【符号の説明】
11…予測係数算出部、12,17…減算器、13…非一様量子化部、14…逆量子化部、15,20,84…加算器、16…予測係数キャッシュ、18…量子化部、19…逆量子化部、21…線形予測部、22…フレームデータ生成部、41a…波形記憶部、50…音源部、51…フレーム読出部、52…アドレス発生部、53…副情報デコード部、54…残差情報キャッシュ、55…デコーダ部、56…補間部、57…音量EG部、58…ミキサ、59…D/Aコンバータ、60…制御レジスタ、70…サウンドシステム、81…逆量子化部、82…波形データキャッシュ、83…線形予測部
Claims (4)
- 波形データ圧縮装置が波形データを所定のサンプル数からなるフレーム毎に圧縮する波形データ圧縮方法であって、
前記波形データ圧縮装置が、
圧縮対象のフレームに含まれる波形データとそのフレームの直前のpサンプルの波形データとからp次の共分散行列を求め、求めた共分散行列に基づいてp次の線形予測係数を求め、求めた線形予測係数を用いて前記フレーム毎の圧縮を行う圧縮手順を実行し、
前記圧縮手順において、求めた前記共分散行列が正則か否かを判断し、正則でない場合には自動的に次数pを1少ない次数に変更し、その新たな次数の共分散行列を再度求め、これを用いてその次数の前記線形予測係数を求めることを特徴とする波形データ圧縮方法。 - 1フレーム当たりのサンプル数が次数pの150倍以下であることを特徴とする請求項1記載の波形データ圧縮方法。
- 前記波形データ圧縮装置が、前記圧縮手順において、求めた前記線形予測係数の値が所定の範囲に入るか否かを判断し、入らない場合には自動的に次数pを1少ない次数に変更し、その新たな次数の共分散行列を再度求め、これを用いてその次数の前記線形予測係数を求めることを特徴とする請求項1又は2記載の波形データ圧縮方法。
- 圧縮対象の前記波形データが、音源用の波形メモリに記憶させる波形データであることを特徴とする請求項1乃至3のいずれか一項記載の波形データ圧縮方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003000608A JP4107085B2 (ja) | 2003-01-06 | 2003-01-06 | 波形データ圧縮方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003000608A JP4107085B2 (ja) | 2003-01-06 | 2003-01-06 | 波形データ圧縮方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004212734A JP2004212734A (ja) | 2004-07-29 |
JP4107085B2 true JP4107085B2 (ja) | 2008-06-25 |
Family
ID=32818858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003000608A Expired - Fee Related JP4107085B2 (ja) | 2003-01-06 | 2003-01-06 | 波形データ圧縮方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4107085B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4935280B2 (ja) * | 2006-09-29 | 2012-05-23 | カシオ計算機株式会社 | 音声符号化装置、音声復号装置、音声符号化方法、音声復号方法、及び、プログラム |
WO2012053149A1 (ja) * | 2010-10-22 | 2012-04-26 | パナソニック株式会社 | 音声分析装置、量子化装置、逆量子化装置、及びこれらの方法 |
-
2003
- 2003-01-06 JP JP2003000608A patent/JP4107085B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004212734A (ja) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH096397A (ja) | 音声信号の再生方法、再生装置及び伝送方法 | |
US20050188819A1 (en) | Music synthesis system | |
US7711555B2 (en) | Method for compression and expansion of digital audio data | |
JP4107085B2 (ja) | 波形データ圧縮方法 | |
JP4691050B2 (ja) | Parcor係数算出方法、及びその装置とそのプログラムと、その記憶媒体 | |
JP2008170488A (ja) | 波形圧縮装置、波形伸長装置、プログラムおよび圧縮データの生産方法 | |
JP4007194B2 (ja) | 音源装置 | |
JP2000132194A (ja) | 信号符号化装置及び方法、並びに信号復号装置及び方法 | |
JP3826870B2 (ja) | 圧縮データ構造、波形生成装置および波形記憶装置 | |
JP2000132193A (ja) | 信号符号化装置及び方法、並びに信号復号装置及び方法 | |
JP2931059B2 (ja) | 音声合成方式およびこれに用いる装置 | |
JP3933072B2 (ja) | 波形圧縮装置 | |
JP2674161B2 (ja) | 音源データ圧縮符号化方法 | |
JP3912304B2 (ja) | 圧縮データ構造、波形生成装置および波形記憶装置 | |
JP3933073B2 (ja) | 波形伸長装置 | |
JPH05232996A (ja) | 音声符号化装置 | |
JP3945435B2 (ja) | 波形データ圧縮方法、楽音信号発生方法、楽音信号処理装置およびプログラム | |
JP2002049395A (ja) | ディジタル信号処理方法、学習方法及びそれらの装置並びにプログラム格納媒体 | |
JP3884131B2 (ja) | データ圧縮装置およびデータ伸長装置 | |
JP2000132195A (ja) | 信号符号化装置及び方法 | |
JP3116381B2 (ja) | 楽音波形圧縮方法 | |
JP2002049396A (ja) | ディジタル信号処理方法、学習方法及びそれらの装置並びにプログラム格納媒体 | |
JPS6136800A (ja) | 可変長フレ−ム音声分析合成方式 | |
JP3918755B2 (ja) | 楽音合成装置 | |
JPS6331800B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041124 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061107 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070807 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070904 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20071015 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080311 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080324 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110411 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4107085 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120411 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130411 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140411 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |