アダコテック技術ブログ

株式会社アダコテックの技術ブログです。

やさしい!音の異常検知:FLAC入門

アダコテックでは、コア技術として HLAC (Higher-order Local Auto-Correlation; 高次局所自己相関特徴) と多変量解析手法を組み合わせて異常検知技術をさまざまな分野へ応用しています。

HLACには、様々なバリエーションがあります。

以前、動画向けの CHLAC や、多チャンネル時系列データ向けの HLIC について解説しました。

techblog.adacotech.co.jp

techblog.adacotech.co.jp

今回は、音声信号向けの FLAC*1 について解説します。

FLACとは

FLACとは、Fourier Local Auto-Correlation の略で、HLACを音声信号向けにアレンジした特徴抽出手法です。

HLACについては、以下の記事をご覧ください。

techblog.adacotech.co.jp

N次のHLACの定義は以下になります。

  \displaystyle
x(\boldsymbol{a}_1, ..., \boldsymbol{a}_N) = \int f(\boldsymbol{r}) f(\boldsymbol{r}+\boldsymbol{a}_1) ... f(\boldsymbol{r} + \boldsymbol{a}_N) d\boldsymbol{r}

FLACでは、音声信号にいくつかの前処理を施したあとに、同様の式で特徴抽出します。

音声信号のデジタル化

まずはじめに、音声信号のデジタル化について説明します。

音声信号のデジタル化は、基本的にアナログ形式の音声(実世界で聞こえる音)をデジタル形式(コンピュータが理解できる0と1の情報)に変換するプロセスです。

このプロセスを AD変換 (Analog-to-Digital conversion)といい、以下のような処理をおこないます。

サンプリング

  • アナログ音声を一定の時間間隔でサンプリングし、個々の時間点での音の強さ(振幅)を測定します。
  • サンプリングレートは、1秒あたりのサンプリング数を意味し、単位はヘルツ(Hz)です。一般的にCDや音楽配信サービスのサンプリングレートは44.1kHzです。

サンプリング

量子化

  • サンプリングした各ポイントの振幅を、一定の数値(ビット)で表現します。これを量子化と呼びます。
  • 例えば、16ビット量子化では、振幅を65536の異なるレベルで表現します。

量子化

符号化

  • 量子化された値を二進数(ビット列)に変換し、デジタルデータとして保存します。

音声信号のデジタル化

フーリエ変換

FLACのFはフーリエ変換のFです。FLACでは、デジタル化した音声信号に対して、周波数成分を取得するために、まず、フーリエ変換を使用します。

フーリエ変換(Fourier Transform; FT)というのは、時間領域の信号を周波数領域に変換する数学的な手法です。

これにより、信号の周波数成分を解析することができます。

フーリエ変換の数式は、以下のようになります。

 \displaystyle
F(\omega) = \int^\infty_{-\infty} f(t) e^{-i\omega t}dt

ここで、 F(\omega)は周波数領域での信号、 f(t)は時間領域での信号、 \omegaは角周波数になります。

また、コンピュータでデジタル信号として扱う場合は、離散フーリエ変換(Discrete Fourier Transform; DFT)を使用します。

 \displaystyle
X[k] = \sum^{N-1}_{n=0} x[n] \cdot e^{-i(2\pi/N)\cdot kn}

ここで、 X[k] は離散的な周波数領域での信号、 x[n] は離散的な時間領域での信号、 Nはサンプル数になります。

実際に、時間と共にその特性が変動する音データの解析をする際は、短時間フーリエ変換(Short-Time Fourier Transform; STFT)を使用します。

信号の局所的な周波数内容を分析するため、信号を一定の短い時間窓でフーリエ変換をおこないます。

 \displaystyle
STFT_x[n,k] = \sum^\infty_{m=-\infty} x[m]\cdot w[n-m] \cdot e^{-i(2\pi/N)\cdot km}

ここで、 w[n-m] 窓関数 です。一般的に、ハミング窓などが用いられます。信号は一定の時間幅のフレームに分割され、その各フレームに対して離散フーリエ変換が適用されます。

フーリエ変換

メルフィルタバンク

短時間離散フーリエ変換によって周波数成分に変換したあとに、メルフィルタバンクによって、特定の周波数の特徴を抽出します。

メルフィルタバンク(Mel Filter Bank)は、音声処理や音声認識で頻繁に使用される技術です。メルフィルタバンクは、 メル尺度 に基づいた一連のフィルタであり、人間の耳が等距離感に感じるピッチ間隔を定義しています。

これは、複数のバンドパスフィルタをかけているイメージです。下の図の右のグラフのようなフィルタになります。

ここで計算された値をメルスペクトログラムといいます。

メルフィルタバンクを適用

FLACの特徴抽出

メルスペクトログラムに対して、FLACのマスクパターンを適用していきます。

FLACのマスクパターンは、こちらの5つのパターンになります。

FLACのマスクパターン

メルスペクトログラム上の隣り合った値でFLACを計算してくため、フレームあたりの特徴ベクトルの次元数は{メルフィルタバンク数-1}✕ 5 次元になります。

FLACによる音の異常検知処理

音の異常検知の流れは、CHLACの場合と同様です。

まず、正常音の特徴量から部分空間をあらかじめ計算しておきます。 そして、判定したい音の特徴量と正常音の部分空間との距離を異常値として、フレームごとに計算していきます。

FLACの音の異常検知処理

音の異常検知の例

機械的な音を学習させて、その音の合間に入るノイズ(咳の音)が検出できるか実験してみました。

サンプル音の再生 説明
【トレーニングデータ】
機械的な音のみ
【テストデータ】
機械的な音+ノイズ(咳の音)

音の異常検知の例

上のグラフが、異常値のグラフで、下のグラフが、音の波形のグラフです。

音の波形のグラフは、全体的には機械的な音が鳴っているのですが、4秒と8秒のあたりにある幅の狭い波形には咳によるノイズが加わっています。

ご覧のように、機械的な音だけが鳴っている時間は異常値が小さく(この例では、最大でも1e+7程度)なり、咳によるノイズが加わっている時間は異常値が大きく(この例では、6e+13程度)なります。

おわりに

音声信号における特徴抽出手法のFLACと、FLACを使った音の異常検知について解説しました。 この記事が皆さんの知識の一助となれば嬉しいです。