ailia  1.4.0.0
公開メンバ関数 | 静的公開変数類 | 全メンバ一覧
ailiaAudio.AiliaAudio クラス

公開メンバ関数

static int ailiaAudioLog1p (float[] dst, float[] src, int src_n)
 入力値を対数スケールに変換します。 [詳解]
 
static int ailiaAudioConvertPowerToDB (float[] dst, float[] src, int src_n, float top_db)
 非負の入力値をデシベルスケールに変換します。 [詳解]
 
static int ailiaAudioGetFrameLen (ref Int32 frame_n, int sample_n, int fft_n, int hop_n, int center)
 STFTで生成される時間フレーム長を取得します。 [詳解]
 
static int ailiaAudioGetSampleLen (ref Int32 sample_n, int frame_n, int freq_n, int hop_n, int center)
 ISTFTで生成されるサンプル数を取得します。 [詳解]
 
static int ailiaAudioGetWindow (float[] dst, int window_n, int win_type)
 窓関数の係数を取得します。 [詳解]
 
static int ailiaAudioFFT (float[] dst, float[] src, int fft_n)
 FFTを実行します。 [詳解]
 
static int ailiaAudioIFFT (float[] dst, float[] src, int fft_n)
 IFFTを実行します。 [詳解]
 
static int ailiaAudioGetSpectrogram (float[] dst, float[] src, int sample_n, int fft_n, int hop_n, int win_n, int win_type, int max_frame_n, int center, float power, int norm_type)
 音響信号からスペクトログラムを生成します。 [詳解]
 
static int ailiaAudioGetInverseSpectrogram (float[] dst, float[] src, int frame_n, int freq_n, int hop_n, int win_n, int win_type, int max_sample_n, int center, int norm_type)
 複素スペクトログラムから音響信号を生成します。 [詳解]
 
static int ailiaAudioGetFBMatrix (float[] dst, int freq_n, float f_min, float f_max, int mel_n, int sample_rate, int mel_norm, int mel_formula)
 メルフィルタバンクの係数を計算します。 [詳解]
 
static int ailiaAudioGetMelSpectrogram (float[] dst, float[] src, int sample_n, int sample_rate, int fft_n, int hop_n, int win_n, int win_type, int max_frame_n, int center, float power, int fft_norm_type, float f_min, float f_max, int mel_n, int mel_norm_type, int mel_formula)
 音響信号からメルスペクトログラムを生成します。 [詳解]
 
static int ailiaAudioMagPhase (float[] dst_mag, float[] dst_phase, float[] src, int freq_n, int frame_n, float power, int phase_form)
 スペクトログラムから振幅と位相を計算します。 [詳解]
 
static int ailiaAudioStandardize (float[] dst, float[] src, int src_n)
 実数の信号に対して標準化を実行します。 [詳解]
 
static int ailiaAudioComplexNorm (float[] dst, float[] src, int src_n, float power)
 複素数のノルムを算出します [詳解]
 
static int ailiaAudioConvertToMel (float[] dst, float[] src, float[] fb_mtrx, int freq_n, int frame_n, int mel_n)
 実数STFT結果をメル尺度に変換する [詳解]
 
static int ailiaAudioFixFrameLen (float[] dst, float[] src, int freq_n, int dst_frame_n, int src_frame_n, float pad_data)
 実数スペクトログラム/メルスペクトログラムの時間フレーム数を調整します。 [詳解]
 
static int ailiaAudioResample (float[] dst, float[] src, int dst_sample_rate, int dst_n, int src_sample_rate, int src_n)
 信号をリサンプルします [詳解]
 
static int ailiaAudioGetResampleLen (ref Int32 dst_sample_n, int dst_sample_rate, int src_sample_n, int src_sample_rate)
 リサンプル後のサンプル数を計算します [詳解]
 
static int ailiaAudioLinerFilter (float[] dst, float[] src, float[] n_coef, float[] d_coef, float[] zi, int dst_n, int src_n, int n_coef_n, int d_coef_n, int zi_n)
 信号にフィルタ処理を適用します [詳解]
 
static int ailiaAudioGetLinerFilterZiCoef (float[] dst_zi, float[] n_coef, float[] d_coef, int dst_n, int n_coef_n, int d_coef_n)
 フィルタ処理用の初期遅延係数を算出します [詳解]
 
static int ailiaAudioFilterFilter (float[] dst, float[] src, float[] n_coef, float[] d_coef, int dst_n, int src_n, int n_coef_n, int d_coef_n, int pad_type, int pad_len)
 信号にゼロ位相フィルタ処理を適用します [詳解]
 
static int ailiaAudioGetNonSilentPos (ref Int32 dst_start_pos, ref Int32 dst_length, float[] src, int sample_n, int win_n, int hop_n, float thr_db)
 信号の入力前後の無音域を除いた領域を検出します [詳解]
 

静的公開変数類

const Int32 AILIA_AUDIO_WIN_TYPE_HANN = (1)
 
const Int32 AILIA_AUDIO_WIN_TYPE_HAMMING = (2)
 
const Int32 AILIA_AUDIO_STFT_CENTER_NONE = (0)
 
const Int32 AILIA_AUDIO_STFT_CENTER_ENABLE = (1)
 
const Int32 AILIA_AUDIO_STFT_CENTER_SCIPY_DEFAULT = (2)
 
const Int32 AILIA_AUDIO_FFT_NORMALIZE_NONE = (0)
 
const Int32 AILIA_AUDIO_FFT_NORMALIZE_LIBROSA_COMPAT = (1)
 
const Int32 AILIA_AUDIO_FFT_NORMALIZE_PYTORCH_COMPAT = (1)
 
const Int32 AILIA_AUDIO_FFT_NORMALIZE_SCIPY_COMPAT = (2)
 
const Int32 AILIA_AUDIO_MEL_NORMALIZE_NONE = (0)
 
const Int32 AILIA_AUDIO_MEL_NORMALIZE_ENABLE = (1)
 
const Int32 AILIA_AUDIO_MEL_SCALE_FORMULA_HTK = (1)
 
const Int32 AILIA_AUDIO_MEL_SCALE_FORMULA_SLANYE = (0)
 
const Int32 AILIA_AUDIO_PHASE_FORM_COMPLEX = (1)
 
const Int32 AILIA_AUDIO_PHASE_FORM_REAL = (0)
 
const Int32 AILIA_AUDIO_FILTFILT_PAD_NONE = (0)
 
const Int32 AILIA_AUDIO_FILTFILT_PAD_ODD = (1)
 
const Int32 AILIA_AUDIO_FILTFILT_PAD_EVEN = (2)
 
const Int32 AILIA_AUDIO_FILTFILT_PAD_CONSTANT = (3)
 
const String LIBRARY_NAME = "ailia_audio"
 

関数詳解

◆ ailiaAudioComplexNorm()

static int ailiaAudio.AiliaAudio.ailiaAudioComplexNorm ( float[]  dst,
float[]  src,
int  src_n,
float  power 
)

複素数のノルムを算出します

引数
dst出力データのポインタ、float 型、要素数 src_n
src入力データのポインタ、float 型、外側から src_n, 2(実部、虚部) 順のメモリレイアウト
src_n入力データの要素数
power累乗値( > 0.0 )、1.0で複素数絶対値に相当
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

入力データのノルムを算出します src_cmp = src[0] + src[1] i において tmp_dst = pow(src[0],2.0) + pow(src[1],2.0) dst[0] = pow(tmp_dst,0.5*power);

◆ ailiaAudioConvertPowerToDB()

static int ailiaAudio.AiliaAudio.ailiaAudioConvertPowerToDB ( float[]  dst,
float[]  src,
int  src_n,
float  top_db 
)

非負の入力値をデシベルスケールに変換します。

引数
dst出力データポインタ、float 型、長さ src_n
src入力データポインタ、float 型、要素数 src_n
src_n計算対象の要素数
top_db出力の最大値から出力下限の閾値までを定める値 (>= 0.0)、負数の場合は処理は閾値を設定しない
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

librosa.power_to_dbと互換性があります。

◆ ailiaAudioConvertToMel()

static int ailiaAudio.AiliaAudio.ailiaAudioConvertToMel ( float[]  dst,
float[]  src,
float[]  fb_mtrx,
int  freq_n,
int  frame_n,
int  mel_n 
)

実数STFT結果をメル尺度に変換する

引数
dst出力データのポインタ、float 型、外側から mel_n, frame_n 順のメモリレイアウト
src入力データのポインタ、float 型、外側から freq_n, frame_n 順のメモリレイアウト
fb_mtrxメルフィルタバンク、float 型、外側から mel_n, freq_n 順のメモリレイアウト
freq_n周波数のインデックス数
frame_n入力データの時間フレームの数
mel_nメル周波数のインデックス数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

入力された実数スペクトログラムをメル尺度に変換します fb_mtrxには ailiaAudioGetFBMatrix() で取得した係数を与える事が出来ます

◆ ailiaAudioFFT()

static int ailiaAudio.AiliaAudio.ailiaAudioFFT ( float[]  dst,
float[]  src,
int  fft_n 
)

FFTを実行します。

引数
dst出力データのポインタ、float 型、外側から fft_n, 2(実部、虚部) 順のメモリレイアウト
src入力データのポインタ、float 型、要素数 fft_n
fft_nFFT点数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

FFT点数が2の累乗の場合、高速アルゴリズムで動作します。 出力データは実部と虚部の交互信号であり、長さは fft_n*2 です。

◆ ailiaAudioFilterFilter()

static int ailiaAudio.AiliaAudio.ailiaAudioFilterFilter ( float[]  dst,
float[]  src,
float[]  n_coef,
float[]  d_coef,
int  dst_n,
int  src_n,
int  n_coef_n,
int  d_coef_n,
int  pad_type,
int  pad_len 
)

信号にゼロ位相フィルタ処理を適用します

引数
dst出力データのポインタ、float 型、要素数 dst_n
src入力データのポインタ、float 型、要素数 src_n
n_coefフィルタ分子係数のポインタ、float 型、要素数 n_coef_n
d_coefフィルタ分母係数のポインタ、float 型、要素数 d_coef_n
dst_nデータ出力先の確保要素数(dst_n >= src_n)
src_n入力データの要素数
n_coef_nフィルタ分子係数の要素数
d_coef_nフィルタ分母係数の要素数
pad_type入力信号に対する両端パディング処理方法、 AILIA_AUDIO_FILTFILT_PAD_* のいずれか
pad_len入力信号に対する両端パディング数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

dstへの出力数はmin(dst_m,src_n)となります。 n_coef_nとd_coef_nは大きいほうを基準とし、不足分は0でパディングします。

◆ ailiaAudioFixFrameLen()

static int ailiaAudio.AiliaAudio.ailiaAudioFixFrameLen ( float[]  dst,
float[]  src,
int  freq_n,
int  dst_frame_n,
int  src_frame_n,
float  pad_data 
)

実数スペクトログラム/メルスペクトログラムの時間フレーム数を調整します。

引数
dst出力データのポインタ、freq_n, dst_frame_n 順のメモリレイアウト
src入力データのポインタ、freq_n, src_frame_n 順のメモリレイアウト
freq_n周波数のインデックス数
dst_frame_n出力データの時間フレームの数
src_frame_n入力データの時間フレームの数
pad_dataパディング(dst_frame_n > src_frame_n の場合に使用)
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

dst_frame_n > src_frame_n : 不足する時間フレームのデータを pad_data のデータで埋める。 dst_frame_n <= src_frame_n : 先頭から dst_frame_n のデータのみを切り出す。

◆ ailiaAudioGetFBMatrix()

static int ailiaAudio.AiliaAudio.ailiaAudioGetFBMatrix ( float[]  dst,
int  freq_n,
float  f_min,
float  f_max,
int  mel_n,
int  sample_rate,
int  mel_norm,
int  mel_formula 
)

メルフィルタバンクの係数を計算します。

引数
dst出力データのポインタ、float 型、外側から mel_n, freq_n 順のメモリレイアウト
freq_n周波数のインデックス数
f_min周波数の最小値
f_max周波数の最大値
mel_nメル周波数のインデックス数( < freq_n)
sample_rateサンプリング周波数
mel_norm出力される係数の正規化の有無、AILIA_AUDIO_MEL_NORMALIZE_* のいずれか
mel_formulaMEL尺度の形式、AILIA_AUDIO_MEL_SCALE_FORMULA_* のいずれか
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaAudioGetFrameLen()

static int ailiaAudio.AiliaAudio.ailiaAudioGetFrameLen ( ref Int32  frame_n,
int  sample_n,
int  fft_n,
int  hop_n,
int  center 
)

STFTで生成される時間フレーム長を取得します。

引数
frame_nフレーム長出力先ポインタ
sample_nSTFTを適用するサンプル数
fft_nFFT点数
hop_n窓のシフト数
centerAILIA_AUDIO_STFT_CENTER_* のいずれか
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

STFT実行前のバッファサイズの決定に使用します。 AILIA_AUDIO_STFT_CENTER_NONE の場合 hop_n ずつ区切り、sample_n の前後に padding を行いません。 AILIA_AUDIO_STFT_CENTER_ENABLE の場合 sample_n の前後に fft_n/2 の padding(reflect) を行います。 AILIA_AUDIO_STFT_CENTER_SCIPY_DEFAULT の場合、sample_n の前後に fft_n/2 の padding(zero) を行い、hop_nの倍数になるようにpadding(zero)を行います

◆ ailiaAudioGetInverseSpectrogram()

static int ailiaAudio.AiliaAudio.ailiaAudioGetInverseSpectrogram ( float[]  dst,
float[]  src,
int  frame_n,
int  freq_n,
int  hop_n,
int  win_n,
int  win_type,
int  max_sample_n,
int  center,
int  norm_type 
)

複素スペクトログラムから音響信号を生成します。

引数
dst出力データのポインタ、float 型、要素数 sample_n
src入力データのポインタ、float 型、外側から freq_n, frame_n, 2(複素数: 実部, 虚部) 順のメモリレイアウト
frame_n入力データの時間フレーム数
freq_n周波数(fft_n/2+1)
hop_nフレームのシフト数
win_n窓関数の長さ
win_type窓関数の種類、AILIA_AUDIO_WIN_TYPE_* のいずれか
max_sample_n出力データのサンプル数の最大値
center入力データ生成時の前後へのパディングの有無、AILIA_AUDIO_STFT_CENTER_* のいずれか
norm_type入力データ生成時の正規化処理、AILIA_AUDIO_FFT_NORMALIZE_* のいずれか
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

時間フレームごとにIFFTを行い、最後に正規化処理を実行します。 複素スペクトログラムのみに対応しています。

◆ ailiaAudioGetLinerFilterZiCoef()

static int ailiaAudio.AiliaAudio.ailiaAudioGetLinerFilterZiCoef ( float[]  dst_zi,
float[]  n_coef,
float[]  d_coef,
int  dst_n,
int  n_coef_n,
int  d_coef_n 
)

フィルタ処理用の初期遅延係数を算出します

引数
dst_zi出力する初期遅延状態のポインタ、float 型、要素数 dst_n (dst_n >= max(n_coef_n,d_coef_n)-1)
n_coefフィルタ分子係数のポインタ、float 型、要素数 n_coef_n
d_coefフィルタ分母係数のポインタ、float 型、要素数 d_coef_n
dst_n出力先の確保要素数 (dst_n >= max(n_coef_n,d_coef_n)-1)
n_coef_nフィルタ分子係数の要素数
d_coef_nフィルタ分母係数の要素数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

一般に、得られた係数に入力信号の先頭を乗じたものを、初期遅延状態として ailiaAudioLinerFilter() に与えます。 dst_nはmax(n_coef_n,d_coef_n)-1が必要となります。 不足の場合は、確保分だけ出力します。 超える部分は、0で埋めます。 n_coef_nとd_coef_nは大きいほうを基準とし、不足分は0でパディングします。

◆ ailiaAudioGetMelSpectrogram()

static int ailiaAudio.AiliaAudio.ailiaAudioGetMelSpectrogram ( float[]  dst,
float[]  src,
int  sample_n,
int  sample_rate,
int  fft_n,
int  hop_n,
int  win_n,
int  win_type,
int  max_frame_n,
int  center,
float  power,
int  fft_norm_type,
float  f_min,
float  f_max,
int  mel_n,
int  mel_norm_type,
int  mel_formula 
)

音響信号からメルスペクトログラムを生成します。

引数
dst出力データのポインタ、float 型、外側から mel_n, frame_n 順のメモリレイアウト
src入力データのポインタ、float 型、モノラル PCM データ
sample_n入力データのサンプル数
sample_rateサンプリング周波数
fft_nFFT点数
hop_nフレームのシフト数
win_n1フレームに含むサンプル数
win_type窓関数の種類、AILIA_AUDIO_WIN_TYPE_* のいずれか
max_frame_n出力データの時間フレーム数の最大値
center入力データの前後へのパディングの有無、AILIA_AUDIO_STFT_CENTER_* のいずれか
powerスペクトログラムの乗数( > 0.0)1.0: 振幅スペクトログラム、2.0: パワースペクトログラム、その他: 任意の累乗値の出力に相当
fft_norm_typeFFT後の正規化処理、AILIA_AUDIO_FFT_NORMALIZE_* のいずれか
f_min周波数の最小値
f_max周波数の最大値
mel_nメル周波数のインデックス数( < freq_n)
mel_norm_typeMELスペクトログラムの正規化の有無、AILIA_AUDIO_MEL_NORMALIZE_* のいずれか
mel_formulaMEL尺度の形式、AILIA_AUDIO_MEL_SCALE_FORMULA_* のいずれか
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

時間フレームごとにFFT(STFT)→正規化処理→累乗(振幅・パワーに変換→メルフィルタバンクの係数取得→メル尺度への変換 の順で処理を実行します。 出力データは実数の信号であり、長さはmel_n*時間フレーム長です。

◆ ailiaAudioGetNonSilentPos()

static int ailiaAudio.AiliaAudio.ailiaAudioGetNonSilentPos ( ref Int32  dst_start_pos,
ref Int32  dst_length,
float[]  src,
int  sample_n,
int  win_n,
int  hop_n,
float  thr_db 
)

信号の入力前後の無音域を除いた領域を検出します

引数
dst_start_pos有音域の先頭サンプル位置出力先ポインタ、int 型
dst_length有音域の長さ出力先ポインタ、int 型
src入力データのポインタ、float 型、要素数 sample_n
sample_n入力データのサンプル数
win_n1フレームに含むサンプル数
hop_nフレームのシフト数
thr_db有音を判断するdB (thr_db > 0)
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

全域が無音の場合、*dst_start_pos = -1,*dst_length = 0となります。

◆ ailiaAudioGetResampleLen()

static int ailiaAudio.AiliaAudio.ailiaAudioGetResampleLen ( ref Int32  dst_sample_n,
int  dst_sample_rate,
int  src_sample_n,
int  src_sample_rate 
)

リサンプル後のサンプル数を計算します

引数
dst_sample_nリサンプル後サンプル数出力先ポインタ
dst_sample_rate変換後のサンプリングレート
src_sample_n入力データのサンプル数
src_sample_rate入力データのサンプリングレート
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

◆ ailiaAudioGetSampleLen()

static int ailiaAudio.AiliaAudio.ailiaAudioGetSampleLen ( ref Int32  sample_n,
int  frame_n,
int  freq_n,
int  hop_n,
int  center 
)

ISTFTで生成されるサンプル数を取得します。

引数
sample_nサンプル数出力先ポインタ
frame_nSTFTデータの時間フレーム長
fft_nFFT点数
hop_n窓のシフト数
centerAILIA_AUDIO_STFT_CENTER_* のいずれか
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

ISTFT実行前のバッファサイズの決定に使用します。 AILIA_AUDIO_STFT_CENTER_NONE の場合 前後の切り捨てを行いません。 AILIA_AUDIO_STFT_CENTER_NONE 以外の場合 前後の切り捨てを行います。

◆ ailiaAudioGetSpectrogram()

static int ailiaAudio.AiliaAudio.ailiaAudioGetSpectrogram ( float[]  dst,
float[]  src,
int  sample_n,
int  fft_n,
int  hop_n,
int  win_n,
int  win_type,
int  max_frame_n,
int  center,
float  power,
int  norm_type 
)

音響信号からスペクトログラムを生成します。

引数
dst出力データのポインタ、float 型、外側から freq_n, frame_n, 2(複素数: 実部, 虚部) 順のメモリレイアウト
src入力データのポインタ、float 型、要素数 sample_n
sample_n入力データのサンプル数
fft_nFFT点数
hop_nフレームのシフト数
win_n窓関数の長さ
win_type窓関数の種類、AILIA_AUDIO_WIN_TYPE_* のいずれか
max_frame_n出力データの時間フレーム数の最大値
center入力データの前後へのパディングの有無、AILIA_AUDIO_STFT_CENTER_* のいずれか
powerスペクトログラムの乗数(>= 0.0) 0.0: 複素スペクトログラム、1.0: 振幅スペクトログラム、2.0: パワースペクトログラム、その他: 任意の累乗値の出力に相当
norm_typeFFT後の正規化処理、AILIA_AUDIO_FFT_NORMALIZE_* のいずれか
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

時間フレームごとにFFT→正規化処理→累乗(振幅・パワーに変換)の順で処理を実行します。 出力データは実部と虚部の交互信号であり、長さは(fft_n/2+1)*時間フレーム長*2です。 powerが0.0以外の場合は虚部の値を全て0.0として出力します。

◆ ailiaAudioGetWindow()

static int ailiaAudio.AiliaAudio.ailiaAudioGetWindow ( float[]  dst,
int  window_n,
int  win_type 
)

窓関数の係数を取得します。

引数
dst出力データのポインタ、float 型、要素数 window_n
window_n窓の長さ(サンプル数)
win_type窓関数の種類、AILIA_AUDIO_WIN_TYPE_* のいずれか
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

窓関数はhann窓とhamming窓のみ対応しています。

◆ ailiaAudioIFFT()

static int ailiaAudio.AiliaAudio.ailiaAudioIFFT ( float[]  dst,
float[]  src,
int  fft_n 
)

IFFTを実行します。

引数
dst出力データのポインタ、float 型、外側から fft_n, 2(実部、虚部) 順のメモリレイアウト
src入力データのポインタ、float 型、外側から fft_n, 2(実部、虚部) 順のメモリレイアウト
fft_nFFT点数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

FFT点数が2の累乗の場合、高速アルゴリズムで動作します。 出力データは実部と虚部の交互信号であり、長さは fft_n*2 です。

◆ ailiaAudioLinerFilter()

static int ailiaAudio.AiliaAudio.ailiaAudioLinerFilter ( float[]  dst,
float[]  src,
float[]  n_coef,
float[]  d_coef,
float[]  zi,
int  dst_n,
int  src_n,
int  n_coef_n,
int  d_coef_n,
int  zi_n 
)

信号にフィルタ処理を適用します

引数
dst出力データのポインタ、float 型、要素数 dst_n
src入力データのポインタ、float 型、要素数 src_n
n_coefフィルタ分子係数のポインタ、float 型、要素数 n_coef_n
d_coefフィルタ分母係数のポインタ、float 型、要素数 d_coef_n
zi遅延状態のポインタ、float 型、要素数 zi_n (zi_n = max(n_coef_n,d_coef_n)-1)、nullptrを許容
dst_nデータ出力先の確保要素数(dst_n >= src_n)
src_n入力データの要素数
n_coef_nフィルタ分子係数の要素数
d_coef_nフィルタ分母係数の要素数
zi_n遅延状態の要素数 (zi_n >= max(n_coef_n,d_coef_n)-1)
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

dstへの出力数はmin(dst_m,src_n)となります。 ziへは初期遅延状態を渡します。処理後には最終遅延状態に上書きされます。 zi_nはmax(n_coef_n,d_coef_n)-1が必要となります。不足の場合、不足分は0でパディングし、最終遅延状態は返しません。 ziにnullptrを与えた場合は、初期遅延状態を0とします。最終遅延状態も返しません。zi_nは無視されます。 n_coef_nとd_coef_nは大きいほうを基準とし、不足分は0でパディングします。

◆ ailiaAudioLog1p()

static int ailiaAudio.AiliaAudio.ailiaAudioLog1p ( float[]  dst,
float[]  src,
int  src_n 
)

入力値を対数スケールに変換します。

引数
dst出力データポインタ、float 型、長さ src_n
src入力データポインタ、float 型、長さ src_n
src_n計算対象の要素数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

dst = log_e(1.0 + src) を計算します。

◆ ailiaAudioMagPhase()

static int ailiaAudio.AiliaAudio.ailiaAudioMagPhase ( float[]  dst_mag,
float[]  dst_phase,
float[]  src,
int  freq_n,
int  frame_n,
float  power,
int  phase_form 
)

スペクトログラムから振幅と位相を計算します。

引数
dst_mag振幅の出力先ポインタ、外側から freq_n, frame_n 順のメモリレイアウト
dst_phase位相の出力先ポインタ、外側から freq_n, frame_n, 2(実部、虚部) 順のメモリレイアウト
src入力データのポインタ、frame_n, freq_n, 2(実部、虚部) 順のメモリレイアウト
freq_n周波数のインデックス数
frame_n時間フレームの数
power振幅スペクトルの乗数 ( > 0.0)、1.0: 振幅スペクトログラム、2.0: パワースペクトログラムに相当
phase_form位相の出力形式、AILIA_AUDIO_PHASE_FORM_* のいずれか
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

librosaのデフォルト値と互換の条件: phase_form = AILIA_AUDIO_PHASE_FORM_COMPLEX , power = 1.0 PyTorchのデフォルト値と互換の条件: phase_form = AILIA_AUDIO_PHASE_FORM_REAL , power = 1.0 phase_formによってdst_phaseの出力が変わります。

◆ ailiaAudioResample()

static int ailiaAudio.AiliaAudio.ailiaAudioResample ( float[]  dst,
float[]  src,
int  dst_sample_rate,
int  dst_n,
int  src_sample_rate,
int  src_n 
)

信号をリサンプルします

引数
dst出力データのポインタ、float 型、要素数 dst_n
src入力データのポインタ、float 型、要素数 src_n
dst_sample_rate変換後のサンプリングレート
dst_nデータ出力先の確保要素数(dst_n >= max_resample_n)
src_sample_rate入力データのサンプリングレート
src_n入力データの要素数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

最大出力数max_resample_nは ailiaAudioGetResampleLen() で取得できます。 dst_n < max_resample_n : 先頭からdst_nに入る部分のみ出力 dst_n >= max_resample_n : 出力要素数はmax_resample_n

◆ ailiaAudioStandardize()

static int ailiaAudio.AiliaAudio.ailiaAudioStandardize ( float[]  dst,
float[]  src,
int  src_n 
)

実数の信号に対して標準化を実行します。

引数
dst出力データのポインタ、float 型、要素数 src_n
src入力データのポインタ、float 型、要素数 src_n
src_n入力データの要素数
戻り値
成功した場合は AILIA_STATUS_SUCCESS 、そうでなければエラーコードを返す。

入力データの平均0、分散1になるよう標準化を行う。 dst = (src - mean(src)) / std(src)

メンバ詳解

◆ AILIA_AUDIO_FFT_NORMALIZE_LIBROSA_COMPAT

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_FFT_NORMALIZE_LIBROSA_COMPAT = (1)
static

FFT の出力を librosa 互換で正規化する

◆ AILIA_AUDIO_FFT_NORMALIZE_NONE

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_FFT_NORMALIZE_NONE = (0)
static

FFT の出力を正規化しない

◆ AILIA_AUDIO_FFT_NORMALIZE_PYTORCH_COMPAT

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_FFT_NORMALIZE_PYTORCH_COMPAT = (1)
static

FFT の出力を PyTorch 互換で正規化する

◆ AILIA_AUDIO_FFT_NORMALIZE_SCIPY_COMPAT

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_FFT_NORMALIZE_SCIPY_COMPAT = (2)
static

FFT の出力を SciPy 互換で正規化する

◆ AILIA_AUDIO_FILTFILT_PAD_CONSTANT

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_FILTFILT_PAD_CONSTANT = (3)
static

ゼロ位相フィルタ処理の際、padding は端値

◆ AILIA_AUDIO_FILTFILT_PAD_EVEN

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_FILTFILT_PAD_EVEN = (2)
static

ゼロ位相フィルタ処理の際、padding はeven(reflect)

◆ AILIA_AUDIO_FILTFILT_PAD_NONE

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_FILTFILT_PAD_NONE = (0)
static

ゼロ位相フィルタ処理の際、padding をしない

◆ AILIA_AUDIO_FILTFILT_PAD_ODD

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_FILTFILT_PAD_ODD = (1)
static

ゼロ位相フィルタ処理の際、padding はodd

◆ AILIA_AUDIO_MEL_NORMALIZE_ENABLE

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_MEL_NORMALIZE_ENABLE = (1)
static

MEL スペクトログラムの出力を正規化する

◆ AILIA_AUDIO_MEL_NORMALIZE_NONE

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_MEL_NORMALIZE_NONE = (0)
static

MEL スペクトログラムの出力を正規化しない

◆ AILIA_AUDIO_MEL_SCALE_FORMULA_HTK

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_MEL_SCALE_FORMULA_HTK = (1)
static

MEL 尺度を HTK formula で求める (PyTorch 互換)

◆ AILIA_AUDIO_MEL_SCALE_FORMULA_SLANYE

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_MEL_SCALE_FORMULA_SLANYE = (0)
static

MEL 尺度を Slanye's formula で求める (librosa デフォルト互換)

◆ AILIA_AUDIO_PHASE_FORM_COMPLEX

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_PHASE_FORM_COMPLEX = (1)
static

位相を複素数形式で出力する (librosa デフォルト互換)

◆ AILIA_AUDIO_PHASE_FORM_REAL

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_PHASE_FORM_REAL = (0)
static

位相を実数形式で出力する (PyTorch デフォルト互換)

◆ AILIA_AUDIO_STFT_CENTER_ENABLE

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_STFT_CENTER_ENABLE = (1)
static

STFT の際、sample_n の前後に fft_n/2 の padding(reflect) を入れる

◆ AILIA_AUDIO_STFT_CENTER_NONE

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_STFT_CENTER_NONE = (0)
static

STFT の際、前後に padding を入れない

◆ AILIA_AUDIO_STFT_CENTER_SCIPY_DEFAULT

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_STFT_CENTER_SCIPY_DEFAULT = (2)
static

STFT の際、sample_n の前後に fft_n/2 の padding(zero) を入れ、さらにhop_n処理単位になるように後方padding(zero)で合わせる

◆ AILIA_AUDIO_WIN_TYPE_HAMMING

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_WIN_TYPE_HAMMING = (2)
static

窓関数に hamming 窓を使う

◆ AILIA_AUDIO_WIN_TYPE_HANN

const Int32 ailiaAudio.AiliaAudio.AILIA_AUDIO_WIN_TYPE_HANN = (1)
static

窓関数に hann 窓を使う

◆ LIBRARY_NAME

const String ailiaAudio.AiliaAudio.LIBRARY_NAME = "ailia_audio"
static

このクラス詳解は次のファイルから抽出されました: