(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024032487
(43)【公開日】2024-03-12
(54)【発明の名称】信号分析装置、スペクトログラム生成方法、およびプログラム
(51)【国際特許分類】
G06F 17/14 20060101AFI20240305BHJP
G01R 13/20 20060101ALI20240305BHJP
G01R 23/16 20060101ALI20240305BHJP
【FI】
G06F17/14 Z
G01R13/20 L
G01R23/16 B
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022136164
(22)【出願日】2022-08-29
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】齊木 晃治
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056AA04
5B056BB13
(57)【要約】
【課題】 スペクトログラムの作成に係る処理時間を短縮し高速化を促すこと。
【解決手段】 実施形態によれば、信号分析装置は、時系列の信号サンプルを記憶するメモリと、第1プロセッサと、第2プロセッサとを具備する。第1プロセッサは、信号サンプルを複数に分割して第2プロセッサに転送する。第2プロセッサは、複数の演算ユニットと、フレームバッファとを備える。演算ユニットは、分割された信号サンプルに対してそれぞれ高速フーリエ変換処理を施して出力データを生成し、当該出力データの振幅情報を色情報に変換してスペクトログラム画像を生成する。フレームバッファは、スペクトログラム画像を記憶する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
時系列の信号サンプルを記憶するメモリと、
第1プロセッサと、
第2プロセッサとを具備し、
前記第1プロセッサは、
前記信号サンプルを複数に分割して前記第2プロセッサに転送し、
前記第2プロセッサは、
分割された前記信号サンプルに対してそれぞれ高速フーリエ変換処理を施して出力データを生成し、当該出力データの振幅情報を色情報に変換してスペクトログラム画像を生成する複数の演算ユニットと、
前記スペクトログラム画像を記憶するフレームバッファとを備える、信号分析装置。
【請求項2】
前記第2プロセッサは、前記演算ユニットの各々からアクセス可能なグローバルメモリをさらに備え、
前記第1プロセッサは、
分割された前記信号サンプルを前記グローバルメモリに予め転送する、請求項1に記載の信号分析装置。
【請求項3】
時系列の信号サンプルを記憶するメモリと、第1プロセッサと、第2プロセッサとを具備する信号分析装置によるスペクトログラム生成方法であって、
前記第1プロセッサが、前記信号サンプルを複数に分割して前記第2プロセッサに転送することと、
前記第2プロセッサが、分割された前記信号サンプルに対して複数の演算ユニットによりそれぞれ高速フーリエ変換処理を施して出力データを生成することと、
前記第2プロセッサが、前記出力データの振幅情報を色情報に変換してスペクトログラム画像を生成することと、
前記第2プロセッサが、前記スペクトログラム画像をフレームバッファに記憶させることとを具備する、スペクトログラム生成方法。
【請求項4】
前記第1プロセッサが、分割された前記信号サンプルを、前記第2プロセッサに備えられ前記演算ユニットの各々からアクセス可能なグローバルメモリに予め転送することをさらに具備する、請求項3に記載のスペクトログラム生成方法。
【請求項5】
時系列の信号サンプルを記憶するメモリと、第1プロセッサと、複数の演算ユニットを備える第2プロセッサとを具備する信号分析装置のプログラムであって、
前記第1プロセッサに、前記信号サンプルを複数に分割して前記第2プロセッサに転送させ、
前記第2プロセッサの複数の演算ユニットに、分割された前記信号サンプルに対してそれぞれ高速フーリエ変換処理を施して出力データを生成させ、
前記第2プロセッサの複数の演算ユニットに、前記出力データの振幅情報を色情報に変換してスペクトログラム画像を生成させ、
前記第2プロセッサに、前記スペクトログラム画像をフレームバッファに記憶させる、プログラム。
【請求項6】
前記第1プロセッサに、分割された前記信号サンプルを、前記第2プロセッサに備えられ前記演算ユニットの各々からアクセス可能なグローバルメモリに予め転送させる、請求項5に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、信号分析装置、スペクトログラム生成方法、およびプログラムに関する。
【背景技術】
【0002】
スペクトログラムは、信号の周波数スペクトルの分析結果を視覚的に示すグラフである。例えば横軸を時間、縦軸を周波数とし、信号成分の強さを色で表す3次元のグラフが知られている。スペクトログラムを作成するのに、信号分析プログラムを実行する信号分析装置が用いられる。
【0003】
信号分析装置は、デジタルの時系列の信号サンプルをCPU(Central Processing Unit)により高速フーリエ変換(FFT)して、信号の周波数ごとの振幅を求める。信号サンプル上の時間範囲を一定のスライド幅でずらしながら繰り返しFFT処理を行うことで、周波数ごとの振幅がそれぞれの時間範囲で得られる。振幅を色の情報に変換し、時間と周波数により求まる座標にプロットすると、スペクトログラム画像を生成することができる。
【0004】
信号分析プログラムは、スペクトラム解析、およびスペクトログラムの表示と並行して、信号サンプルを音声復調してスピーカーに出力したり、信号を所定の方式で復調/復号したりする機能を持つ。さらに、これらの処理をリアルタイムで実行可能な装置やプログラムも知られている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許第2517398号公報
【特許文献2】特許第3749022号公報
【特許文献3】特許第3359251号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
汎用のCPUによる処理では、処理速度が頭打ちになり、演算量の増大とともに表示のフレームフレートの低下や表示の遅延がもたらされる。CPU自体を高速化したり、複数コアのCPUを用いるにもおのずと限界があり、コストの負担も無視できない。そこでGPU(Graphics Processing Unit)の使用が考慮されるが、CPU-GPU間でのデータ伝送に係る遅延などのため、処理速度の低下する懸念は解消されたとはいえない。
【0007】
そこで、目的は、スペクトログラムの作成に係る処理時間を短縮し、高速化をさらに促進し得る信号分析装置、スペクトログラム生成方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0008】
実施形態によれば、信号分析装置は、時系列の信号サンプルを記憶するメモリと、第1プロセッサと、第2プロセッサとを具備する。第1プロセッサは、信号サンプルを複数に分割して第2プロセッサに転送する。第2プロセッサは、複数の演算ユニットと、フレームバッファとを備える。演算ユニットは、分割された信号サンプルに対してそれぞれ高速フーリエ変換処理を施して出力データを生成し、当該出力データの振幅情報を色情報に変換してスペクトログラム画像を生成する。フレームバッファは、スペクトログラム画像を記憶する。
【図面の簡単な説明】
【0009】
【
図1】
図1は、第1の実施形態に係わる信号分析装置の一例を示すブロック図である。
【
図2】
図2は、
図1に示される信号分析装置の処理手順の一例を示すフローチャートである。
【
図3】
図3は、信号サンプルに対するサンプリングレートR、周波数分解能F、およびスライド幅Wの関係の一例を示す図である。
【
図4】
図4は、グローバルメモリ5の出力データ領域5dの構造の一例を示す図である。
【
図5】
図5は、Cooley-Tukeyのアルゴリズムの処理手順の一例を示すフローチャートである。
【
図6】
図6は、Cooley-Tukeyのアルゴリズムの処理手順の他の例を示すフローチャートである。
【発明を実施するための形態】
【0010】
[第1の実施形態]
<構成>
図1は、第1の実施形態に係わる信号分析装置の一例を示すブロック図である。信号分析装置10は、コンピュータであり、プロセッサとしてのCPU1と、メモリ2とを備える。さらに信号分析装置10は、GPU3を具備する。GPU3は、複数の演算ユニット41~4e、グローバルメモリ5、およびフレームバッファ6を備える。フレームバッファ6は、ディスプレイ(表示装置)20に接続され、フレームバッファ6に画像データが転送/記憶されることで、ディスプレイ20に映像が表示される。
【0011】
演算ユニット41~4eは、それぞれが他の演算ユニットとは独立して、グローバルメモリ5に格納されたプログラムを実行可能である。また、演算ユニット41~4eは、グローバルメモリ5の任意の箇所(アドレス)を読み書き可能である。
【0012】
メモリ2は、コンピュータである信号分析装置10を制御するオペレーティングシステムに加えて、CPU1により処理されるCPUプログラムと、GPU3により処理されるGPUプログラム(A)、GPUプログラム(B)、および、処理の対象となる、デジタルの信号サンプルを格納する。ここで、GPUプログラム(A)、GPUプログラム(B)は、例えばCUDA(登録商標)、HLSL、あるいはGLSLなどの、GPU用のプログラミング言語で記述される。メモリ2は、GPU3向けに、予めバイナリ形式にコンパイルされたGPUプログラム(A)、GPUプログラム(B)を記憶する。
【0013】
例えば、GPUプログラム(A)は、信号サンプルに対してFFT処理を行う。GPUプログラム(B)は、GPUプログラム(A)によるFFTの結果から、スペクトログラムを生成する。
【0014】
CPU1は、GPUプログラム(A)、GPUプログラム(B)、および信号サンプルをメモリ2からGPU3に転送し、それらをGPU3のグローバルメモリ5に格納する。さらに、CPU1は、各演算ユニット41~4eに対して、信号サンプル内の処理対象範囲を指定する。
【0015】
演算ユニット41~4eは、グローバルメモリ5に格納された信号サンプルの中から、CPU1に指定された範囲のデータを読み出して、FFT処理を施し、結果をCPU1に指定されたグローバルメモリ5上の領域に格納する。また、GPU3は、CPU1からの指示により、グローバルメモリ5上のFFT結果を色情報に変換して、スペクトログラム画像を生成してグローバルメモリ5に格納する。そして、GPU3は、CPU1の指示により、スペクトログラム画像をグローバルメモリ5からフレームバッファ6にコピーする。これにより、スペクトログラム画像がディスプレイ20に表示される。
【0016】
GPU3のグローバルメモリ5は、用途に応じた複数の領域に区分される。すなわち、グローバルメモリ5は、プログラム領域5a,5b、入力データ領域5c、出力データ領域5d、および、スペクトログラム画像領域5eを備える。
【0017】
プログラム領域5aは、GPUプログラム(A)を格納する。プログラム領域5bは、GPUプログラム(B)を格納する。入力データ領域5cは、メモリ2から転送された、GPU3で処理する対象の信号サンプルを格納する。出力データ領域5dは、演算ユニット41~4eによるFFTの処理結果を格納する。スペクトログラム画像領域5eは、出力データ領域5dに格納されたFFTの結果から生成された、スペクトログラム画像を格納する。
【0018】
<作用>
次に、上記構成における作用を説明する。以下の説明では、信号サンプルの長さをNとし、周波数分解能をFとし、スライド幅をWとし、演算ユニット41~4eの数をEとする。なお、スライド幅Wは、FFTの入力データの先頭位置を時間方向に移動する単位である。
【0019】
実施形態において、演算ユニットの数Eは、信号サンプルの長さNがEの整数倍となるように決定される。周波数分解能Fは、生成されるスペクトログラム画像の周波数方向のドット数である。スライド幅Wは、ユーザが任意に設定可能なパラメータである。ただし、一般的にスペクトログラムを生成する処理では、Fよりも少ない値に設定する。これは、時間方向に処理する範囲が少しずつ重複するようにするためである。信号サンプルの長さNをWで割ったもの(=N/W)が、スペクトログラム画像の時間方向のドット数である。
【0020】
図2は、
図1に示される信号分析装置の処理手順の一例を示すフローチャートである。
図2のステップS1において、CPU1は、メモリ2のGPUプログラム(A)および(B)を、GPU3のグローバルメモリ5のGPUプログラム(A)領域、およびGPUプログラム(B)領域にそれぞれ予め転送しておく。
【0021】
入力となる信号サンプルは、サンプリングされた信号の信号レベルを時系列に並べたデータである。単位時間当たりのサンプル数は、サンプリングレートRにより決定される。信号レベルは、デジタル変換する前の信号の種類やアナログからデジタルに変換する際の方法によって異なるが、整数型、または浮動小数点型のいずれかで表現されるものとする。
【0022】
次に、GPU3は、GPUプログラム(A)によりFFT処理を実行する。初期化式、条件式、変化式が(A=0;A<N/W;A=A+1)で表されるAループにおいて、ステップS2,S3,S4の処理が実行される。ステップS2において、CPU1は、信号サンプルのA×W番目からF個のサンプルをメモリ2から入力データ領域5cに転送する。こののち処理手順は、(B=0;B<E;B=B+1)で表されるBループに入る。
【0023】
BループのステップS3において、CPU1は、入力データ領域5cのデータを演算ユニットの数Eで等分したブロックごとに、演算ユニット41~4eでGPUプログラム(A)によるFFT処理を実行させる。Bループの処理結果は、出力データ領域5dに格納される。Bループで実行されるGPUプログラム(A)の出力先をA×Fでオフセットすることで、出力データ領域5dに全ての信号サンプルに対する結果が格納される。
【0024】
このように、Aループにおいて、信号サンプルを時間方向にWずつ移動しながら、信号の末尾までBループの処理を繰り返すことで、信号サンプル全体をスライド幅Wごとに、周波数ごとの振幅の情報に変換する。
【0025】
図3は、信号サンプルに対するサンプリングレートR、周波数分解能F、およびスライド幅Wの関係の一例を示す図である。
図3は、R=8、F=6、W=5とした場合について示す。
図3において、周波数分解能Fで示される範囲が、1回のAループで処理される範囲である。その範囲を、使用する演算ユニット数Eで分割して、Bループにおいて各演算ユニット41~4eに処理させる。
【0026】
図4は、グローバルメモリ5の出力データ領域5dの構造の一例を示す図である。
図6において、周波数分解能Fで示される範囲が1回のAループで出力される処理結果である。この範囲が、スペクトログラム画像において、周波数方向を縦方向にした場合の縦1ドット分の情報、または、周波数方向を横方向にした場合の縦1ドット分の情報に相当する。
【0027】
再び
図2に戻って説明を続ける。全ての演算ユニット41~4eがGPUプログラム(A)の処理を完了すると(ステップS4)、処理手順はCループに移行する。
図2において、(C=0;C<N/W;C=C+1)で表されるCループは、さらに、(D=0;D<E;D=D+1)で示されるDループを含む。
【0028】
Cループでは、スペクトログラム画像を生成する処理が実行される。すなわち、GPU3は、出力データ領域5dに時系列に格納された信号の振幅の情報を、GPUプログラム(B)により、色の情報に変換してスペクトログラム画像を生成する。
【0029】
Cループにおいて、出力データ領域を周波数分解能Fだけずらしながら、Dループの処理を繰り返すことで、Aループの処理結果をスペクトログラム画像に変換する。Dループにおいて、GPU3は、出力データ領域5dを演算ユニット41~4eの数Eで等分したブロックごとに、GPUプログラム(B)により演算ユニット41~4eで処理を行い、結果をスペクトログラム画像領域5eに出力する(ステップS5)。Dループで実行するGPUプログラム(B)の入力元を、C×Fでオフセットすることで、出力データ領域5dの全ての信号サンプルをスペクトログラムに変換することができる。
【0030】
GPUプログラム(B)は、時間方向をX軸、周波数方向をY軸とした場合の、座標(C,D×F/E+P)の位置に、出力データ領域の位置C×F+D×F/Eの位置の振幅データを色情報に変換してプロットする。ここで、Pは演算ユニットで処理するデータの添え字であり、0からFまでの範囲の値を取る。
【0031】
振幅データを色情報に変換する方法は様々な方法が選択できるが、振幅の絶対値を正規化して色相と対応づけることで、色に変換する方法が一般的である。なお、色変換のパラメータを変更してスペクトログラムを再生成するには、Cループ以降を再度実行することで、新たなスペクトログラム画像を生成することができる。
【0032】
そして、全ての演算ユニット41~4eがGPUプログラム(B)の処理を完了すると(ステップS6)、ステップS7において、CPU1は、生成したスペクトログラム画像をスペクトログラム画像領域5eからGPU3のフレームバッファ6にコピーする指示を発行する。これにより、最新のスペクトログラム画像がディスプレイ20に表示される。
【0033】
<効果>
以上のように、CPU1から、処理対象のデータの位置と出力のデータの位置、処理パラメータを指定して、GPU3の演算ユニットの処理タスクを発行することで、信号サンプルのFFTと、スペクトログラム画像の生成とをGPU3により実施することができる。GPU3への処理タスクを生成する場合と比較して、FFTに必要な演算量が大きいため、CPU1のみの場合と比べて負荷をGPU3に肩代わりさせて、CPU1の負荷を低減することができる。
【0034】
また、FFTをGPU3で行い、CPU1側でスペクトログラム画像を生成して表示する既存の技術では、FFTの結果をグローバルメモリ5からメモリ2に転送し、スペクトログラム画像をメモリ2からフレームバッファ6に転送することが必要になる。
【0035】
例えば特許文献1や特許文献3の技術では、入力された信号サンプルに対してCPU1でFFTを行ない、スペクトラムやスペクトログラムを生成している。しかし、表示の時間分解能や周波数分解能を上げる場合、複数の入力ソースのスペクトラムを同時に表示させる場合、あるいはスペクトラムの表示と同時に音声の出力を行う場合などに、CPUの演算量が多くなり、表示のフレームフレートの低下や表示の遅延を引き起こす要因となっていた。
【0036】
高速なCPU1を用いるか、特許文献2のように専用の並列処理可能なハードウェアを用いればFFTの処理を高速化することができるが、いずれも高価なハードウェアが必要になる。GPUを用いるにしても、信号分析のためにFFTの結果を画面に表示する際、CPU1からGPUへの信号サンプルの転送、GPUからCPU1へのFFT結果の転送、CPU1で生成したスペクトラムやスペクトログラム画像のGPUへの転送による遅延のため、CPUの処理負荷は下がるものの、表示のフレームレートが低下する問題は依然として残っていた。
【0037】
これに対し実施形態では、FFT処理ののち生成されたスペクトログラム画像が、GPU3上のグローバルメモリ5に既に格納されている。従って、CPU1からGPU3への転送自体が不要になるので、スペクトログラム画像の表示に要する時間が短縮される。
【0038】
これらのことから、実施形態によれば、スペクトログラムの作成に係る処理時間を短縮し、高速化をさらに促進し得る信号分析装置、スペクトログラム生成方法、およびプログラムを提供することが可能になる。
【0039】
[第1の変形例]
図5は、Cooley-Tukeyのアルゴリズムの処理手順の一例を示すフローチャートである。ビット反転処理(ステップS11)に続くSループの条件式にあるNが、周波数分解能Fに対応する。kループとjループは、入力データのうち2つを用いてバタフライ演算を行うためのループである。バタフライ演算の対象となる2つの入力データを決定するために、kとjを設定することが必要になる。
【0040】
kループとjループの回数はm(=2S)で決定される(ステップS12)。このため、例えばjループの処理を演算ユニット41~4eに分散して処理させる場合、各演算ユニット41~4eは、m/2を演算ユニットの数Eで割った回数のバタフライ演算を行うことになる(ステップS13)。しかし、GPU3の演算ユニット41~4eは、演算回数が実行時に変化する処理を行うと処理効率が落ちることに加え、演算回数が多く、処理に時間がかかる場合、GPUがエラーとみなしてGPUプログラムの実行を停止させる場合がある。このため、Nの値が大きい処理に対応することが難しい。
【0041】
図5において、kループとjループは、Sによって変化するが、jループ内で行われる処理の回数は常に一定のN/2である。そこで、kループとjループを0からN/2まで変化する変数iのループに置き換え、iを用いてkとjを算出することで、Sループ内をSによらず常に一定のN/2回のループに置き換えることができる。
【0042】
図6は、Cooley-Tukeyのアルゴリズムの処理手順の他の例を示すフローチャートである。
図6の手順は、
図5から変形したCooley-Tukeyのアルゴリズムであり、
図6の処理フローを
図2のBループと置き換えて使用することができる。ここで、ステップS21のINT(x)は、xの端数を切り捨てる関数である。また、ステップS24のMOD(a,b)は、aをbで割った余りを求める関数である。
【0043】
<第1の変形例の効果>
周波数分解能F(
図5、
図6におけるN)が2のべき乗である場合において、Fに合わせて演算回数を固定してGPUプログラム(A)及びBを作ることが可能になる。これにより演算回数が固定されるため、GPU3においてプログラムを実行する際の実行効率を上げることができる。
【0044】
[第2の変形例]
図2において、GPU用プログラム以外に周波数分解能Fに合わせてビット反転、バタフライ演算で用いられる回転因子を予め計算して、メモリ2からグローバルメモリ5に転送しておく。そして、転送しておいた値を用いてFFTを行う。
<第2の変形例の効果>
ビット反転、バタフライ演算の回転因子を都度計算する必要がないため、処理効率が上がる。
【0045】
実施形態を説明したが、この実施形態は例として提示するものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0046】
1…CPU、2…メモリ、5…グローバルメモリ、5a…プログラム領域、5b…プログラム領域、5c…入力データ領域、5d…出力データ領域、5e…スペクトログラム画像領域、6…フレームバッファ、10…信号分析装置、20…ディスプレイ、41~4e…演算ユニット。