project:htsengineapi
hts_engine API
Open JTalk のバックエンド。
http://sourceforge.net/projects/hts-engine/
- 2011-12-25 に 1.06 がリリースされた。(Open JTalk 1.05 と同時)
- lib/HTS_audio.c で #ifdef AUDIO_PLAY_NONE の処理が追加されている。
- 2011-07-07 に 1.05 がリリースされた。(Open JTalk 1.04 と同時)
- 1.05 から PortAudio での出力に対応している。
nvdajp で使っているバージョンはこちら:
- NVDA は JTalk のオーディオ出力を HTS engine に依存していないので、オーディオ出力部分をコメントアウトしている。
変更記録
- 2011-10-15 バージョン 1.05 を import した。
- Makefile.mak.noaudio を追加
NVDA版パッチ
since 2012-07-12
HTS_engine_API 1.06 ベースで作業中。これを導入するときには JTalk のドライバも変更が必要(HTS_Audioのサイズが0でなくなる):
*** hts_org/include/HTS_engine.h 2011-12-20 13:16:05.000000000 +0900 --- htsengineapi/include/HTS_engine.h 2012-07-12 17:04:19.000000000 +0900 *************** *** 95,100 **** --- 95,101 ---- /* -------------------------- audio ------------------------------ */ + #if 0 #if !defined(AUDIO_PLAY_WINCE) && !defined(AUDIO_PLAY_WIN32) && !defined(AUDIO_PLAY_PORTAUDIO) && !defined(AUDIO_PLAY_NONE) #if defined(__WINCE__) || defined(_WINCE) || defined(_WINCE) || defined(__WINCE) #define AUDIO_PLAY_WINCE *************** *** 104,109 **** --- 105,113 ---- #define AUDIO_PLAY_NONE #endif /* WINCE || WIN32 */ #endif /* !AUDIO_PLAY_WINCE && !AUDIO_PLAY_WIN32 && !AUDIO_PLAY_PORTAUDIO && !AUDIO_PLAY_NONE */ + #else + #define AUDIO_PLAY_NONE + #endif /* HTS_Audio: audio output for Windows */ #if defined (AUDIO_PLAY_WIN32) || defined(AUDIO_PLAY_WINCE) *************** *** 141,147 **** /* HTS_Audio: dummy audio output */ #ifdef AUDIO_PLAY_NONE typedef struct _HTS_Audio { ! int i; /* make compiler happy */ } HTS_Audio; #endif /* AUDIO_PLAY_NONE */ --- 145,151 ---- /* HTS_Audio: dummy audio output */ #ifdef AUDIO_PLAY_NONE typedef struct _HTS_Audio { ! void *p /* int i */; /* make compiler happy */ } HTS_Audio; #endif /* AUDIO_PLAY_NONE */ *************** *** 572,578 **** void HTS_GStreamSet_initialize(HTS_GStreamSet * gss); /* HTS_GStreamSet_create: generate speech */ ! HTS_Boolean HTS_GStreamSet_create(HTS_GStreamSet * gss, HTS_PStreamSet * pss, int stage, HTS_Boolean use_log_gain, int sampling_rate, int fperiod, double alpha, double beta, HTS_Boolean * stop, double volume, HTS_Audio * audio); /* HTS_GStreamSet_get_total_nsample: get total number of sample */ int HTS_GStreamSet_get_total_nsample(HTS_GStreamSet * gss); --- 576,582 ---- void HTS_GStreamSet_initialize(HTS_GStreamSet * gss); /* HTS_GStreamSet_create: generate speech */ ! HTS_Boolean HTS_GStreamSet_create(HTS_GStreamSet * gss, HTS_PStreamSet * pss, int stage, HTS_Boolean use_log_gain, int sampling_rate, int fperiod, double alpha, double beta, HTS_Boolean * stop, double volume, HTS_Audio * audio, double lf0_offset, double lf0_amp); /* HTS_GStreamSet_get_total_nsample: get total number of sample */ int HTS_GStreamSet_get_total_nsample(HTS_GStreamSet * gss); *************** *** 621,626 **** --- 625,632 ---- HTS_SStreamSet sss; /* set of state streams */ HTS_PStreamSet pss; /* set of PDF streams */ HTS_GStreamSet gss; /* set of generated parameter streams */ + double lf0_offset; /* lf0 offset */ + double lf0_amp; /* lf0 amp */ } HTS_Engine; /* ----------------------- engine method ------------------------- */ *************** *** 763,768 **** --- 769,777 ---- /* HTS_Engine_clear: free engine */ void HTS_Engine_clear(HTS_Engine * engine); + /* HTS_Engine_set_lf0_offset: set lf0 offset */ + void HTS_Engine_set_lf0_offset_amp(HTS_Engine * engine, double offset, double amp); + /* -------------------------- vocoder ---------------------------- */ /* HTS_Vocoder: structure for setting of vocoder */
*** hts_org/lib/HTS_engine.c 2011-12-20 11:11:29.000000000 +0900 --- htsengineapi/lib/HTS_engine.c 2012-07-12 17:01:37.000000000 +0900 *************** *** 472,478 **** /* HTS_Engine_create_gstream: synthesis speech */ HTS_Boolean HTS_Engine_create_gstream(HTS_Engine * engine) { ! return HTS_GStreamSet_create(&engine->gss, &engine->pss, engine->global.stage, engine->global.use_log_gain, engine->global.sampling_rate, engine->global.fperiod, engine->global.alpha, engine->global.beta, &engine->global.stop, engine->global.volume, engine->global.audio_buff_size > 0 ? &engine->audio : NULL); } /* HTS_Engine_save_information: output trace information */ --- 472,479 ---- /* HTS_Engine_create_gstream: synthesis speech */ HTS_Boolean HTS_Engine_create_gstream(HTS_Engine * engine) { ! return HTS_GStreamSet_create(&engine->gss, &engine->pss, engine->global.stage, engine->global.use_log_gain, engine->global.sampling_rate, engine->global.fperiod, engine->global.alpha, engine->global.beta, &engine->global.stop, engine->global.volume, engine->global.audio_buff_size > 0 ? &engine->audio : NULL, engine->lf0_offset, engine->lf0_amp); } /* HTS_Engine_save_information: output trace information */ *************** *** 759,764 **** --- 760,771 ---- return; } + /* HTS_Engine_set_lf0_offset: set lf0 offset */ + void HTS_Engine_set_lf0_offset_amp(HTS_Engine * engine, double offset, double amp) + { + engine->lf0_offset = offset; + engine->lf0_amp = amp; + } HTS_ENGINE_C_END; #endif /* !HTS_ENGINE_C */
project/htsengineapi.txt · 最終更新: 2012/07/12 17:49 by Takuya Nishimoto