ailia
1.5.0.0
|
音響信号処理用ライブラリ [詳解]
マクロ定義 | |
#define | AILIA_API |
#define | AILIA_AUDIO_WIN_TYPE_HANN (1) |
窓関数に hann 窓を使う [詳解] | |
#define | AILIA_AUDIO_WIN_TYPE_HAMMING (2) |
窓関数に hamming 窓を使う [詳解] | |
#define | AILIA_AUDIO_STFT_CENTER_NONE (0) |
STFT の際、前後に padding を入れない [詳解] | |
#define | AILIA_AUDIO_STFT_CENTER_ENABLE (1) |
STFT の際、sample_n の前後に fft_n/2 の padding(reflect) を入れる [詳解] | |
#define | AILIA_AUDIO_STFT_CENTER_SCIPY_DEFAULT (2) |
STFT の際、sample_n の前後に fft_n/2 の padding(zero) を入れ、さらにhop_n処理単位になるように後方padding(zero)で合わせる [詳解] | |
#define | AILIA_AUDIO_FFT_NORMALIZE_NONE (0) |
FFT の出力を正規化しない [詳解] | |
#define | AILIA_AUDIO_FFT_NORMALIZE_LIBROSA_COMPAT (1) |
FFT の出力を librosa 互換で正規化する [詳解] | |
#define | AILIA_AUDIO_FFT_NORMALIZE_PYTORCH_COMPAT (1) |
FFT の出力を PyTorch 互換で正規化する [詳解] | |
#define | AILIA_AUDIO_FFT_NORMALIZE_SCIPY_COMPAT (2) |
FFT の出力を SciPy 互換で正規化する [詳解] | |
#define | AILIA_AUDIO_MEL_NORMALIZE_NONE (0) |
MEL スペクトログラムの出力を正規化しない [詳解] | |
#define | AILIA_AUDIO_MEL_NORMALIZE_ENABLE (1) |
MEL スペクトログラムの出力を正規化する [詳解] | |
#define | AILIA_AUDIO_MEL_SCALE_FORMULA_HTK (1) |
MEL 尺度を HTK formula で求める (PyTorch 互換) [詳解] | |
#define | AILIA_AUDIO_MEL_SCALE_FORMULA_SLANYE (0) |
MEL 尺度を Slanye's formula で求める (librosa デフォルト互換) [詳解] | |
#define | AILIA_AUDIO_PHASE_FORM_COMPLEX (1) |
位相を複素数形式で出力する (librosa デフォルト互換) [詳解] | |
#define | AILIA_AUDIO_PHASE_FORM_REAL (0) |
位相を実数形式で出力する (PyTorch デフォルト互換) [詳解] | |
#define | AILIA_AUDIO_FILTFILT_PAD_NONE (0) |
ゼロ位相フィルタ処理の際、padding をしない [詳解] | |
#define | AILIA_AUDIO_FILTFILT_PAD_ODD (1) |
ゼロ位相フィルタ処理の際、padding はodd [詳解] | |
#define | AILIA_AUDIO_FILTFILT_PAD_EVEN (2) |
ゼロ位相フィルタ処理の際、padding はeven(reflect) [詳解] | |
#define | AILIA_AUDIO_FILTFILT_PAD_CONSTANT (3) |
ゼロ位相フィルタ処理の際、padding は端値 [詳解] | |
関数 | |
int AILIA_API | ailiaAudioLog1p (void *dst, const void *src, int src_n) |
入力値を対数スケールに変換します。 [詳解] | |
int AILIA_API | ailiaAudioConvertPowerToDB (void *dst, const void *src, int src_n, float top_db) |
非負の入力値をデシベルスケールに変換します。 [詳解] | |
int AILIA_API | ailiaAudioGetFrameLen (int *frame_n, int sample_n, int fft_n, int hop_n, int center) |
STFTで生成される時間フレーム長を取得します。 [詳解] | |
int AILIA_API | ailiaAudioGetSampleLen (int *sample_n, int frame_n, int freq_n, int hop_n, int center) |
ISTFTで生成されるサンプル数を取得します。 [詳解] | |
int AILIA_API | ailiaAudioGetWindow (void *dst, int window_n, int win_type) |
窓関数の係数を取得します。 [詳解] | |
int AILIA_API | ailiaAudioFFT (void *dst, const void *src, int fft_n) |
FFTを実行します。 [詳解] | |
int AILIA_API | ailiaAudioIFFT (void *dst, const void *src, int fft_n) |
IFFTを実行します。 [詳解] | |
int AILIA_API | ailiaAudioGetSpectrogram (void *dst, const void *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) |
音響信号からスペクトログラムを生成します。 [詳解] | |
int AILIA_API | ailiaAudioGetInverseSpectrogram (void *dst, const void *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) |
複素スペクトログラムから音響信号を生成します。 [詳解] | |
int AILIA_API | ailiaAudioGetFBMatrix (void *dst, const int freq_n, float f_min, float f_max, int mel_n, int sample_rate, int mel_norm, int mel_formula) |
メルフィルタバンクの係数を計算します。 [詳解] | |
int AILIA_API | ailiaAudioGetMelSpectrogram (void *dst, const void *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) |
音響信号からメルスペクトログラムを生成します。 [詳解] | |
int AILIA_API | ailiaAudioMagPhase (void *dst_mag, void *dst_phase, const void *src, int freq_n, int frame_n, float power, int phase_form) |
スペクトログラムから振幅と位相を計算します。 [詳解] | |
int AILIA_API | ailiaAudioStandardize (void *dst, const void *src, const int src_n) |
実数の信号に対して標準化を実行します。 [詳解] | |
int AILIA_API | ailiaAudioComplexNorm (void *dst, const void *src, const int src_n, float power) |
複素数のノルムを算出します [詳解] | |
int AILIA_API | ailiaAudioConvertToMel (void *dst, const void *src, const void *fb_mtrx, int freq_n, int frame_n, int mel_n) |
実数STFT結果をメル尺度に変換する [詳解] | |
int AILIA_API | ailiaAudioFixFrameLen (void *dst, const void *src, int freq_n, int dst_frame_n, int src_frame_n, float pad_data) |
実数スペクトログラム/メルスペクトログラムの時間フレーム数を調整します。 [詳解] | |
int AILIA_API | ailiaAudioResample (void *dst, const void *src, int dst_sample_rate, int dst_n, int src_sample_rate, int src_n) |
信号をリサンプルします [詳解] | |
int AILIA_API | ailiaAudioGetResampleLen (int *dst_sample_n, int dst_sample_rate, int src_sample_n, int src_sample_rate) |
リサンプル後のサンプル数を計算します [詳解] | |
int AILIA_API | ailiaAudioLinerFilter (void *dst, const void *src, const void *n_coef, const void *d_coef, void *zi, int dst_n, int src_n, int n_coef_n, int d_coef_n, int zi_n) |
信号にフィルタ処理を適用します [詳解] | |
int AILIA_API | ailiaAudioGetLinerFilterZiCoef (void *dst_zi, const void *n_coef, const void *d_coef, int dst_n, int n_coef_n, int d_coef_n) |
フィルタ処理用の初期遅延係数を算出します [詳解] | |
int AILIA_API | ailiaAudioFilterFilter (void *dst, const void *src, const void *n_coef, const void *d_coef, int dst_n, int src_n, int n_coef_n, int d_coef_n, int pad_type, int pad_len) |
信号にゼロ位相フィルタ処理を適用します [詳解] | |
int AILIA_API | ailiaAudioGetNonSilentPos (int *dst_start_pos, int *dst_length, const void *src, int sample_n, int win_n, int hop_n, float thr_db) |
信号の入力前後の無音域を除いた領域を検出します [詳解] | |
音響信号処理用ライブラリ
#define AILIA_API |
#define AILIA_AUDIO_FFT_NORMALIZE_LIBROSA_COMPAT (1) |
FFT の出力を librosa 互換で正規化する
#define AILIA_AUDIO_FFT_NORMALIZE_NONE (0) |
FFT の出力を正規化しない
#define AILIA_AUDIO_FFT_NORMALIZE_PYTORCH_COMPAT (1) |
FFT の出力を PyTorch 互換で正規化する
#define AILIA_AUDIO_FFT_NORMALIZE_SCIPY_COMPAT (2) |
FFT の出力を SciPy 互換で正規化する
#define AILIA_AUDIO_FILTFILT_PAD_CONSTANT (3) |
ゼロ位相フィルタ処理の際、padding は端値
#define AILIA_AUDIO_FILTFILT_PAD_EVEN (2) |
ゼロ位相フィルタ処理の際、padding はeven(reflect)
#define AILIA_AUDIO_FILTFILT_PAD_NONE (0) |
ゼロ位相フィルタ処理の際、padding をしない
#define AILIA_AUDIO_FILTFILT_PAD_ODD (1) |
ゼロ位相フィルタ処理の際、padding はodd
#define AILIA_AUDIO_MEL_NORMALIZE_ENABLE (1) |
MEL スペクトログラムの出力を正規化する
#define AILIA_AUDIO_MEL_NORMALIZE_NONE (0) |
MEL スペクトログラムの出力を正規化しない
#define AILIA_AUDIO_MEL_SCALE_FORMULA_HTK (1) |
MEL 尺度を HTK formula で求める (PyTorch 互換)
#define AILIA_AUDIO_MEL_SCALE_FORMULA_SLANYE (0) |
MEL 尺度を Slanye's formula で求める (librosa デフォルト互換)
#define AILIA_AUDIO_PHASE_FORM_COMPLEX (1) |
位相を複素数形式で出力する (librosa デフォルト互換)
#define AILIA_AUDIO_PHASE_FORM_REAL (0) |
位相を実数形式で出力する (PyTorch デフォルト互換)
#define AILIA_AUDIO_STFT_CENTER_ENABLE (1) |
STFT の際、sample_n の前後に fft_n/2 の padding(reflect) を入れる
#define AILIA_AUDIO_STFT_CENTER_NONE (0) |
STFT の際、前後に padding を入れない
#define AILIA_AUDIO_STFT_CENTER_SCIPY_DEFAULT (2) |
STFT の際、sample_n の前後に fft_n/2 の padding(zero) を入れ、さらにhop_n処理単位になるように後方padding(zero)で合わせる
#define AILIA_AUDIO_WIN_TYPE_HAMMING (2) |
窓関数に hamming 窓を使う
#define AILIA_AUDIO_WIN_TYPE_HANN (1) |
窓関数に hann 窓を使う
int AILIA_API ailiaAudioComplexNorm | ( | void * | dst, |
const void * | src, | ||
const int | src_n, | ||
float | power | ||
) |
複素数のノルムを算出します
dst | 出力データのポインタ、float 型、要素数 src_n |
src | 入力データのポインタ、float 型、外側から src_n, 2(実部、虚部) 順のメモリレイアウト |
src_n | 入力データの要素数 |
power | 累乗値( > 0.0 )、1.0で複素数絶対値に相当 |
入力データのノルムを算出します 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);
int AILIA_API ailiaAudioConvertPowerToDB | ( | void * | dst, |
const void * | src, | ||
int | src_n, | ||
float | top_db | ||
) |
非負の入力値をデシベルスケールに変換します。
dst | 出力データポインタ、float 型、長さ src_n |
src | 入力データポインタ、float 型、要素数 src_n |
src_n | 計算対象の要素数 |
top_db | 出力の最大値から出力下限の閾値までを定める値 (>= 0.0)、負数の場合は処理は閾値を設定しない |
librosa.power_to_dbと互換性があります。
int AILIA_API ailiaAudioConvertToMel | ( | void * | dst, |
const void * | src, | ||
const void * | 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 | メル周波数のインデックス数 |
入力された実数スペクトログラムをメル尺度に変換します fb_mtrxには ailiaAudioGetFBMatrix() で取得した係数を与える事が出来ます
int AILIA_API ailiaAudioFFT | ( | void * | dst, |
const void * | src, | ||
int | fft_n | ||
) |
FFTを実行します。
dst | 出力データのポインタ、float 型、外側から fft_n, 2(実部、虚部) 順のメモリレイアウト |
src | 入力データのポインタ、float 型、要素数 fft_n |
fft_n | FFT点数 |
FFT点数が2の累乗の場合、高速アルゴリズムで動作します。 出力データは実部と虚部の交互信号であり、長さは fft_n*2 です。
int AILIA_API ailiaAudioFilterFilter | ( | void * | dst, |
const void * | src, | ||
const void * | n_coef, | ||
const void * | 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 | 入力信号に対する両端パディング数 |
dstへの出力数はmin(dst_m,src_n)となります。 n_coef_nとd_coef_nは大きいほうを基準とし、不足分は0でパディングします。
int AILIA_API ailiaAudioFixFrameLen | ( | void * | dst, |
const void * | 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 の場合に使用) |
dst_frame_n > src_frame_n : 不足する時間フレームのデータを pad_data のデータで埋める。 dst_frame_n <= src_frame_n : 先頭から dst_frame_n のデータのみを切り出す。
int AILIA_API ailiaAudioGetFBMatrix | ( | void * | dst, |
const 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_formula | MEL尺度の形式、AILIA_AUDIO_MEL_SCALE_FORMULA_* のいずれか |
int AILIA_API ailiaAudioGetFrameLen | ( | int * | frame_n, |
int | sample_n, | ||
int | fft_n, | ||
int | hop_n, | ||
int | center | ||
) |
STFTで生成される時間フレーム長を取得します。
frame_n | フレーム長出力先ポインタ |
sample_n | STFTを適用するサンプル数 |
fft_n | FFT点数 |
hop_n | 窓のシフト数 |
center | AILIA_AUDIO_STFT_CENTER_* のいずれか |
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)を行います
int AILIA_API ailiaAudioGetInverseSpectrogram | ( | void * | dst, |
const void * | 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_* のいずれか |
時間フレームごとにIFFTを行い、最後に正規化処理を実行します。 複素スペクトログラムのみに対応しています。
int AILIA_API ailiaAudioGetLinerFilterZiCoef | ( | void * | dst_zi, |
const void * | n_coef, | ||
const void * | 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 | フィルタ分母係数の要素数 |
一般に、得られた係数に入力信号の先頭を乗じたものを、初期遅延状態として ailiaAudioLinerFilter() に与えます。 dst_nはmax(n_coef_n,d_coef_n)-1が必要となります。 不足の場合は、確保分だけ出力します。 超える部分は、0で埋めます。 n_coef_nとd_coef_nは大きいほうを基準とし、不足分は0でパディングします。
int AILIA_API ailiaAudioGetMelSpectrogram | ( | void * | dst, |
const void * | 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_n | FFT点数 |
hop_n | フレームのシフト数 |
win_n | 1フレームに含むサンプル数 |
win_type | 窓関数の種類、AILIA_AUDIO_WIN_TYPE_* のいずれか |
max_frame_n | 出力データの時間フレーム数の最大値 |
center | 入力データの前後へのパディングの有無、AILIA_AUDIO_STFT_CENTER_* のいずれか |
power | スペクトログラムの乗数( > 0.0)1.0: 振幅スペクトログラム、2.0: パワースペクトログラム、その他: 任意の累乗値の出力に相当 |
fft_norm_type | FFT後の正規化処理、AILIA_AUDIO_FFT_NORMALIZE_* のいずれか |
f_min | 周波数の最小値 |
f_max | 周波数の最大値 |
mel_n | メル周波数のインデックス数( < freq_n) |
mel_norm_type | MELスペクトログラムの正規化の有無、AILIA_AUDIO_MEL_NORMALIZE_* のいずれか |
mel_formula | MEL尺度の形式、AILIA_AUDIO_MEL_SCALE_FORMULA_* のいずれか |
時間フレームごとにFFT(STFT)→正規化処理→累乗(振幅・パワーに変換→メルフィルタバンクの係数取得→メル尺度への変換 の順で処理を実行します。 出力データは実数の信号であり、長さはmel_n*時間フレーム長です。
int AILIA_API ailiaAudioGetNonSilentPos | ( | int * | dst_start_pos, |
int * | dst_length, | ||
const void * | 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_n | 1フレームに含むサンプル数 |
hop_n | フレームのシフト数 |
thr_db | 有音を判断するdB (thr_db > 0) |
全域が無音の場合、*dst_start_pos = -1,*dst_length = 0となります。
int AILIA_API ailiaAudioGetResampleLen | ( | int * | 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 | 入力データのサンプリングレート |
int AILIA_API ailiaAudioGetSampleLen | ( | int * | sample_n, |
int | frame_n, | ||
int | freq_n, | ||
int | hop_n, | ||
int | center | ||
) |
ISTFTで生成されるサンプル数を取得します。
sample_n | サンプル数出力先ポインタ |
frame_n | STFTデータの時間フレーム長 |
fft_n | FFT点数 |
hop_n | 窓のシフト数 |
center | AILIA_AUDIO_STFT_CENTER_* のいずれか |
ISTFT実行前のバッファサイズの決定に使用します。 AILIA_AUDIO_STFT_CENTER_NONE の場合 前後の切り捨てを行いません。 AILIA_AUDIO_STFT_CENTER_NONE 以外の場合 前後の切り捨てを行います。
int AILIA_API ailiaAudioGetSpectrogram | ( | void * | dst, |
const void * | 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_n | FFT点数 |
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_type | FFT後の正規化処理、AILIA_AUDIO_FFT_NORMALIZE_* のいずれか |
時間フレームごとにFFT→正規化処理→累乗(振幅・パワーに変換)の順で処理を実行します。 出力データは実部と虚部の交互信号であり、長さは(fft_n/2+1)*時間フレーム長*2です。 powerが0.0以外の場合は虚部の値を全て0.0として出力します。
int AILIA_API ailiaAudioGetWindow | ( | void * | dst, |
int | window_n, | ||
int | win_type | ||
) |
窓関数の係数を取得します。
dst | 出力データのポインタ、float 型、要素数 window_n |
window_n | 窓の長さ(サンプル数) |
win_type | 窓関数の種類、AILIA_AUDIO_WIN_TYPE_* のいずれか |
窓関数はhann窓とhamming窓のみ対応しています。
int AILIA_API ailiaAudioIFFT | ( | void * | dst, |
const void * | src, | ||
int | fft_n | ||
) |
IFFTを実行します。
dst | 出力データのポインタ、float 型、外側から fft_n, 2(実部、虚部) 順のメモリレイアウト |
src | 入力データのポインタ、float 型、外側から fft_n, 2(実部、虚部) 順のメモリレイアウト |
fft_n | FFT点数 |
FFT点数が2の累乗の場合、高速アルゴリズムで動作します。 出力データは実部と虚部の交互信号であり、長さは fft_n*2 です。
int AILIA_API ailiaAudioLinerFilter | ( | void * | dst, |
const void * | src, | ||
const void * | n_coef, | ||
const void * | d_coef, | ||
void * | 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) |
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でパディングします。
int AILIA_API ailiaAudioLog1p | ( | void * | dst, |
const void * | src, | ||
int | src_n | ||
) |
入力値を対数スケールに変換します。
dst | 出力データポインタ、float 型、長さ src_n |
src | 入力データポインタ、float 型、長さ src_n |
src_n | 計算対象の要素数 |
dst = log_e(1.0 + src) を計算します。
int AILIA_API ailiaAudioMagPhase | ( | void * | dst_mag, |
void * | dst_phase, | ||
const void * | 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_* のいずれか |
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の出力が変わります。
int AILIA_API ailiaAudioResample | ( | void * | dst, |
const void * | 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 | 入力データの要素数 |
最大出力数max_resample_nは ailiaAudioGetResampleLen() で取得できます。 dst_n < max_resample_n : 先頭からdst_nに入る部分のみ出力 dst_n >= max_resample_n : 出力要素数はmax_resample_n
int AILIA_API ailiaAudioStandardize | ( | void * | dst, |
const void * | src, | ||
const int | src_n | ||
) |
実数の信号に対して標準化を実行します。
dst | 出力データのポインタ、float 型、要素数 src_n |
src | 入力データのポインタ、float 型、要素数 src_n |
src_n | 入力データの要素数 |
入力データの平均0、分散1になるよう標準化を行う。 dst = (src - mean(src)) / std(src)