JP4640407B2 - 信号処理装置、信号処理方法及びプログラム - Google Patents
信号処理装置、信号処理方法及びプログラム Download PDFInfo
- Publication number
- JP4640407B2 JP4640407B2 JP2007317722A JP2007317722A JP4640407B2 JP 4640407 B2 JP4640407 B2 JP 4640407B2 JP 2007317722 A JP2007317722 A JP 2007317722A JP 2007317722 A JP2007317722 A JP 2007317722A JP 4640407 B2 JP4640407 B2 JP 4640407B2
- Authority
- JP
- Japan
- Prior art keywords
- tempo
- beat
- beat length
- audio signal
- function
- 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
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L25/00—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
- G10L25/48—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use
Landscapes
- Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Auxiliary Devices For Music (AREA)
- Electrophonic Musical Instruments (AREA)
Description
Z:テンポ
P(Z):テンポZの確率分布
logP(X,Z│Q’):対数尤度
Q’:補助関数G(Q,Q’)を最大化するビート長
である。
以下に、本発明の第1の実施形態にかかる信号処理装置、信号処理方法及びプログラムについて説明する。
q[2],・・・, q[N]と称し、これらを総称して「ビート長Q」と称する(Q= q[1],q[2],・・・, q[N])。
beats per minute]又は[拍/分]が用いられる。以下では、オーディオ信号に含まれる個々の楽音でのテンポを、z[1], z[2],・・・,
z[N]と称し、これらを総称して「テンポZ」と称する(Z= z[1], z[2],・・・, z[N])。
log P(X|Q)を極大値に導く更新を繰り返すことにより、目的関数P(Q|X)の準最適解を求める。EMアルゴリズムは、Eステップ(Expectation
step)と、Mステップ(Maximization step)とを含む。Eステップでは、ビート長算出部18は、隠れ変数であるテンポZの確率分布P(Z|X,Q)の推定処理を行い、補助関数(Q関数)を求める。Mステップでは、ビート長算出部18は、ビタビアルゴリズムなどにより補助関数(Q関数)を最大化する。このEステップ及びMステップを繰り返すことで補助関数(Q関数)を収束させ、収束したQ関数からビート長Qを求める。
…, x[N] (単位:[秒])に対応するビート長qの時系列(単位:[拍])を求める。
∝ P(X|Q)P(Q)であるので、以下、P(X|Q)P(Q)を与えるモデル化を行い、その最大化手法が得られれば、Qを求めることができる。
probability)と呼ばれる。以下、本実施形態にかかるビート解析において、発音時刻間隔Xからビート長Qを求めるモデル化と、このモデルを用いて実際にビートを求めるための計算手法について述べる。
maximum likelihood) 推定となる。)。本実施形態にかかるビート推定方法では、P(X,Z|Q)を与えるモデルを用いてP(X|Q)を最大化するQを求める手法として、EMアルゴリズムを適用する。EMアルゴリズムは尤度関数P(X|Q)の推定手法として知られるが、この手法は事前確率P(Q)を含む確率モデルであっても使用することができ、本手法は、事前知識P(Q)を含む場合にEMアルゴリズムを適用する。
P(X|Q’) − log P(X|Q)」の期待値は、補助関数(Q関数)を最大化するQ’を求めると、必ず正(非負)となることが数学的に証明されている。補助関数であるQ関数は、次の式(3)で表される。EMアルゴリズムは、Q関数を求めるEステップ(Expectation
step)と、Q関数を最大化するMステップ(Maximization Step)ステップとを繰り返すことで、対数尤度log P(X|Q)を単調増加させて極大値に導くものである。
z[n](単位:[秒/拍])とビート長q[n](単位:[拍])の積に等しい(x[n] = z[n]・q[n])。しかし、実際には、演奏者の演奏表現によるテンポZや発音時刻Tの変動や、発音時刻の検出誤差を含むため、一般にはこの両者は等しくない。このときの誤差について確率的に考えることができる。確率分布p(x[n]
| q[n],z[n])は、例えば、正規分布や対数正規分布を用いてモデル化することができる。
Z = z[1],…, z[N]であり、かつ、発音時刻間隔(IOI)Xが X = x[1],…,x[N]である確率P(X,Z|Q) を与えることができる。
P(Q) を加えたものにすることで、MAP推定するときの事後確率P(Q|X)の対数の増加を導く補助関数として、当該Q関数を用いることができる。
Markov model)で“Baum-Welch algorithm”と呼ばれる手法を応用した手法である。次式(6)の前向き確率α_n(z)と、次式(7)の後ろ向き確率β_n(z)を用いると、p(z[n]=z|X,Q)は、次式(8)で計算できる。前向き確率α_n(z)、後ろ向き確率β_n(z)は、それぞれ次式(9)、(10)を用いて、効率的な再帰計算により求められる。なお、HMMの“Baum-Welch
algorithm”と異なる点は、本モデルでは、遷移確率を求めることが目的ではなく、また、本モデルの隠れ変数は、隠れ変数は隠れ状態として扱われる離散化された変数ではなく、連続値をとる変数である点である。
algorithm)のようにDP(dynamic programming)に基づくアルゴリズムで最適化できる。Q’が可変個のビート長Qからなるテンプレートのマルコフモデルである場合には、例えば、時間同期ビタビアルゴリズム(time
synchronous Viterbi search)又は2段DP(2-stage dynamic programming)など、P(Q)を与えるモデルに応じて適切なアルゴリズムを選ぶ。これにより、Q関数を最大化するビート長Qを求めることができる。
P0(Z)を初期値として利用して、上記EMアルゴリズムを適用する。
q[M])を用いて、1拍ごと又は2拍ごとの演奏されたビートを求めるためには、ビート長Qに基づき、必要に応じてビートの発音時刻を補間して、ビートを求めればよい。
x[1], x[2],・・・, x[N])を求める。例えば、発音時刻t[2]から発音時刻t[1]を減算することで、発音時刻間隔x[1]を求める。
次いで、EステップS26〜S28では、ビート長算出部18は、前向き確率α及び後ろ向き確率βを用いて、P(Zt|X,Q)を効率的に計算する。まず、フォワードアルゴリズム(forward algorithm)により、次式(13)に示す前向き確率αを計算し(ステップS26)、次いで、バックワードアルゴリズム(backward
algorithm)により、次式(14)に示す後ろ向き確率βを計算する(ステップS27)。その後、ビート長算出部18は、式(15)のように前向き確率αと後ろ向き確率βを乗算して、P(Zt|X,Q)を求める。
z[1], z[2],・・・, z[N])を求める(ステップS42)。
大量の音楽コンテンツデータ(楽曲)があるとき、その楽曲のテンポを全てラベル付けすることは非常に煩雑な作業である。特に、一般にはテンポは曲の途中で変わるので、ビート毎又は小節毎にテンポをラベル付けすることは、大変な労力が要り、現実的には不可能である。本実施形態では、楽曲ごとのテンポや、楽曲内で変化するテンポを自動的に求めて、メタデータとして音楽コンテンツに負荷できるので、上記労力を軽減できる。
例えば、上記のような「テンポの速い曲」、「8ビートの曲」など、上記ビート解析により求めたテンポやビートをクエリーとして、音楽コンテンツの検索に応用できる。
さらに、好みの曲をリスナーに推薦することに応用できる。例えば、ユーザの好みに合うプレイリストを作るときにも、テンポは、音楽の重要な特徴量として使用される。
その他、テンポに基づいて、楽曲の類似度を計算することもできる。ユーザの所有する大量の楽曲を自動分類するためにも、テンポやビートの情報は必要である。
音楽のビートが分かることで、ロボットなどを音楽のビートに合わせて躍らせるようプログラムすることができる。例えば、音楽再生機能を有するロボットも開発されているが、このロボットは、音楽を再生しながら自動的に曲解析を行い、モーションを作成して動作しながら音楽再生する(モーション再生)。かかるロボットを音楽のビートに合わせて躍らせるためには、音楽のビートを検出する必要があり、実際にビート検出機能が含まれているソフトウェアが配布されている。本実施形態にかかるビート解析方法は、このような場面で使用されるビート検出をより頑健にすることが期待できる。
音楽に合わせて写真を提示するスライドショーでは、写真の切り替わるタイミングを、音楽の切り替わるタイミングと揃えたいという要求がある。本実施形態にかかるビート解析によれば、写真を切り替えるタイミングの候補として、ビートの発音時刻を提供できる。
楽譜として記述する基本要素は、ピッチ(音符の高さ)とビート(音符の長さ)であるので、ピッチ抽出と本実施形態にかかるビート推定を組み合わせることで、音楽を楽譜に変換することも可能である。
音楽解析技術のコード解析のように、ビートをオーディオ信号(音楽/音響信号)のトリガーとして、様々な音楽の特徴を解析することができる。例えば、本実施形態で推定されたビートを単位として、ピッチ抽出や音色などの特徴を解析して、サビや繰り返しパターンなどを含む楽曲の構造を解析することも可能である。
12 発音時刻検出部
14 発音時刻記憶部
16 テンポ確率分布設定部
18 ビート長算出部
20 テンポ算出部
22 特徴量記憶部
24 特徴利用部
Claims (5)
- オーディオ信号を処理する信号処理装置において:
前記オーディオ信号のレベルに基づいて発音時刻Tを検出する発音時刻検出部と;
前記発音時刻Tの間隔である発音時刻間隔Xが与えられたときに当該発音時刻間隔Xがビート長Qに相当する確率を表す目的関数P(Q|X)を設定し、EMアルゴリズムにより、前記目的関数P(Q|X)を単調増加させるように前記ビート長Qを更新するための下記式(11)の補助関数G(Q,Q’)を求めるEステップと、下記式(12)のように前記補助関数G(Q,Q’)を最大化するビート長Q’を求めるMステップとを繰り返すことにより、前記補助関数G(Q,Q’)を収束させて、前記ビート長Qを求めるビート長算出部と;
を備える、信号処理装置。
上記式(11)及び式(12)において、
Z:テンポ
P(Z):テンポZの確率分布
logP(X,Z│Q’):対数尤度
Q’:補助関数G(Q,Q’)を最大化するビート長
である。 - 前記ビート長算出部は、前記オーディオ信号のレベルの時間変化の自己相関関数に基づいて、前記オーディオ信号のテンポZの初期確率分布P 0 (Z)を求め、当該テンポZの初期確率分布P 0 (Z)を、前記式(11)の前記補助関数G(Q,Q’)に含まれる前記テンポZの確率分布P(Z)の初期値として用いる、請求項1記載の信号処理装置。
- 前記ビート長算出部により求められた前記ビート長Qと、前記発音時刻間隔Xとに基づいて、前記オーディオ信号のテンポZを求めるテンポ算出部
をさらに備える、請求項1記載の信号処理装置。 - オーディオ信号を処理する信号処理方法において:
前記オーディオ信号のレベルに基づいて発音時刻Tを検出する発音時刻検出ステップと;
前記発音時刻Tの間隔である発音時刻間隔Xが与えられたときに当該発音時刻間隔Xがビート長Qに相当する確率を表す目的関数P(Q|X)を設定し、EMアルゴリズムにより、前記目的関数P(Q|X)を単調増加させるように前記ビート長Qを更新するための下記式(11)の補助関数G(Q,Q’)を求めるEステップと、下記式(12)のように前記補助関数G(Q,Q’)を最大化するビート長Q’を求めるMステップとを繰り返すことにより、前記補助関数G(Q,Q’)を収束させて、前記ビート長Qを求めるビート長算出ステップと;
を含む、信号処理方法。
上記式(11)及び式(12)において、
Z:テンポ
P(Z):テンポZの確率分布
logP(X,Z│Q’):対数尤度
Q’:補助関数G(Q,Q’)を最大化するビート長
である。 - コンピュータに、
オーディオ信号のレベルに基づいて発音時刻Tを検出する発音時刻検出ステップと;
前記発音時刻Tの間隔である発音時刻間隔Xが与えられたときに当該発音時刻間隔Xがビート長Qに相当する確率を表す目的関数P(Q|X)を設定し、EMアルゴリズムにより、前記目的関数P(Q|X)を単調増加させるように前記ビート長Qを更新するための下記式(11)の補助関数G(Q,Q’)を求めるEステップと、下記式(12)のように前記補助関数G(Q,Q’)を最大化するビート長Q’を求めるMステップとを繰り返すことにより、前記補助関数G(Q,Q’)を収束させて、前記ビート長Qを求めるビート長算出ステップと;
を実行させるためのプログラム。
上記式(11)及び式(12)において、
Z:テンポ
P(Z):テンポZの確率分布
logP(X,Z│Q’):対数尤度
Q’:補助関数G(Q,Q’)を最大化するビート長
である。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007317722A JP4640407B2 (ja) | 2007-12-07 | 2007-12-07 | 信号処理装置、信号処理方法及びプログラム |
| US12/328,236 US7863512B2 (en) | 2007-12-07 | 2008-12-04 | Signal processing device, signal processing method, and program |
| CN2008101857187A CN101452696B (zh) | 2007-12-07 | 2008-12-08 | 信号处理装置、信号处理方法和程序 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007317722A JP4640407B2 (ja) | 2007-12-07 | 2007-12-07 | 信号処理装置、信号処理方法及びプログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2009139769A JP2009139769A (ja) | 2009-06-25 |
| JP4640407B2 true JP4640407B2 (ja) | 2011-03-02 |
Family
ID=40734896
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007317722A Expired - Fee Related JP4640407B2 (ja) | 2007-12-07 | 2007-12-07 | 信号処理装置、信号処理方法及びプログラム |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US7863512B2 (ja) |
| JP (1) | JP4640407B2 (ja) |
| CN (1) | CN101452696B (ja) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4882918B2 (ja) * | 2007-08-21 | 2012-02-22 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
| WO2009101703A1 (ja) * | 2008-02-15 | 2009-08-20 | Pioneer Corporation | 楽曲データ分析装置及び楽器種類検出装置、楽曲データ分析方法及び楽器種類検出装置並びに楽曲データ分析用プログラム及び楽器種類検出用プログラム |
| JP5282548B2 (ja) * | 2008-12-05 | 2013-09-04 | ソニー株式会社 | 情報処理装置、音素材の切り出し方法、及びプログラム |
| US8878041B2 (en) * | 2009-05-27 | 2014-11-04 | Microsoft Corporation | Detecting beat information using a diverse set of correlations |
| JP5582915B2 (ja) * | 2009-08-14 | 2014-09-03 | 本田技研工業株式会社 | 楽譜位置推定装置、楽譜位置推定方法および楽譜位置推定ロボット |
| JP5513074B2 (ja) * | 2009-10-28 | 2014-06-04 | 株式会社河合楽器製作所 | グリッド検出装置及びプログラム |
| ES2727748T3 (es) | 2010-11-22 | 2019-10-18 | Ntt Docomo Inc | Dispositivo y método de codificación de audio |
| JP6290858B2 (ja) | 2012-03-29 | 2018-03-07 | スミュール, インク.Smule, Inc. | 発話の入力オーディオエンコーディングを、対象歌曲にリズム的に調和する出力へと自動変換するための、コンピュータ処理方法、装置、及びコンピュータプログラム製品 |
| US9043261B2 (en) | 2012-05-31 | 2015-05-26 | Nec Corporation | Latent variable model estimation apparatus, and method |
| JP6123995B2 (ja) * | 2013-03-14 | 2017-05-10 | ヤマハ株式会社 | 音響信号分析装置及び音響信号分析プログラム |
| JP6179140B2 (ja) | 2013-03-14 | 2017-08-16 | ヤマハ株式会社 | 音響信号分析装置及び音響信号分析プログラム |
| JP6372072B2 (ja) * | 2013-12-09 | 2018-08-15 | ヤマハ株式会社 | 音響信号分析装置、音響信号分析方法、及び音響信号分析プログラム |
| JP6295794B2 (ja) * | 2014-04-09 | 2018-03-20 | ヤマハ株式会社 | 音響信号分析装置及び音響信号分析プログラム |
| US10770092B1 (en) * | 2017-09-22 | 2020-09-08 | Amazon Technologies, Inc. | Viseme data generation |
| CN107545883A (zh) * | 2017-10-13 | 2018-01-05 | 广州酷狗计算机科技有限公司 | 确定音乐的节奏快慢等级的方法和装置 |
| CN111566724B (zh) * | 2017-12-18 | 2023-06-27 | 字节跳动有限公司 | 模块化自动音乐制作服务器 |
| JP7064509B2 (ja) * | 2017-12-29 | 2022-05-10 | AlphaTheta株式会社 | 音響機器および音響機器用プログラム |
| CN112908288B (zh) * | 2021-01-25 | 2023-11-21 | 北京达佳互联信息技术有限公司 | 节拍检测方法、装置、电子设备和存储介质 |
| CN113223485B (zh) * | 2021-04-28 | 2022-12-27 | 北京达佳互联信息技术有限公司 | 节拍检测模型的训练方法、节拍检测方法及装置 |
| CN113707110B (zh) * | 2021-06-15 | 2023-12-01 | 浙江意博高科技术有限公司 | 智能照明的控制方法和系统 |
| CN113436641B (zh) * | 2021-06-22 | 2024-07-19 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种音乐转场时间点检测方法、设备及介质 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3789326B2 (ja) * | 2000-07-31 | 2006-06-21 | 松下電器産業株式会社 | テンポ抽出装置、テンポ抽出方法、テンポ抽出プログラム及び記録媒体 |
| JP3780858B2 (ja) * | 2001-03-26 | 2006-05-31 | ヤマハ株式会社 | 波形データ分析方法、波形データ分析装置およびプログラム |
| JP4004368B2 (ja) * | 2002-09-24 | 2007-11-07 | 株式会社国際電気通信基礎技術研究所 | 音声認識システム |
| CN1503088A (zh) * | 2002-11-26 | 2004-06-09 | 科 曾 | 一种电子节拍校音器的纵向演示的方法 |
| US7603267B2 (en) * | 2003-05-01 | 2009-10-13 | Microsoft Corporation | Rules-based grammar for slots and statistical model for preterminals in natural language understanding system |
| JP4650662B2 (ja) | 2004-03-23 | 2011-03-16 | ソニー株式会社 | 信号処理装置および信号処理方法、プログラム、並びに記録媒体 |
| JP2006251712A (ja) * | 2005-03-14 | 2006-09-21 | Univ Of Tokyo | 観測データ、特に、複数の音源からの音が混在している音響信号の解析方法 |
| US7612275B2 (en) * | 2006-04-18 | 2009-11-03 | Nokia Corporation | Method, apparatus and computer program product for providing rhythm information from an audio signal |
-
2007
- 2007-12-07 JP JP2007317722A patent/JP4640407B2/ja not_active Expired - Fee Related
-
2008
- 2008-12-04 US US12/328,236 patent/US7863512B2/en not_active Expired - Fee Related
- 2008-12-08 CN CN2008101857187A patent/CN101452696B/zh not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2009139769A (ja) | 2009-06-25 |
| CN101452696A (zh) | 2009-06-10 |
| CN101452696B (zh) | 2012-11-28 |
| US7863512B2 (en) | 2011-01-04 |
| US20090288546A1 (en) | 2009-11-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4640407B2 (ja) | 信号処理装置、信号処理方法及びプログラム | |
| US11900904B2 (en) | Crowd-sourced technique for pitch track generation | |
| US20150094835A1 (en) | Audio analysis apparatus | |
| US10235981B2 (en) | Intelligent crossfade with separated instrument tracks | |
| US7288710B2 (en) | Music searching apparatus and method | |
| US20130061735A1 (en) | Polyphonic note detection | |
| CN104217729A (zh) | 音频处理方法和音频处理装置以及训练方法 | |
| JP2002014691A (ja) | ソース音声信号内の新規点の識別方法 | |
| CN107077836A (zh) | 用于跟踪乐谱的方法以及相关的建模方法 | |
| Nakamura et al. | Real-time audio-to-score alignment of music performances containing errors and arbitrary repeats and skips | |
| WO2017058387A1 (en) | Automatic composer | |
| CN114783456B (zh) | 歌曲主旋律提取方法、歌曲处理方法、计算机设备和产品 | |
| CN101165779B (zh) | 信息处理装置和方法、程序及记录介质 | |
| JP6151121B2 (ja) | コード進行推定検出装置及びコード進行推定検出プログラム | |
| Sako et al. | Ryry: A real-time score-following automatic accompaniment playback system capable of real performances with errors, repeats and jumps | |
| US20180173400A1 (en) | Media Content Selection | |
| JP5092589B2 (ja) | 演奏クロック生成装置、データ再生装置、演奏クロック生成方法、データ再生方法およびプログラム | |
| CN113781989A (zh) | 一种音频的动画播放、节奏卡点识别方法及相关装置 | |
| US20240379130A1 (en) | Signal processing device and signal processing method | |
| CN114664277A (zh) | 音频评估方法及装置 | |
| JPWO2006137271A1 (ja) | 楽曲検索装置、楽曲検索方法および楽曲検索プログラム | |
| CN114420077B (zh) | 和弦识别模型的训练方法及装置、和弦识别方法及装置 | |
| Molina-Solana et al. | Identifying violin performers by their expressive trends | |
| CN115101094A (zh) | 音频处理方法及装置、电子设备、存储介质 | |
| JP2015169719A (ja) | 音情報変換装置およびプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090317 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090317 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091111 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091222 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100219 |
|
| 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: 20101102 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101115 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131210 Year of fee payment: 3 |
|
| LAPS | Cancellation because of no payment of annual fees |
