定義

命名規則

STRAIGHTライブラリが提供する関数や型は、以下のような命名規則に基づいています。

基本的な定義

stBool
ブール型。ST_TRUE(=1)もしくはST_FALSE(=0)の値を取る。
stCallbackType
コールバックの種類。代表的なコールバックと、そのときのコールバックデータは以下の通りです。
stCallbackFunc
コールバック関数の定義。コールバック関数は、以下のような形である必要がある。
stBool (*stCallbackFunc)(Straight straight, stCallbackType callbackType, void *callbackData, void *userData);

初期化関数用構造体

目的
STRAIGHTの処理において、初期化関数を呼び出す際の引数として用いられる 構造体。STRAIGHT処理におけるパラメータ等を設定することが可能となる。
データ型
型の定義は以下の通りです。
typedef struct _StraightConfig {
    unsigned long versionId;
    unsigned long defaultEngineVersionId;
    
    double samplingFrequency;
    double frameShift;
    double frameLength;
    
    double f0FrameShift;
    double f0Floor;
    double f0Ceil;
    
    long FFTLength;
} StraightConfig;

typedef struct _StraightSourceConfigV40 {
    unsigned long versionId;
    unsigned long engineVersionId;

    long numChannelsInOctave;	/* nvo */
    
    double windowStretchFactor;	/* mu */
    double smoothingLengthRelToFc; /* smp */
    double minimumSmoothingLength; /* minsm */
    double exponentForNonlinearSum; /* pcf0 */

    long numHarmonicsForInitialEstimate; /* nh */
} StraightSourceConfigV40;

#define StraightSourceConfig StraightSourceConfigV40

typedef struct _StraightSourceConfigTandemV008 {
    unsigned long versionId;
    unsigned long engineVersionId;

    long channelsPerOctave;
    long numberOfHarmonicsForExtraction;
    long numberOfHarmonicsForRefinement;

    double vuvThreshold;
} StraightSourceConfigTandemV008;

typedef struct _StraightSourceConfigTandemV009 {
    unsigned long versionId;
    unsigned long engineVersionId;

    long channelsPerOctave;
    long numberOfHarmonicsForExtraction;
    long numberOfHarmonicsForRefinement;

    double vuvThreshold;

    /*---- version 1.1.0 ----*/
    long numberOfF0Candidates;
} StraightSourceConfigTandemV009;

#define StraightSourceConfigTandem StraightSourceConfigTandemV009

typedef struct _StraightSpecgramConfigV40 {
    unsigned long versionId;
    unsigned long engineVersionId;

    stBool fastFlag;
    double timeWindowStretch; /* eta */
    double exponentForNonlinearity; /* pc */
    double timeDomainCompensation; /* mag */
} StraightSpecgramConfigV40;

#define StraightSpecgramConfig StraightSpecgramConfigV40

typedef struct _StraightSpecgramConfigTandemV008 {
    unsigned long versionId;
    unsigned long engineVersionId;

    double compensationCoefficient;
    double correctionForBlackman;
    stBool dcRemoval;
} StraightSpecgramConfigTandemV008;

typedef struct _StraightSpecgramConfigTandemMP002 {
    unsigned long versionId;
    unsigned long engineVersionId;

    double compensationCoefficient;
    double correctionForBlackman;
    stBool dcRemoval;

    /*---- version 1.1.0 ----*/
    double exponentControl;
    stBool akagiriSmoothing;
} StraightSpecgramConfigTandemMP002;

#define StraightSpecgramConfigTandem StraightSpecgramConfigTandemMP002

typedef struct _StraightSynthConfigV40 {
    unsigned long versionId;
    unsigned long engineVersionId;

    double lowestF0;
    
    stBool zeroPhaseFlag;

    stBool groupDelayRandomizeFlag;
    double groupDelayStandardDeviation;	/* delsp */
    double groupDelaySpatialBandWidth; /* gdbw */
    double groupDelayRandomizeCornerFrequency; /* cornf */

    stBool groupDelayRatioToT0Flag; /* delfracind */
    double groupDelayRatioToT0; /* delfrac */
} StraightSynthConfigV40;

#define StraightSynthConfig StraightSynthConfigV40

typedef struct _StraightSynthConfigTandemV009 {
    unsigned long versionId;
    unsigned long engineVersionId;

    double unvoicedF0;
    
    stBool zeroPhaseFlag;

    stBool groupDelayRandomizeFlag;
    double groupDelayStandardDeviation;	/* delsp */
    double groupDelaySpatialBandWidth; /* gdbw */
    double groupDelayRandomizeCornerFrequency; /* cornf */

    stBool groupDelayRatioToT0Flag; /* delfracind */
    double groupDelayRatioToT0; /* delfrac */
} StraightSynthConfigTandemV009;

#define StraightSynthConfigTandem StraightSynthConfigTandemV009
説明
StraightConfig型は、処理全体に関するもの、StraightSourceConfig型は、音源分析に関するもの、 StraightSpecgram型は、スペクトル分析に関するもの、StraightSynth型は、合成に関するものになります。

これらの構造体のメンバは、ライブラリのバージョンによって変化します。 特に、StraightConfig型以外の型は、STRAIGHTのMATLABの実装に応じて、大きく変更となることが予想されます。 このようなバージョンによる違いを吸収するため、 専用の初期化関数を呼び出す必要があります。 これにより、バージョンIDなどが適切に設定され、バージョンによる違いを吸収できるようになります。 ただし、この場合、バイナリレベルでの互換性はありますが、 ソースコードが将来的に互換性を持つとは限りません。 ソースコードの互換性も持たせるためには、バージョンIDが型の名前に含まれているもの (例えばStraightSpecgramConfigの代わりにStraightSpecgramConfigV40)を使用して下さい。 詳細はヘッダファイルを参照下さい。

関連する処理の初期化時にこれらの型(へのポインタ)を引数として与えると、 そのパラメータを利用して初期化が行われます。 なお、デフォルトのパラメータで処理を実行したい場合は、NULLを引数として与えれば良いため、 StraightConfig型以外の型を使用する機会はそれほど多くありません。

データ保持用データ型

目的
STRAIGHT分析合成で内部データの保持のために使われるデータ型
データ型
型の定義は以下の通りです。ただし、構造体の中身は隠蔽されています。
typedef struct _Straight *Straight;
typedef struct _StraightSource *StraightSource;
typedef struct _StraightSpecgram *StraightSpecgram;
typedef struct _StraightSynth *StraightSynth;
説明
Straight型は、処理全体に関するもの、StraightSource型は、音源分析に関するもの、 StraightSpecgram型は、スペクトル分析に関するもの、StraightSynth型は、合成に関するものになります。 関連する処理の初期化時にこれらの型が得られ、関連処理を行うにはこの型を引数 に渡して関数を呼び出します。処理を行わなくなったらこれらの型のメモリを解放する関数を呼び出します。

Last modified: "2013-04-08 17:43:26 hideki"