ailia_voice  1.3.0.0
ailia_voice.h
[詳解]
1 
9 #ifndef INCLUDED_AILIA_VOICE
10 #define INCLUDED_AILIA_VOICE
11 
12 /* エラーコードと構造体 */
13 
14 #include "ailia.h"
15 #include "ailia_audio.h"
16 
17 /* 呼び出し規約 */
18 
19 #if defined(_WIN64) || defined(_M_X64) || defined(__amd64__) || defined(__x86_64__) || defined(__APPLE__) || \
20  defined(__ANDROID__) || defined(ANDROID) || defined(__linux__) || defined(NN_NINTENDO_SDK)
21 #define AILIA_API
22 #else
23 #define AILIA_API __stdcall
24 #endif
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 /****************************************************************
31  * 辞書定義
32  **/
33 
43 #define AILIA_VOICE_DICTIONARY_TYPE_OPEN_JTALK (0)
44 
54 #define AILIA_VOICE_DICTIONARY_TYPE_G2P_EN (1)
55 
56 /****************************************************************
57  * アルゴリズム定義
58  **/
59 
69 #define AILIA_VOICE_MODEL_TYPE_TACOTRON2 (0)
70 
80 #define AILIA_VOICE_MODEL_TYPE_GPT_SOVITS (1)
81 
91 #define AILIA_VOICE_CLEANER_TYPE_BASIC (0)
92 
102 #define AILIA_VOICE_CLEANER_TYPE_ENGLISH (1)
103 
104 /****************************************************************
105  * フラグ定義
106  **/
107 
117 #define AILIA_VOICE_FLAG_NONE (0)
118 
119 /****************************************************************
120  * G2Pの処理タイプ
121  **/
122 
132 #define AILIA_VOICE_G2P_TYPE_GPT_SOVITS_EN (1)
133 
143 #define AILIA_VOICE_G2P_TYPE_GPT_SOVITS_JA (2)
144 
145 #define AILIA_VOICE_TEXT_POST_PROCESS_APPEND_PUNCTUATION (2) // 互換性用
146 
147 /****************************************************************
148  * APIコールバック定義
149  **/
150 
151 //接続が必要なAPI
152 
153 #if defined(_WIN32) && !defined(_WIN64)
154  #define AILIA_VOICE_USER_API __stdcall
155 #else
156  #define AILIA_VOICE_USER_API
157 #endif
158 
159 // ailia.audio API
160 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_AUDIO_RESAMPLE)(void*, const void*, int, int, int, int);
162 
163 // ailia API
164 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_CREATE)(struct AILIANetwork **, int, int);
165 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_FILE_A)(struct AILIANetwork *, const char *);
166 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_FILE_W)(struct AILIANetwork *, const wchar_t *);
167 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_MEM)(struct AILIANetwork *, const void *, unsigned int);
168 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_SET_MEMORY_MODE)(struct AILIANetwork*, unsigned int);
169 typedef void(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_DESTROY)(struct AILIANetwork *);
170 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_UPDATE)(struct AILIANetwork *);
171 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_GET_BLOB_INDEX_BY_INPUT_INDEX)(struct AILIANetwork *, unsigned int *, unsigned int);
172 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_GET_BLOB_INDEX_BY_OUTPUT_INDEX)(struct AILIANetwork *, unsigned int *, unsigned int);
173 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_GET_BLOB_DATA)(struct AILIANetwork *, void*, unsigned int, unsigned int);
174 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_SET_INPUT_BLOB_DATA)(struct AILIANetwork *, const void*, unsigned int, unsigned int);
175 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_SET_INPUT_BLOB_SHAPE)(struct AILIANetwork *, const AILIAShape*, unsigned int, unsigned int);
176 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_GET_BLOB_SHAPE)(struct AILIANetwork *, AILIAShape*, unsigned int, unsigned int);
177 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_GET_INPUT_BLOB_COUNT)(struct AILIANetwork *, unsigned int *);
178 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_GET_OUTPUT_BLOB_COUNT)(struct AILIANetwork *, unsigned int *);
179 typedef const char*(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_GET_ERROR_DETAIL)(struct AILIANetwork *);
180 typedef int(AILIA_VOICE_USER_API* AILIA_VOICE_USER_API_AILIA_COPY_BLOB_DATA)(struct AILIANetwork* dst_net, unsigned int dst_blob_idx, struct AILIANetwork* src_net, unsigned int src_blob_idx);
181 
191 #define AILIA_VOICE_API_CALLBACK_VERSION (2)
192 
193 /* APIコールバック関数構造体 */
194 typedef struct _AILIAVoiceApiCallback {
215 
216 /****************************************************************
217  * ボイスオブジェクトのインスタンス
218  **/
219 
220 struct AILIAVoice;
221 
222 /****************************************************************
223  * Voice API
224  **/
225 
256 int AILIA_API ailiaVoiceCreate(struct AILIAVoice** net, int env_id, int num_thread, int memory_mode, int flags, AILIAVoiceApiCallback callback, int version);
257 
279 int AILIA_API ailiaVoiceSetUserDictionaryFileA(struct AILIAVoice* net, const char* dictionary_path, int dictionary_type);
280 
302 int AILIA_API ailiaVoiceSetUserDictionaryFileW(struct AILIAVoice* net, const wchar_t* dictionary_path, int dictionary_type);
303 
321 int AILIA_API ailiaVoiceOpenDictionaryFileA(struct AILIAVoice* net, const char* dictionary_path, int dictionary_type);
322 
340 int AILIA_API ailiaVoiceOpenDictionaryFileW(struct AILIAVoice* net, const wchar_t* dictionary_path, int dictionary_type);
341 
369 int AILIA_API ailiaVoiceOpenModelFileA(struct AILIAVoice* net, const char* encoder, const char* decoder1, const char* decoder2, const char* wave, const char* ssl, int model_type, int cleaner_type);
370 
398 int AILIA_API ailiaVoiceOpenModelFileW(struct AILIAVoice* net, const wchar_t* encoder, const wchar_t* decoder1, const wchar_t* decoder2, const wchar_t* wave, const wchar_t* ssl, int model_type, int cleaner_type);
399 
421 int AILIA_API ailiaVoiceGraphemeToPhoneme(struct AILIAVoice* net, const char *utf8, int g2p_type);
422 
442 int AILIA_API ailiaVoiceExtractFullContext(struct AILIAVoice* net, const char *utf8);
443 
459 int AILIA_API ailiaVoiceGetFeatureLength(struct AILIAVoice* net, unsigned int* len);
460 
482 int AILIA_API ailiaVoiceGetFeatures(struct AILIAVoice* net, char* features, unsigned int len);
483 
508 int AILIA_API ailiaVoiceSetReference(struct AILIAVoice* net, float* buf, unsigned int buf_size, unsigned int channels, unsigned int sampling_rate, const char *features);
509 
529 int AILIA_API ailiaVoiceInference(struct AILIAVoice* net, const char *utf8);
530 
550 int AILIA_API ailiaVoiceGetWaveInfo(struct AILIAVoice* net, unsigned int* samples, unsigned int* channels, unsigned int* sampling_rate);
551 
573 int AILIA_API ailiaVoiceGetWave(struct AILIAVoice* net, float* buf, unsigned int buf_size);
574 
584 void AILIA_API ailiaVoiceDestroy(struct AILIAVoice* net);
585 
605 const char* AILIA_API ailiaVoiceGetErrorDetail(struct AILIAVoice* net);
606 
607 #ifdef UNICODE
608 #define ailiaVoiceSetUserDictionaryFile ailiaVoiceSetUserDictionaryFileW
609 #define ailiaVoiceOpenDictionaryFile ailiaVoiceOpenDictionaryFileW
610 #define ailiaVoiceOpenModelFile ailiaVoiceOpenModelFileW
611 #else
612 #define ailiaVoiceSetUserDictionaryFile ailiaVoiceSetUserDictionaryFileA
613 #define ailiaVoiceOpenDictionaryFile ailiaVoiceOpenDictionaryFileW
614 #define ailiaVoiceOpenModelFile ailiaVoiceOpenModelFileW
615 #endif
616 
617 #ifdef __cplusplus
618 }
619 #endif
620 #endif /* !defined(INCLUDED_AILIA_Voice) */
AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_MEM
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_MEM)(struct AILIANetwork *, const void *, unsigned int)
Definition: ailia_voice.h:167
_AILIAVoiceApiCallback
Definition: ailia_voice.h:194
AILIA_VOICE_USER_API_AILIA_GET_ERROR_DETAIL
const typedef char *AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_GET_ERROR_DETAIL(struct AILIANetwork *)
_AILIAVoiceApiCallback::ailiaAudioResample
AILIA_VOICE_USER_API_AILIA_AUDIO_RESAMPLE ailiaAudioResample
Definition: ailia_voice.h:195
_AILIAVoiceApiCallback::ailiaAudioGetResampleLen
AILIA_VOICE_USER_API_AILIA_AUDIO_GET_RESAMPLE_LEN ailiaAudioGetResampleLen
Definition: ailia_voice.h:196
_AILIAVoiceApiCallback::ailiaGetBlobIndexByOutputIndex
AILIA_VOICE_USER_API_AILIA_GET_BLOB_INDEX_BY_OUTPUT_INDEX ailiaGetBlobIndexByOutputIndex
Definition: ailia_voice.h:205
ailiaVoiceGetErrorDetail
const char *AILIA_API ailiaVoiceGetErrorDetail(struct AILIAVoice *net)
エラーの詳細を返します
AILIA_VOICE_USER_API_AILIA_SET_INPUT_BLOB_SHAPE
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_SET_INPUT_BLOB_SHAPE)(struct AILIANetwork *, const AILIAShape *, unsigned int, unsigned int)
Definition: ailia_voice.h:175
ailiaVoiceDestroy
void AILIA_API ailiaVoiceDestroy(struct AILIAVoice *net)
ボイスオブジェクトを破棄します。
ailiaVoiceGetFeatures
int AILIA_API ailiaVoiceGetFeatures(struct AILIAVoice *net, char *features, unsigned int len)
フィーチャーを取得します。
ailiaVoiceOpenDictionaryFileA
int AILIA_API ailiaVoiceOpenDictionaryFileA(struct AILIAVoice *net, const char *dictionary_path, int dictionary_type)
辞書を指定します。(MBSC)
AILIA_VOICE_USER_API_AILIA_UPDATE
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_UPDATE)(struct AILIANetwork *)
Definition: ailia_voice.h:170
ailiaVoiceSetUserDictionaryFileA
int AILIA_API ailiaVoiceSetUserDictionaryFileA(struct AILIAVoice *net, const char *dictionary_path, int dictionary_type)
ユーザ辞書を指定します。(MBSC)
AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_FILE_W
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_FILE_W)(struct AILIANetwork *, const wchar_t *)
Definition: ailia_voice.h:166
ailiaVoiceGetFeatureLength
int AILIA_API ailiaVoiceGetFeatureLength(struct AILIAVoice *net, unsigned int *len)
フィーチャーの長さを取得します。(NULL文字含む)
ailiaVoiceGetWaveInfo
int AILIA_API ailiaVoiceGetWaveInfo(struct AILIAVoice *net, unsigned int *samples, unsigned int *channels, unsigned int *sampling_rate)
波形の情報を取得します。
AILIA_VOICE_USER_API
#define AILIA_VOICE_USER_API
Definition: ailia_voice.h:156
AILIA_VOICE_USER_API_AILIA_AUDIO_RESAMPLE
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_AUDIO_RESAMPLE)(void *, const void *, int, int, int, int)
Definition: ailia_voice.h:160
AILIA_VOICE_USER_API_AILIA_GET_BLOB_INDEX_BY_INPUT_INDEX
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_GET_BLOB_INDEX_BY_INPUT_INDEX)(struct AILIANetwork *, unsigned int *, unsigned int)
Definition: ailia_voice.h:171
ailiaVoiceSetUserDictionaryFileW
int AILIA_API ailiaVoiceSetUserDictionaryFileW(struct AILIAVoice *net, const wchar_t *dictionary_path, int dictionary_type)
ユーザ辞書を指定します。(UTF16)
ailiaVoiceOpenModelFileW
int AILIA_API ailiaVoiceOpenModelFileW(struct AILIAVoice *net, const wchar_t *encoder, const wchar_t *decoder1, const wchar_t *decoder2, const wchar_t *wave, const wchar_t *ssl, int model_type, int cleaner_type)
モデルを指定します。(UTF16)
AILIA_VOICE_USER_API_AILIA_GET_BLOB_DATA
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_GET_BLOB_DATA)(struct AILIANetwork *, void *, unsigned int, unsigned int)
Definition: ailia_voice.h:173
ailiaVoiceOpenDictionaryFileW
int AILIA_API ailiaVoiceOpenDictionaryFileW(struct AILIAVoice *net, const wchar_t *dictionary_path, int dictionary_type)
辞書を指定します。(UTF16)
AILIA_VOICE_USER_API_AILIA_GET_BLOB_INDEX_BY_OUTPUT_INDEX
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_GET_BLOB_INDEX_BY_OUTPUT_INDEX)(struct AILIANetwork *, unsigned int *, unsigned int)
Definition: ailia_voice.h:172
ailiaVoiceGraphemeToPhoneme
int AILIA_API ailiaVoiceGraphemeToPhoneme(struct AILIAVoice *net, const char *utf8, int g2p_type)
G2Pを行います。
ailiaVoiceInference
int AILIA_API ailiaVoiceInference(struct AILIAVoice *net, const char *utf8)
推論を行います。
_AILIAVoiceApiCallback::ailiaGetBlobIndexByInputIndex
AILIA_VOICE_USER_API_AILIA_GET_BLOB_INDEX_BY_INPUT_INDEX ailiaGetBlobIndexByInputIndex
Definition: ailia_voice.h:204
_AILIAVoiceApiCallback::ailiaUpdate
AILIA_VOICE_USER_API_AILIA_UPDATE ailiaUpdate
Definition: ailia_voice.h:203
_AILIAVoiceApiCallback::ailiaGetInputBlobCount
AILIA_VOICE_USER_API_AILIA_GET_INPUT_BLOB_COUNT ailiaGetInputBlobCount
Definition: ailia_voice.h:210
AILIA_API
#define AILIA_API
Definition: ailia_voice.h:23
_AILIAVoiceApiCallback::ailiaCopyBlobData
AILIA_VOICE_USER_API_AILIA_COPY_BLOB_DATA ailiaCopyBlobData
Definition: ailia_voice.h:213
_AILIAVoiceApiCallback::ailiaGetErrorDetail
AILIA_VOICE_USER_API_AILIA_GET_ERROR_DETAIL ailiaGetErrorDetail
Definition: ailia_voice.h:212
AILIA_VOICE_USER_API_AILIA_GET_OUTPUT_BLOB_COUNT
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_GET_OUTPUT_BLOB_COUNT)(struct AILIANetwork *, unsigned int *)
Definition: ailia_voice.h:178
_AILIAVoiceApiCallback::ailiaGetOutputBlobCount
AILIA_VOICE_USER_API_AILIA_GET_OUTPUT_BLOB_COUNT ailiaGetOutputBlobCount
Definition: ailia_voice.h:211
ailiaVoiceOpenModelFileA
int AILIA_API ailiaVoiceOpenModelFileA(struct AILIAVoice *net, const char *encoder, const char *decoder1, const char *decoder2, const char *wave, const char *ssl, int model_type, int cleaner_type)
モデルを指定します。(MBSC)
AILIA_VOICE_USER_API_AILIA_COPY_BLOB_DATA
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_COPY_BLOB_DATA)(struct AILIANetwork *dst_net, unsigned int dst_blob_idx, struct AILIANetwork *src_net, unsigned int src_blob_idx)
Definition: ailia_voice.h:180
AILIA_VOICE_USER_API_AILIA_SET_MEMORY_MODE
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_SET_MEMORY_MODE)(struct AILIANetwork *, unsigned int)
Definition: ailia_voice.h:168
_AILIAVoiceApiCallback::ailiaSetInputBlobShape
AILIA_VOICE_USER_API_AILIA_SET_INPUT_BLOB_SHAPE ailiaSetInputBlobShape
Definition: ailia_voice.h:208
ailiaVoiceExtractFullContext
int AILIA_API ailiaVoiceExtractFullContext(struct AILIAVoice *net, const char *utf8)
ExtractFullContextを行います。
AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_FILE_A
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_FILE_A)(struct AILIANetwork *, const char *)
Definition: ailia_voice.h:165
_AILIAVoiceApiCallback::ailiaOpenWeightFileW
AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_FILE_W ailiaOpenWeightFileW
Definition: ailia_voice.h:199
_AILIAVoiceApiCallback::ailiaSetMemoryMode
AILIA_VOICE_USER_API_AILIA_SET_MEMORY_MODE ailiaSetMemoryMode
Definition: ailia_voice.h:201
_AILIAVoiceApiCallback::ailiaOpenWeightMem
AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_MEM ailiaOpenWeightMem
Definition: ailia_voice.h:200
ailiaVoiceGetWave
int AILIA_API ailiaVoiceGetWave(struct AILIAVoice *net, float *buf, unsigned int buf_size)
波形を取得します。
AILIA_VOICE_USER_API_AILIA_SET_INPUT_BLOB_DATA
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_SET_INPUT_BLOB_DATA)(struct AILIANetwork *, const void *, unsigned int, unsigned int)
Definition: ailia_voice.h:174
ailiaVoiceCreate
int AILIA_API ailiaVoiceCreate(struct AILIAVoice **net, int env_id, int num_thread, int memory_mode, int flags, AILIAVoiceApiCallback callback, int version)
ボイスオブジェクトを作成します。
_AILIAVoiceApiCallback::ailiaCreate
AILIA_VOICE_USER_API_AILIA_CREATE ailiaCreate
Definition: ailia_voice.h:197
AILIA_VOICE_USER_API_AILIA_GET_INPUT_BLOB_COUNT
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_GET_INPUT_BLOB_COUNT)(struct AILIANetwork *, unsigned int *)
Definition: ailia_voice.h:177
AILIA_VOICE_USER_API_AILIA_GET_BLOB_SHAPE
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_GET_BLOB_SHAPE)(struct AILIANetwork *, AILIAShape *, unsigned int, unsigned int)
Definition: ailia_voice.h:176
ailiaVoiceSetReference
int AILIA_API ailiaVoiceSetReference(struct AILIAVoice *net, float *buf, unsigned int buf_size, unsigned int channels, unsigned int sampling_rate, const char *features)
0ショット音声合成のリファレンスとなる波形とテキストを設定します。
AILIA_VOICE_USER_API_AILIA_AUDIO_GET_RESAMPLE_LEN
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_AUDIO_GET_RESAMPLE_LEN)(int *, int, int, int)
Definition: ailia_voice.h:161
_AILIAVoiceApiCallback::ailiaDestroy
AILIA_VOICE_USER_API_AILIA_DESTROY ailiaDestroy
Definition: ailia_voice.h:202
_AILIAVoiceApiCallback::ailiaSetInputBlobData
AILIA_VOICE_USER_API_AILIA_SET_INPUT_BLOB_DATA ailiaSetInputBlobData
Definition: ailia_voice.h:207
_AILIAVoiceApiCallback::ailiaGetBlobData
AILIA_VOICE_USER_API_AILIA_GET_BLOB_DATA ailiaGetBlobData
Definition: ailia_voice.h:206
AILIAVoiceApiCallback
struct _AILIAVoiceApiCallback AILIAVoiceApiCallback
AILIA_VOICE_USER_API_AILIA_CREATE
int(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_CREATE)(struct AILIANetwork **, int, int)
Definition: ailia_voice.h:164
AILIA_VOICE_USER_API_AILIA_DESTROY
void(AILIA_VOICE_USER_API * AILIA_VOICE_USER_API_AILIA_DESTROY)(struct AILIANetwork *)
Definition: ailia_voice.h:169
_AILIAVoiceApiCallback::ailiaOpenWeightFileA
AILIA_VOICE_USER_API_AILIA_OPEN_WEIGHT_FILE_A ailiaOpenWeightFileA
Definition: ailia_voice.h:198
_AILIAVoiceApiCallback::ailiaGetBlobShape
AILIA_VOICE_USER_API_AILIA_GET_BLOB_SHAPE ailiaGetBlobShape
Definition: ailia_voice.h:209