"AudioMelSpectrogram" (ネットエンコーダ)

NetEncoder["AudioMelSpectrogram"]

音声ファイルまたはオブジェクトをそのメル周波数スペクトログラムに変換するエンコーダを表す.

NetEncoder[{"AudioMelSpectrogram","param"->val,}]

前処理や特徴計算のための特定のパラメータを持つエンコーダを表す.

詳細

  • "AudioMelSpectrogram"エンコーダは,マグニチュードスペクトログラムを計算し,フィルタの中心がメル周波数上に線形に配置されたフィルタバンクをそれに適用する.これは人間が知覚する音の高低(非線形)をまねるために行われる.フィルタの数は常にスペクトログラムの数より少ないため,機能の次元性は減少する.
  • NetEncoder[][input]はエンコーダを入力に適用し,出力を作る.
  • NetEncoder[][{input1,input2,}]はエンコーダを入力のリストに適用し,出力のリストを作る.
  • エンコーダへの入力にはAudioオブジェクトまたはFile[]式が使える.
  • 出力は,中心周波数がメルスケール上で直線的間隔で起こる nf バンドバスのフィルターを使ってスペクトログラムをフィルタリングすることによって計算される.
  • エンコーダの出力は次元{n,nf}のランク2のテンソルである.n は前処理が適用された後のパーティションの数で,nf は 計算に使われるフィルタの数である.
  • ネットワークの構築時に"port"->NetEncoder[]を指定すると,エンコーダをネットワークの入力ポートに付加することができる.
  • パラメータ
  • 以下の一般的なパラメータが使用できる:
  • "Augmentation"None増加の適用
    "Normalization"None正規化するかどうか
    "SampleRate"16000ターゲットのサンプルレート
    "TargetLength"Allターゲットの出力の長さ
  • 追加の分割パラメータ:
  • "WindowSize"Automaticパーティションの長さ
    "Offset"Automaticパーティションのオフセット
    "WindowFunction"Automaticパーティションに適用される窓
  • メルスペクトログラムのパラメータ:
  • "MaximumFrequency"Automaticメルフィルタの最高周波数
    "MinimumFrequency"Automaticメルフィルタの最低周波数
    "NumberOfFilters"40メルフィルタの数
  • 各エンコーダに以下の設定とサブオプションが指定できる.
  • "Normalization"は以下の設定を取ることができる:
  • None正規化なし
    "Max"絶対最大値を1に正規化する
    {"Max",val}絶対最大値を val に正規化する
    {"RMS",val}入力音声信号のRMSを val に正規化する
  • "TargetLength"は以下の設定を取ることができる:
  • All入力信号と同じ
    dur時間の量として指定される長さ dur
    n最初の n 個のパーティション
  • 指定された"TargetLength"が入力信号の長さと合わない場合は,必要に応じて充填または刈込みが適用される.
  • "Augmentation"は以下のキーで,規則のリストとして指定できる:
  • "Convolution"Noneインパルス応答を入力にたたみ込む
    "Noise"None入力にノイズを加える
    "TimeShift"None入力を指定の量シフトする
    "Volume"None入力に係数を掛ける
    "VTLP"None声道長の摂動を入力に適用する
  • 数値を受け付ける増加パラメータは,2つの数のリストまたは一変数分布として指定される.前者の場合,値は均一分布の与えられた上限と下限の間でランダム化される.後者では,ユーザ提供の分布が使われる.
  • "Convolution"に使用可能な値には以下のものがある:
  • None増加なし
    signal入力にたたみ込むFileまたはAudioオブジェクト
    {mix,signal}入力と mix パラメータにたたみ込む信号
  • "Noise"に使用可能な値には以下のものがある:
  • None増加なし
    amp振幅 amp を持つホワイトノイズ
    noise追加のノイズ信号を含むFileまたはAudioオブジェクト
    {amp,noise}ノイズ信号と振幅の指定
  • "TimeShift"->t を使うと,入力を t 秒シフトし,必要に応じて充填または刈込みが行われる..Scaled[s]を使うと,入力を s×dur 秒シフトできる.ここで,dur は入力信号の時間的長さである.{t1,t2}またはScaled[{ts1,t2}]を使うと,指定時間同士の間のシフトをランダム化することができる.
  • "Volume"->val を使うと,係数器が指定できる.
  • 声道長の摂動(VTLP)はメルスペクトログラムにおけるフィルタの周波数の中央値に一定の量を掛けるものである."VTLP"val を使うと,摂動の量を指定できる.
  • パラメータ"WindowSize"->Automaticを使うと,パーティションの長さには25ミリ秒が使われる."WindowSize"->dur を使うと,時間の長さ dur のパーティションを選ぶことができる."WindowSize"->n を使うと,n 個のサンプルのパーティションの長さを選ぶことができる.
  • パラメータ"Offset"->Automaticを使うと,8.33ミリ秒のパーティションのオフセットが使われる."Offset"->dur を使うと,時間の長さ dur のパーティションオフセットを選択できる."Offset"->n を使うと,n 個のサンプルのパーティションオフセットを選択できる.
  • パラメータ"WindowFunction"は窓を各パーティションに適用する.可能な設定は以下の通りである:
  • None入力音声に窓を適用しない
    Automatic
    func窓は関数 func を使って計算される
    listサンプル窓 list は明白に指定される
  • パラメータ"MinimumFrequency"->Automaticを使うと,周波数はCeiling[sr/ws]として計算される.sr はサンプルレート"SampleRate"で,ws はパーティションの長さ"WindowSize"である."MinimumFrequency"f にすると,f のフィルタの最低周波数が設定できる.
  • パラメータ"MaximumFrequency"->Automaticを使うと,周波数はRound[Min[8000,sr/2]]]として計算される.sr はサンプルレート"SampleRate"である."MaximumFrequency"f にすると,f のフィルタの最高周波数が設定できる.
  • パラメータ"NumberOfFilters"->n を使うと,n 個のフィルタがメルスペクトログラムの計算に使われる.

例題

すべて開くすべて閉じる

  (1)

メルスペクトログラムのNetEncoderを作る:

Audioオブジェクトを作る:

エンコーダをAudioオブジェクトに適用する:

結果をプロットする:

スコープ  (3)

NetEncoder["AudioMelSpectrogram"]FileまたはAudioオブジェクトを符号化することができる.以下ではメルスペクトログラムのエンコーダを作る:

エンコーダをFileオブジェクトに適用する:

エンコーダをインコアのAudioオブジェクトに適用する:

エンコーダをアウトオブコアのAudioオブジェクトに適用する:

Audioオブジェクトのリストを作る:

NetEncoder["AudioMelSpectrogram"]は入力のバッチに適用される:

メルスペクトログラムのNetEncoderを作る:

エンコーダをネットワークの入力に付加する:

ネットワークをAudioオブジェクトに適用する:

パラメータ  (9)

"Normalization"  (1)

Audioオブジェクトを作る:

エンコーダの指定を"Normalization"->Noneにすると,正規化は行われない:

正規化はスペクトログラムが計算される前に信号に適用されるので,結果の範囲は保証されない:

エンコーダの指定を"Normalization"->Automaticにすると,波形サンプルの最大絶対値は1.で正規化される:

結果の最小値と最大値を求める:

"SampleRate"  (2)

Audioオブジェクトを作る:

エンコーダの指定を"SampleRate"8000にすると,短時間フーリエ変換を行う前に信号が8000Hzにリサンプリングされる:

"SampleRate"パラメータはデフォルトのウィンドウサイズの計算に影響する:

エンコーダのサンプルレートがもとの音声よりも低い場合は,ウィンドウが短くなる:

エンコーダのサンプルレートがもとの音声よりも高い場合は,ウィンドウが長くなる:

"TargetLength"  (1)

Audioオブジェクトを作る:

エンコーダの指定を"TargetLength"Allにすると,すべてのデータのメルスペクトログラムが返される:

エンコーダの指定を"TargetLength"10にすると,充填ゼロで長さが10になる:

エンコーダの指定を"TargetLength"2にすると,最初の2つのパーティションのみを取る:

"WindowSize"  (1)

パーティションの長さは自動的に25msで計算される:

エンコーダの指定を"WindowSize"600にすると,600個のサンプルのパーティションを使ってメルスペクトログラムが返される:

"Offset"  (1)

Audioオブジェクトを作る:

パーティションのオフセットは自動的にパーティションの長さの1/3で計算される:

エンコーダの指定を"Offset"10にすると,10個のサンプルのオフセットを持つパーティションを使って計算されたメルスペクトログラムが返される:

"MinimumFrequency"  (1)

Audioオブジェクトを作る:

最低周波数は自動的にCeiling[sr /ws]として計算される.sr はサンプルレート"SampleRate"で,ws はパーティションの長さ"WindowSize"である:

エンコーダの指定を"MinimumFrequency"2000にすると,最低周波数が2000Hzのフィルタを使って計算されたメルスペクトログラムが返される:

"MaximumFrequency"  (1)

Audioオブジェクトを作る:

最高周波数は自動的にRound[Min[8000,sr/2]]]として計算される.sr はサンプルレート"SampleRate"である.

エンコーダの指定を"MaximumFrequency"2000にすると,最高周波数が2000Hzであるフィルタを使って計算されたメルスペクトログラムが返される:

"NumberOfFilters"  (1)

Audioオブジェクトを作る:

デフォルトでは,メルスペクトログラムの計算には40個のフィルタが使われる:

エンコーダの指定を"NumberOfFilters"128にすると,128個のフィルタを使って計算されたメルスペクトログラムが返される:

特性と関係  (1)

Audioオブジェクトを作る:

メルスペクトログラムのNetEncoderを作る:

結果の長さはCeiling[length/offset]として計算される.length はリサンプリング後の信号の長さで,offset はエンコーダの"Offset"パラメータである: