From 6744f421bf9297e6bcd5e7cc392c440e6a472362 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Queru Date: Thu, 12 Nov 2009 18:45:39 -0800 Subject: eclair snapshot --- pico/lang/en-US_lh0_sg.bin | Bin 793868 -> 793868 bytes pico/lang/en-US_ta.bin | Bin 651752 -> 651956 bytes pico/lib/picoacph.c | 9 +- pico/lib/picoapi.c | 10 +- pico/lib/picoapi.h | 5 +- pico/lib/picocep.c | 50 ++--- pico/lib/picoctrl.c | 8 +- pico/lib/picoctrl.h | 4 +- pico/lib/picodata.c | 2 +- pico/lib/picodata.h | 2 +- pico/lib/picodefs.h | 5 + pico/lib/picopam.c | 13 +- pico/lib/picopr.c | 13 +- pico/lib/picosa.c | 9 +- pico/lib/picosig.c | 63 +++--- pico/lib/picosig2.c | 21 +- pico/lib/picosig2.h | 2 +- pico/lib/picospho.c | 4 +- pico/lib/picotok.c | 8 +- pico/lib/picowa.c | 8 +- pico/tests/data/xsampa_pico_man_README.txt | 23 +++ pico/tests/data/xsampa_pico_man_de-DE.txt | 248 ++++++++++++++++++++++++ pico/tests/data/xsampa_pico_man_en-GB.txt | 192 ++++++++++++++++++ pico/tests/data/xsampa_pico_man_en-US.txt | 189 ++++++++++++++++++ pico/tests/data/xsampa_pico_man_es-ES.txt | 131 +++++++++++++ pico/tests/data/xsampa_pico_man_fr-FR.txt | 153 +++++++++++++++ pico/tests/data/xsampa_pico_man_it-IT.txt | 210 ++++++++++++++++++++ pico/tts/com_svox_picottsengine.cpp | 242 +++++++++++++++++++---- picolanginstaller/res/drawable/icon.png | Bin 1140 -> 3736 bytes picolanginstaller/res/values-cs/strings.xml | 2 +- picolanginstaller/res/values-da/strings.xml | 24 +++ picolanginstaller/res/values-de/strings.xml | 2 +- picolanginstaller/res/values-el/strings.xml | 24 +++ picolanginstaller/res/values-es-rUS/strings.xml | 24 +++ picolanginstaller/res/values-fr/strings.xml | 2 +- picolanginstaller/res/values-ja/strings.xml | 4 +- picolanginstaller/res/values-ko/strings.xml | 24 +++ picolanginstaller/res/values-nb/strings.xml | 24 +++ picolanginstaller/res/values-nl/strings.xml | 2 +- picolanginstaller/res/values-pl/strings.xml | 2 +- picolanginstaller/res/values-pt-rPT/strings.xml | 24 +++ picolanginstaller/res/values-pt/strings.xml | 24 +++ picolanginstaller/res/values-ru/strings.xml | 24 +++ picolanginstaller/res/values-sv/strings.xml | 24 +++ picolanginstaller/res/values-tr/strings.xml | 24 +++ picolanginstaller/res/values-zh-rCN/strings.xml | 24 +++ picolanginstaller/res/values-zh-rTW/strings.xml | 2 +- 47 files changed, 1776 insertions(+), 128 deletions(-) create mode 100644 pico/tests/data/xsampa_pico_man_README.txt create mode 100644 pico/tests/data/xsampa_pico_man_de-DE.txt create mode 100644 pico/tests/data/xsampa_pico_man_en-GB.txt create mode 100644 pico/tests/data/xsampa_pico_man_en-US.txt create mode 100644 pico/tests/data/xsampa_pico_man_es-ES.txt create mode 100644 pico/tests/data/xsampa_pico_man_fr-FR.txt create mode 100644 pico/tests/data/xsampa_pico_man_it-IT.txt mode change 100755 => 100644 picolanginstaller/res/drawable/icon.png create mode 100644 picolanginstaller/res/values-da/strings.xml create mode 100644 picolanginstaller/res/values-el/strings.xml create mode 100644 picolanginstaller/res/values-es-rUS/strings.xml create mode 100644 picolanginstaller/res/values-ko/strings.xml create mode 100644 picolanginstaller/res/values-nb/strings.xml create mode 100644 picolanginstaller/res/values-pt-rPT/strings.xml create mode 100644 picolanginstaller/res/values-pt/strings.xml create mode 100644 picolanginstaller/res/values-ru/strings.xml create mode 100644 picolanginstaller/res/values-sv/strings.xml create mode 100644 picolanginstaller/res/values-tr/strings.xml create mode 100644 picolanginstaller/res/values-zh-rCN/strings.xml diff --git a/pico/lang/en-US_lh0_sg.bin b/pico/lang/en-US_lh0_sg.bin index 69cd99b..18e4b7e 100755 Binary files a/pico/lang/en-US_lh0_sg.bin and b/pico/lang/en-US_lh0_sg.bin differ diff --git a/pico/lang/en-US_ta.bin b/pico/lang/en-US_ta.bin index cf02cdc..08c184c 100755 Binary files a/pico/lang/en-US_ta.bin and b/pico/lang/en-US_ta.bin differ diff --git a/pico/lib/picoacph.c b/pico/lib/picoacph.c index 98feb6e..c06e860 100644 --- a/pico/lib/picoacph.c +++ b/pico/lib/picoacph.c @@ -157,7 +157,7 @@ typedef struct acph_subobj { } acph_subobj_t; -static pico_status_t acphInitialize(register picodata_ProcessingUnit this) { +static pico_status_t acphInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { acph_subobj_t * acph; picoos_uint16 i; @@ -193,6 +193,11 @@ static pico_status_t acphInitialize(register picodata_ProcessingUnit this) { acph->cbuf[i] = 0; } + if (r_mode == PICO_RESET_SOFT) { + /*following initializations needed only at startup or after a full reset*/ + return PICO_OK; + } + /* kb tabphones */ acph->tabphones = picoktab_getPhones(this->voice->kbArray[PICOKNOW_KBID_TAB_PHONES]); @@ -310,7 +315,7 @@ picodata_ProcessingUnit picoacph_newAccPhrUnit(picoos_MemoryManager mm, return NULL; } - acphInitialize(this); + acphInitialize(this, PICO_RESET_FULL); return this; } diff --git a/pico/lib/picoapi.c b/pico/lib/picoapi.c index c4ef8bf..affd780 100644 --- a/pico/lib/picoapi.c +++ b/pico/lib/picoapi.c @@ -660,13 +660,15 @@ PICO_FUNC pico_getData( /** * pico_resetEngine : Resets the engine * @param engine : pointer to a Pico engine handle + * @param r_mode : reset mode * @return PICO_OK : successful * @return PICO_ERR_INVALID_HANDLE, PICO_ERR_NULLPTR_ACCESS : errors * @callgraph * @callergraph */ PICO_FUNC pico_resetEngine( - pico_Engine engine) + pico_Engine engine, + pico_Status r_mode) { pico_Status status = PICO_OK; @@ -674,7 +676,11 @@ PICO_FUNC pico_resetEngine( status = PICO_ERR_INVALID_HANDLE; } else { picoctrl_engResetExceptionManager((picoctrl_Engine) engine); - status = picoctrl_engReset((picoctrl_Engine) engine); + + if (r_modePICO_RESET_SOFT) r_mode = PICO_RESET_FULL; + + status = picoctrl_engReset((picoctrl_Engine) engine, (picoos_int32)r_mode); } return status; diff --git a/pico/lib/picoapi.h b/pico/lib/picoapi.h index 0dad702..8a5725b 100644 --- a/pico/lib/picoapi.h +++ b/pico/lib/picoapi.h @@ -422,8 +422,9 @@ PICO_FUNC pico_getData( particular text input and signal data output buffers. */ PICO_FUNC pico_resetEngine( - pico_Engine engine - ); + pico_Engine engine, + pico_Status r_mode +); /* Engine status and error/warning message retrieval ******************/ diff --git a/pico/lib/picocep.c b/pico/lib/picocep.c index 2510c13..bb80c3d 100644 --- a/pico/lib/picocep.c +++ b/pico/lib/picocep.c @@ -285,7 +285,7 @@ static picodata_step_result_t cepStep(register picodata_ProcessingUnit this, * @callgraph * @callergraph */ -static pico_status_t cepInitialize(register picodata_ProcessingUnit this) +static pico_status_t cepInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { /*pico_status_t nRes;*/ cep_subobj_t * cep; @@ -328,35 +328,37 @@ static pico_status_t cepInitialize(register picodata_ProcessingUnit this) ------------------------------------------------------------------*/ cep->activeEndPos = PICOCEP_MAXWINLEN; - /* kb pdflfz */ - cep->pdflfz = picokpdf_getPdfMUL( - this->voice->kbArray[PICOKNOW_KBID_PDF_LFZ]); + if (r_mode == PICO_RESET_FULL) { + /* kb pdflfz */ + cep->pdflfz = picokpdf_getPdfMUL( + this->voice->kbArray[PICOKNOW_KBID_PDF_LFZ]); - /* kb pdfmgc */ - cep->pdfmgc = picokpdf_getPdfMUL( - this->voice->kbArray[PICOKNOW_KBID_PDF_MGC]); + /* kb pdfmgc */ + cep->pdfmgc = picokpdf_getPdfMUL( + this->voice->kbArray[PICOKNOW_KBID_PDF_MGC]); - /* kb tab phones */ - /* cep->phones = - picoktab_getPhones(this->voice->kbArray[PICOKNOW_KBID_TAB_PHONES]); */ + /* kb tab phones */ + /* cep->phones = + picoktab_getPhones(this->voice->kbArray[PICOKNOW_KBID_TAB_PHONES]); */ - /*---------------------- other working variables ---------------------------*/ - /* define the (constant) FRAME_PAR item header */ - cep->framehead.type = PICODATA_ITEM_FRAME_PAR; - cep->framehead.info1 = PICOCEP_OUT_DATA_FORMAT; - cep->framehead.info2 = cep->pdfmgc->ceporder; - cep->framehead.len = sizeof(picoos_uint16) + (cep->framehead.info2 + 4) - * sizeof(picoos_uint16); + /*---------------------- other working variables ---------------------------*/ + /* define the (constant) FRAME_PAR item header */ + cep->framehead.type = PICODATA_ITEM_FRAME_PAR; + cep->framehead.info1 = PICOCEP_OUT_DATA_FORMAT; + cep->framehead.info2 = cep->pdfmgc->ceporder; + cep->framehead.len = sizeof(picoos_uint16) + (cep->framehead.info2 + 4) + * sizeof(picoos_uint16); + cep->scmeanpowLFZ = cep->pdflfz->bigpow - cep->pdflfz->meanpow; + cep->scmeanpowMGC = cep->pdfmgc->bigpow - cep->pdfmgc->meanpow; - /* constants used in makeWUWandWUm */ - initSmoothing(cep); + cep->scmeanLFZ = (1 << (picoos_uint32) cep->scmeanpowLFZ); - cep->scmeanpowLFZ = cep->pdflfz->bigpow - cep->pdflfz->meanpow; - cep->scmeanpowMGC = cep->pdfmgc->bigpow - cep->pdfmgc->meanpow; + cep->scmeanMGC = (1 << (picoos_uint32) cep->scmeanpowMGC); - cep->scmeanLFZ = (1 << (picoos_uint32) cep->scmeanpowLFZ); + } + /* constants used in makeWUWandWUm */ + initSmoothing(cep); - cep->scmeanMGC = (1 << (picoos_uint32) cep->scmeanpowMGC); return PICO_OK; }/*cepInitialize*/ @@ -461,7 +463,7 @@ picodata_ProcessingUnit picocep_newCepUnit(picoos_MemoryManager mm, picoos_deallocate(mm, (void*) &this); return NULL; } - cepInitialize(this); + cepInitialize(this, PICO_RESET_FULL); return this; }/*picocep_newCepUnit*/ diff --git a/pico/lib/picoctrl.c b/pico/lib/picoctrl.c index 5af70e3..25550f2 100644 --- a/pico/lib/picoctrl.c +++ b/pico/lib/picoctrl.c @@ -90,7 +90,7 @@ typedef struct ctrl_subobj { * @callgraph * @callergraph */ -static pico_status_t ctrlInitialize(register picodata_ProcessingUnit this) { +static pico_status_t ctrlInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { register ctrl_subobj_t * ctrl; pico_status_t status= PICO_OK; picoos_int8 i; @@ -104,7 +104,7 @@ static pico_status_t ctrlInitialize(register picodata_ProcessingUnit this) { status = PICO_OK; for (i = 0; i < ctrl->numProcUnits; i++) { if (PICO_OK == status) { - status = ctrl->procUnit[i]->initialize(ctrl->procUnit[i]); + status = ctrl->procUnit[i]->initialize(ctrl->procUnit[i], r_mode); PICODBG_DEBUG(("(re-)initializing procUnit[%i] returned status %i",i, status)); } if (PICO_OK == status) { @@ -521,7 +521,7 @@ typedef struct picoctrl_engine { * @callgraph * @callergraph */ -pico_status_t picoctrl_engReset(picoctrl_Engine this) +pico_status_t picoctrl_engReset(picoctrl_Engine this, picoos_int32 r_mode) { pico_status_t status; @@ -532,7 +532,7 @@ pico_status_t picoctrl_engReset(picoctrl_Engine this) status = this->control->terminate(this->control); if (PICO_OK == status) { - status = this->control->initialize(this->control); + status = this->control->initialize(this->control, r_mode); } if (PICO_OK == status) { status = picodata_cbReset(this->cbIn); diff --git a/pico/lib/picoctrl.h b/pico/lib/picoctrl.h index 1dfea54..ff85d5a 100644 --- a/pico/lib/picoctrl.h +++ b/pico/lib/picoctrl.h @@ -69,8 +69,8 @@ pico_status_t picoctrl_engFeedText( picoos_int16 * bytesPut); pico_status_t picoctrl_engReset( - picoctrl_Engine engine - ); + picoctrl_Engine engine, + picoos_int32 r_mode); picoos_Common picoctrl_engGetCommon(picoctrl_Engine this); diff --git a/pico/lib/picodata.c b/pico/lib/picodata.c index 244e4b6..b886959 100644 --- a/pico/lib/picodata.c +++ b/pico/lib/picodata.c @@ -574,7 +574,7 @@ typedef struct simple_pu_data picorsrc_Voice voice; } simple_pu_data_t; -static pico_status_t puSimpleInitialize (register picodata_ProcessingUnit this) { +static pico_status_t puSimpleInitialize (register picodata_ProcessingUnit this, picoos_int32 r_mode) { return PICO_OK; } diff --git a/pico/lib/picodata.h b/pico/lib/picodata.h index 637a3ff..2105051 100644 --- a/pico/lib/picodata.h +++ b/pico/lib/picodata.h @@ -498,7 +498,7 @@ pico_status_t picodata_setCbIn(picodata_ProcessingUnit this, picodata_CharBuffer pico_status_t picodata_setCbOut(picodata_ProcessingUnit this, picodata_CharBuffer cbOut); /* protected */ -typedef pico_status_t (* picodata_puInitializeMethod) (register picodata_ProcessingUnit this); +typedef pico_status_t (* picodata_puInitializeMethod) (register picodata_ProcessingUnit this, picoos_int32 mode); typedef pico_status_t (* picodata_puTerminateMethod) (register picodata_ProcessingUnit this); typedef picodata_step_result_t (* picodata_puStepMethod) (register picodata_ProcessingUnit this, picoos_int16 mode, picoos_uint16 * numBytesOutput); typedef pico_status_t (* picodata_puSubDeallocateMethod) (register picodata_ProcessingUnit this, picoos_MemoryManager mm); diff --git a/pico/lib/picodefs.h b/pico/lib/picodefs.h index 6613e84..8c24039 100644 --- a/pico/lib/picodefs.h +++ b/pico/lib/picodefs.h @@ -156,6 +156,11 @@ typedef signed int pico_Status; #define PICO_STEP_ERROR (pico_Status) -200 +/* Engine reset modes ***********************************************************/ + +/* general */ +#define PICO_RESET_FULL (pico_Status) 0 +#define PICO_RESET_SOFT (pico_Status) 0x10 /* ********************************************************************/ diff --git a/pico/lib/picopam.c b/pico/lib/picopam.c index 02e5cc2..f3253a6 100644 --- a/pico/lib/picopam.c +++ b/pico/lib/picopam.c @@ -386,7 +386,7 @@ typedef struct pam_subobj /*------------------------------------------------------------------ Service routines : ------------------------------------------------------------------*/ -static pico_status_t pam_initialize(register picodata_ProcessingUnit this); +static pico_status_t pam_initialize(register picodata_ProcessingUnit this, picoos_int32 r_mode); static pico_status_t pam_terminate(register picodata_ProcessingUnit this); static pico_status_t pam_allocate(picoos_MemoryManager mm, pam_subobj_t *pam); static void pam_deallocate(picoos_MemoryManager mm, pam_subobj_t *pam); @@ -556,7 +556,7 @@ static void pam_deallocate(picoos_MemoryManager mm, pam_subobj_t *pam) * @callgraph * @callergraph */ -static pico_status_t pam_initialize(register picodata_ProcessingUnit this) +static pico_status_t pam_initialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { pico_status_t nI, nJ; pam_subobj_t *pam; @@ -599,6 +599,11 @@ static pico_status_t pam_initialize(register picodata_ProcessingUnit this) pam->nLastAttachedItemId = pam->nCurrAttachedItem = 0; pam->nAttachedItemsSize = 0; + if (r_mode == PICO_RESET_SOFT) { + /*following initializations needed only at startup or after a full reset*/ + return PICO_OK; + } + /*pitch and duration modifiers*/ pam->pMod = 1.0f; pam->dMod = 1.0f; @@ -621,6 +626,8 @@ static pico_status_t pam_initialize(register picodata_ProcessingUnit this) } } } + + /*----------------------------------------------------------------- * MANAGE LINGWARE INITIALIZATION IF NEEDED ------------------------------------------------------------------*/ @@ -813,7 +820,7 @@ picodata_ProcessingUnit picopam_newPamUnit(picoos_MemoryManager mm, /*----------------------------------------------------------------- * Initialize memory for PAM (this may be re-used elsewhere, e.g.Reset) * ------------------------------------------------------------------*/ - if (PICO_OK != pam_initialize(this)) { + if (PICO_OK != pam_initialize(this, PICO_RESET_FULL)) { PICODBG_ERROR(("problem initializing the pam sub-object")); } return this; diff --git a/pico/lib/picopr.c b/pico/lib/picopr.c index f54734a..d5371d7 100644 --- a/pico/lib/picopr.c +++ b/pico/lib/picopr.c @@ -3168,8 +3168,9 @@ extern void pr_treatItem (picodata_ProcessingUnit this, pr_subobj_t * pr, pr_ioI /* *****************************************************************************/ -pico_status_t prReset(register picodata_ProcessingUnit this) +pico_status_t prReset(register picodata_ProcessingUnit this, picoos_int32 r_mode) { + picoos_int32 i; pr_subobj_t * pr; @@ -3226,6 +3227,10 @@ pico_status_t prReset(register picodata_ProcessingUnit this) pr->forceOutput = FALSE; + if (r_mode == PICO_RESET_SOFT) { + /*following initializations needed only at startup or after a full reset*/ + return PICO_OK; + } pr->xsampa_parser = picokfst_getFST(this->voice->kbArray[PICOKNOW_KBID_FST_XSAMPA_PARSE]); @@ -3239,14 +3244,14 @@ pico_status_t prReset(register picodata_ProcessingUnit this) } -pico_status_t prInitialize(register picodata_ProcessingUnit this) +pico_status_t prInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { /* if (NULL == this || NULL == this->subObj) { return PICO_ERR_OTHER; } */ - return prReset(this); + return prReset(this, r_mode); } @@ -3314,7 +3319,7 @@ picodata_ProcessingUnit picopr_newPreprocUnit(picoos_MemoryManager mm, picoos_Co picoos_deallocate(mm, (void *)&this); return NULL; } - prInitialize(this); + prInitialize(this, PICO_RESET_FULL); return this; } diff --git a/pico/lib/picosa.c b/pico/lib/picosa.c index 3147c76..ab48713 100644 --- a/pico/lib/picosa.c +++ b/pico/lib/picosa.c @@ -242,7 +242,7 @@ typedef struct sa_subobj { } sa_subobj_t; -static pico_status_t saInitialize(register picodata_ProcessingUnit this) { +static pico_status_t saInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { sa_subobj_t * sa; picoos_uint16 i; picokfst_FST fst; @@ -294,6 +294,11 @@ static pico_status_t saInitialize(register picodata_ProcessingUnit this) { sa->phonWritePos = 0; sa->nextReadPos = 0; + if (r_mode == PICO_RESET_SOFT) { + /*following initializations needed only at startup or after a full reset*/ + return PICO_OK; + } + /* kb fst[] */ sa->numFsts = 0; for (i = 0; isubObj) { @@ -147,33 +147,40 @@ static pico_status_t sigInitialize(register picodata_ProcessingUnit this) /*----------------------------------------------------------------- * MANAGE LINGWARE INITIALIZATION IF NEEDED ------------------------------------------------------------------*/ - sig_subObj->pdfmgc = picokpdf_getPdfMUL( - this->voice->kbArray[PICOKNOW_KBID_PDF_MGC]); - sig_subObj->pdflfz = picokpdf_getPdfMUL( - this->voice->kbArray[PICOKNOW_KBID_PDF_LFZ]); - sig_subObj->pdfphs = picokpdf_getPdfPHS( - this->voice->kbArray[PICOKNOW_KBID_PDF_PHS]); - - sig_subObj->scmeanpowLFZ = sig_subObj->pdflfz->bigpow - - sig_subObj->pdflfz->meanpow; - sig_subObj->scmeanpowMGC = sig_subObj->pdfmgc->bigpow - - sig_subObj->pdfmgc->meanpow; - sig_subObj->scmeanLFZ = (1 << (picoos_uint32) sig_subObj->scmeanpowLFZ); - sig_subObj->scmeanMGC = (1 << (picoos_uint32) sig_subObj->scmeanpowMGC); - sig_subObj->fSampNorm = PICOSIG_NORM1 * sig_subObj->pdfmgc->amplif; - - /*----------------------------------------------------------------- - * Initialize memory for DSP - * ------------------------------------------------------------------*/ - sigDspInitialize(&(sig_subObj->sig_inner)); + if (r_mode == PICO_RESET_FULL) { + /*not done when resetting SOFT*/ + sig_subObj->pdfmgc = picokpdf_getPdfMUL( + this->voice->kbArray[PICOKNOW_KBID_PDF_MGC]); + sig_subObj->pdflfz = picokpdf_getPdfMUL( + this->voice->kbArray[PICOKNOW_KBID_PDF_LFZ]); + sig_subObj->pdfphs = picokpdf_getPdfPHS( + this->voice->kbArray[PICOKNOW_KBID_PDF_PHS]); + + sig_subObj->scmeanpowLFZ = sig_subObj->pdflfz->bigpow + - sig_subObj->pdflfz->meanpow; + sig_subObj->scmeanpowMGC = sig_subObj->pdfmgc->bigpow + - sig_subObj->pdfmgc->meanpow; + sig_subObj->scmeanLFZ = (1 << (picoos_uint32) sig_subObj->scmeanpowLFZ); + sig_subObj->scmeanMGC = (1 << (picoos_uint32) sig_subObj->scmeanpowMGC); + sig_subObj->fSampNorm = PICOSIG_NORM1 * sig_subObj->pdfmgc->amplif; + /*----------------------------------------------------------------- + * Initialize memory for DSP + * ------------------------------------------------------------------*/ + sigDspInitialize(&(sig_subObj->sig_inner), r_mode); + /*----------------------------------------------------------------- + * Initialize modifiers + * ------------------------------------------------------------------*/ + /*pitch , volume , speaker modifiers*/ + sig_subObj->pMod = 1.0f; + sig_subObj->vMod = 1.0f; + sig_subObj->sMod = 1.0f; + } else { + /*----------------------------------------------------------------- + * Initialize memory for DSP + * ------------------------------------------------------------------*/ + sigDspInitialize(&(sig_subObj->sig_inner), r_mode); + } - /*----------------------------------------------------------------- - * Initialize modifiers - * ------------------------------------------------------------------*/ - /*pitch , volume , speaker modifiers*/ - sig_subObj->pMod = 1.0f; - sig_subObj->vMod = 1.0f; - sig_subObj->sMod = 1.0f; return PICO_OK; }/*sigInitialize*/ @@ -287,7 +294,7 @@ picodata_ProcessingUnit picosig_newSigUnit(picoos_MemoryManager mm, /*----------------------------------------------------------------- * Initialize memory for DSP (this may be re-used elsewhere, e.g.Reset) * ------------------------------------------------------------------*/ - if (PICO_OK != sigInitialize(this)) { + if (PICO_OK != sigInitialize(this, PICO_RESET_FULL)) { PICODBG_ERROR(("Error in iSig Sub Object initialization")); sigDeallocate(mm, &(sig_subObj->sig_inner)); picoos_deallocate(mm, (void *) &this); diff --git a/pico/lib/picosig2.c b/pico/lib/picosig2.c index e431c90..52943e6 100644 --- a/pico/lib/picosig2.c +++ b/pico/lib/picosig2.c @@ -412,11 +412,30 @@ void sigDeallocate(picoos_MemoryManager mm, sig_innerobj_t *sig_inObj) * @callgraph * @callergraph */ -void sigDspInitialize(sig_innerobj_t *sig_inObj) +void sigDspInitialize(sig_innerobj_t *sig_inObj, picoos_int32 r_mode) { picoos_int32 i, j; picoos_int32 *pnt; + if (r_mode == PICO_RESET_SOFT) { + /*minimal initialization when receiving a soft reset */ + return; + /* + sig_inObj->voxbnd_p = (picoos_int32) ((picoos_single) sig_inObj->hfftsize_p + / ((picoos_single) sig_inObj->Fs_p / (picoos_single) 2) + * (picoos_single) sig_inObj->VCutoff_p); + sig_inObj->voxbnd2_p + = (picoos_int32) ((picoos_single) sig_inObj->hfftsize_p + / ((picoos_single) sig_inObj->Fs_p / (picoos_single) 2) + * (picoos_single) sig_inObj->UVCutoff_p); + sig_inObj->nextPeak_p = (((int) (PICODSP_FFTSIZE)) + / ((int) PICODSP_DISPLACE) - 1) * sig_inObj->hop_p; + for (i = 0; i < 2 * PICODSP_FFTSIZE; i++) { + sig_inObj->int_vec26[i] = 0; + } + return; + */ + } /*----------------------------------------------------------------- * Initialization * ------------------------------------------------------------------*/ diff --git a/pico/lib/picosig2.h b/pico/lib/picosig2.h index f239ced..1b975db 100644 --- a/pico/lib/picosig2.h +++ b/pico/lib/picosig2.h @@ -139,7 +139,7 @@ typedef struct sig_innerobj extern pico_status_t sigAllocate(picoos_MemoryManager mm, sig_innerobj_t *sig_inObj); extern void sigDeallocate(picoos_MemoryManager mm, sig_innerobj_t *sig_inObj); -extern void sigDspInitialize(sig_innerobj_t *sig_inObj); +extern void sigDspInitialize(sig_innerobj_t *sig_inObj, picoos_int32 r_mode); /*------------------------------------------------------------------ Exported (to picosig.c) Processing routines : diff --git a/pico/lib/picospho.c b/pico/lib/picospho.c index 0d0cdf8..bf9dd80 100644 --- a/pico/lib/picospho.c +++ b/pico/lib/picospho.c @@ -286,7 +286,7 @@ static pico_status_t sphoReset(register picodata_ProcessingUnit this) } -static pico_status_t sphoInitialize(register picodata_ProcessingUnit this) +static pico_status_t sphoInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { picoos_uint8 i; spho_subobj_t * spho; @@ -392,7 +392,7 @@ picodata_ProcessingUnit picospho_newSentPhoUnit(picoos_MemoryManager mm, return NULL; } - sphoInitialize(this); + sphoInitialize(this, PICO_RESET_FULL); return this; } diff --git a/pico/lib/picotok.c b/pico/lib/picotok.c index 4488609..969e2a3 100644 --- a/pico/lib/picotok.c +++ b/pico/lib/picotok.c @@ -1385,7 +1385,7 @@ static void tok_treatSimpleToken (picodata_ProcessingUnit this, tok_subobj_t * t /* *****************************************************************************/ -static pico_status_t tokReset(register picodata_ProcessingUnit this) +static pico_status_t tokReset(register picodata_ProcessingUnit this, picoos_int32 r_mode) { tok_subobj_t * tok; MarkupId mId; @@ -1449,7 +1449,7 @@ static pico_status_t tokReset(register picodata_ProcessingUnit this) return PICO_OK; } -static pico_status_t tokInitialize(register picodata_ProcessingUnit this) +static pico_status_t tokInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { /* @@ -1460,7 +1460,7 @@ static pico_status_t tokInitialize(register picodata_ProcessingUnit this) } tok = (tok_subobj_t *) this->subObj; */ - return tokReset(this); + return tokReset(this, r_mode); } @@ -1508,7 +1508,7 @@ picodata_ProcessingUnit picotok_newTokenizeUnit(picoos_MemoryManager mm, picoos_ picoos_deallocate(mm, (void *)&this); return NULL; } - tokInitialize(this); + tokInitialize(this, PICO_RESET_FULL); return this; } diff --git a/pico/lib/picowa.c b/pico/lib/picowa.c index 3e793c9..ab8ca51 100644 --- a/pico/lib/picowa.c +++ b/pico/lib/picowa.c @@ -78,7 +78,7 @@ typedef struct wa_subobj { } wa_subobj_t; -static pico_status_t waInitialize(register picodata_ProcessingUnit this) { +static pico_status_t waInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode) { picoos_uint8 i; picoklex_Lex ulex; wa_subobj_t * wa; @@ -98,6 +98,10 @@ static pico_status_t waInitialize(register picodata_ProcessingUnit this) { wa->outBufSize = PICOWA_MAXITEMSIZE; wa->outLen = 0; + if (r_mode == PICO_RESET_SOFT) { + /*following initializations needed only at startup or after a full reset*/ + return PICO_OK; + } /* kb lex */ wa->lex = picoklex_getLex(this->voice->kbArray[PICOKNOW_KBID_LEX_MAIN]); if (wa->lex == NULL) { @@ -177,7 +181,7 @@ picodata_ProcessingUnit picowa_newWordAnaUnit(picoos_MemoryManager mm, return NULL; } - waInitialize(this); + waInitialize(this, PICO_RESET_FULL); return this; } diff --git a/pico/tests/data/xsampa_pico_man_README.txt b/pico/tests/data/xsampa_pico_man_README.txt new file mode 100644 index 0000000..d0b785e --- /dev/null +++ b/pico/tests/data/xsampa_pico_man_README.txt @@ -0,0 +1,23 @@ +ReadME for the XSAMPA Pico TTS tests + +The following files contain a series of utterances to test the Pico TTS engine with regards to +the support of language-specific XSAMPA characters: + + xsampa_pico_man_de-DE.txt + xsampa_pico_man_en-GB.txt + xsampa_pico_man_en-US.txt + xsampa_pico_man_es-ES.txt + xsampa_pico_man_fr-FR.txt + xsampa_pico_man_it-IT.txt + +They implement the examples given in section A.4 of the SVOX Pico Manual ("SVOX Pico - Speech Output +Engine SDK"). +They are formatted as utterances that can be sent to the Pico engine through the Android 1.6 API. +This is achieved by using the TextToSpeech.speak() method of the android.speech.tts package. +The test files adopt the following syntax: +- the lines used in the test are between the lines marked "BEGIN_TEST" and "END_TEST", +- lines that start with "#" are not spoken. +The application found in external/svox/pico/tests/apps/SpeechTester lets you load those files and +run the test, i.e. play all valid test lines in the test file. Copy the test files to the +Android-powered device, and enter the file name that contains the test to run, and click "Run test". + diff --git a/pico/tests/data/xsampa_pico_man_de-DE.txt b/pico/tests/data/xsampa_pico_man_de-DE.txt new file mode 100644 index 0000000..e2bc5a8 --- /dev/null +++ b/pico/tests/data/xsampa_pico_man_de-DE.txt @@ -0,0 +1,248 @@ +# BEGIN_TEST + +#------------------------------ +# German (de-DE) +# +# Notes: These tests use the XSAMPA examples given in the pico manual. +# The only differences between the manual and the test strings are: +# 1/ replaced the primary stress character " (double quote) by its dec code " +# 2/ the XSAMPA "r\" is replaced by "r\\" (the backslash is escaped) otherwise pico says +# garbage or the [rrr] sound is pronounced "j" (as a french j) +# When a test is marked as "BUG", if possible, the tester will capture an approximate +# transcription of what was heard inside [ ]. + +# Consonants +# --------- Plosives + +# TEST ? Abend "?a:.b@nt + Ich teste . + +# TEST b Ball "bal + Ich teste . + +# TEST d Dach "dax + Ich teste . + +# TEST g Gabe "ga:.b@ + Ich teste . + +# TEST k Kamm "kam + Ich teste . + +# TEST p Post "pOst + Ich teste . + +# TEST t Tritt "tRIt + Ich teste . + + +# --------- Nasals + +# TEST N lang "laN + Ich teste . + +# TEST m Matte "ma.t@ + Ich teste . + +# TEST n Nest "nEst + Ich teste . + + + +# --------- Fricatives +# TEST C Milch "mIlC + Ich teste . + +# TEST R Rabe "Ra:.b@ + Ich teste . + +# TEST S Masche "ma.S@ + Ich teste . + +# TEST Z Genie Ze."ni: + Ich teste . + +# TEST f Affe "?a.f@ + Ich teste . + +# TEST h Hund "hUnt + Ich teste . + +# TEST s Masse "ma.s@ + Ich teste . + +# BUG v Wahl "va:l says [val], [a] should be long + Ich teste . + +# TEST x Bach "bax + Ich teste . + +# TEST z Rose "Ro:.z@ + Ich teste . + +# --------- Approximants + +# TEST j Jagd "ja:kt + Ich teste . + +# TEST l Luft "lUft + Ich teste . + +# --------- Syllabic Consonants + +# BUG l= Nabel "na:.b=l says [natrel], error on [b] + Ich teste . + +# TEST m= hartem "haR.t=m + Ich teste . + +# TEST n= Latten "la.t=n + Ich teste . + + +# --------- Affricates + +# TEST d_Z Dschungel "d_ZU.N@l + Ich teste . + +# TEST p_f Dampf "damp_f + Ich teste . + +# TEST t_S Klatsch "klat_S + Ich teste . + +# TEST t_s Zunge "t_sU.N@ + Ich teste . + +# Monophthongs + +# --------- Short + +# TEST 2 Ökonom ?2.ko."no:m + Ich teste . + +# TEST 6 Halter "hal.t6 + Ich teste . + +# TEST 9 göttlich "g9t.lIC + Ich teste . + +# TEST @ Lage "la:.g@ + Ich teste . + +# TEST E Kette "kE.t@ + Ich teste . + +# TEST I Kiste "kIs.t@ + Ich teste . + +# TEST O Kopf "kOp_f + Ich teste . + +# TEST U Kunst "kUnst + Ich teste . + +# TEST Y füllen "fY.l@n + Ich teste . + +# TEST a Kappe "ka.p@ + Ich teste . + +# TEST e Theorie te.o."Ri: + Ich teste . + +# TEST i Politik po.li."ti:k + Ich teste . + +# TEST o polieren po."li:.R@n + Ich teste . + +# TEST u Kurier ku."Ri:6_^ + Ich teste . + +# TEST y Mythologie my.to.lo."gi: + Ich teste . + + + +# --------- Long + +# TEST 2: Öl " + Ich teste . + +# TEST E: Bär "bE:6_^ + Ich teste . + +# TEST a: Kater "ka:.t6 + Ich teste . + +# TEST e: Beet "be:t + Ich teste . + +# TEST i: Biene "bi:.n@ + Ich teste . + +# TEST o: Boot "bo:t + Ich teste . + +# TEST u: Hut "hu:t + Ich teste . + +# TEST y: kühl "ky:l + Ich teste . + + +# --------- Nasalized + +# TEST 9~: parfum par."f9~: + Ich teste . + +# TEST E~: Timbre "tE~:.bR@ + Ich teste . + +# TEST a~: Chance "Sa~:.s@ + Ich teste . + +# TEST o~: fond "fo~: + Ich teste . + + +# --------- Non-syllabic + +# TEST 6_^ Bier "bi:6_^ + Ich teste . + +# TEST i_^ Mumie "mu:.mi_^@" + Ich teste . + +# TEST o_^ foyer fo_^a."je: + Ich teste . + +# TEST u_^ aktuell ?ak."tu_^El + Ich teste . + + +# --------- Diphthongs + +# TEST O_Y Deutsch "dO_Yt_S + Ich teste . + +# TEST a_I Bein "ba_In + Ich teste . + +# TEST a_U Kauf "ka_Uf + Ich teste . + +# END_TEST + + +# --------- Other Symbols +# word separator NEED TEST HERE <<<<<<<<<<<<------------------------------------ +% secondary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ +. syllable break NEED TEST HERE <<<<<<<<<<<<------------------------------------ +" primary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ + + +# --------- + + diff --git a/pico/tests/data/xsampa_pico_man_en-GB.txt b/pico/tests/data/xsampa_pico_man_en-GB.txt new file mode 100644 index 0000000..b5b5dde --- /dev/null +++ b/pico/tests/data/xsampa_pico_man_en-GB.txt @@ -0,0 +1,192 @@ + +# BEGIN_TEST + +#------------------------------ +# English (en-GB) +# +# Notes: These tests use the XSAMPA examples given in the pico manual. +# The only differences between the manual and the test strings are: +# 1/ replaced the primary stress character " (double quote) by its dec code " +# 2/ the XSAMPA "r\" is replaced by "r\\" (the backslash is escaped) otherwise pico says +# garbage or the "rrr" sound is pronounced "j" (as a french j) +# When a test is marked as "BUG", if possible, the tester will capture an approximate +# transcription of what was heard inside [ ]. + +# Consonants +# --------- Plosives + +# TEST "bin" + Testing . + +# TEST "din" + Testing . + +# TEST "give" + Testing . + +# TEST "kin" + Testing . + +# TEST "pin" + Testing . + +# TEST "tin" + Testing . + + +# --------- Nasals + +# TEST N thing "TIN + Testing . + +# TEST m mock "mA:k + Testing . + +# TEST n knock "nA:k + Testing . + +# --------- Fricatives + +# TEST D this "DIs + Testing . + +# TEST S shin "SIn + Testing . + +# TEST T thin "TIn + Testing . + +# BUG Z measure "mE.Z@` says [measu'chu'res] + Testing . + +# TEST f fit "fIt + Testing . + +# TEST h hit "hIt + Testing . + +# TEST s sin "sIn + Testing . + +# TEST v vim "vIm + Testing . + +# TEST z zing "zIN + Testing . + + +# --------- Approximants + +# TEST j yacht "jA:t + Testing . + +# BUG l long "lA:N says garbage after the [l] + Testing . + +# TEST l= little "lI.tl= + Testing . + +# TEST r\ right "r\a_It + Testing . + +# BUG w wasp "wA:sp says garbage after the [wa] + Testing . + + +# --------- Affricates + +# TEST d_Z gin "d_ZIn + Testing . + +# TEST t_S chin "t_SIn + Testing . + + +# Monophthongs +# --------- Short + +# TEST @ allow @."la_U + Testing . + +# TEST E pet "pEt + Testing . + +# TEST I pit "pIt + Testing . + +# TEST Q pot "pQt + Testing . + +# TEST U put "pUt + Testing . + +# TEST V cut "kVt + Testing . + +# TEST { pat "p{t + Testing . + + +# --------- Long + +# TEST 3: furs "f3:z says [fuz z z] + Testing . + +# BUG A: stars "stA:z says [st'eyes] + Testing . + +# TEST i: ease "i:z + Testing . + +# TEST u: lose "lu:z + Testing . + + +# --------- Diphthongs + +# BUG o_U nose "no_Uz says garbage + Testing . + +# TEST O_I noise "nO_Iz + Testing . + +# TEST a_I rise "r\a_Iz + Testing . + +# TEST a_U rouse "r\a_Uz + Testing . + +# TEST e_I raise "r\e_Iz + Testing . + + +# --------- Other Symbols + +# TEST # word separator, tested on "this yacht" + Testing and . + +# TEST % secondary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ +# Testing . + +# TEST . syllable break NEED TEST HERE <<<<<<<<<<<<------------------------------------ +# Testing . + +# TEST " primary stress BETTER TEST? <<<<<<<<<<<<------------------------------------ + Testing and primary stress. + +# --------- +# END_TEST + +#----------------------- +# Tests from en-US + +# BUG? W whale "We_Il says [kale] + Testing . + +# BUG? @` actor "{k.t@` says garbage after [a] + Testing . + +# BUG? O: four "fO:r\ says garbage + Testing . + + diff --git a/pico/tests/data/xsampa_pico_man_en-US.txt b/pico/tests/data/xsampa_pico_man_en-US.txt new file mode 100644 index 0000000..6a3204a --- /dev/null +++ b/pico/tests/data/xsampa_pico_man_en-US.txt @@ -0,0 +1,189 @@ + +# BEGIN_TEST + +#------------------------------ +# English (en-US) +# +# Notes: These tests use the XSAMPA examples given in the pico manual. +# The only differences between the manual and the test strings are: +# 1/ replaced the primary stress character " (double quote) by its dec code " +# 2/ the XSAMPA "r\" is replaced by "r\\" (the backslash is escaped) otherwise pico says +# garbage or the "rrr" sound is pronounced "j" (as a french j) +# When a test is marked as "BUG", if possible, the tester will capture an approximate +# transcription of what was heard inside [ ]. + + +# Consonants +# --------- Plosives + +# TEST "bin" + Testing . + +# TEST "din" + Testing . + +# TEST "give" + Testing . + +# TEST "kin" + Testing . + +# TEST "pin" + Testing . + +# TEST "tin" + Testing . + + +# --------- Nasals + +# TEST N thing "TIN + Testing . + +# TEST m mock "mA:k + Testing . + +# TEST n knock "nA:k + Testing . + +# --------- Fricatives + +# TEST D this "DIs + Testing . + +# TEST S shin "SIn + Testing . + +# TEST T thin "TIn + Testing . + +# TEST Z measure "mE.Z@` + Testing . + +# TEST f fit "fIt + Testing . + +# TEST h hit "hIt + Testing . + +# TEST s sin "sIn + Testing . + +# TEST v vim "vIm + Testing . + +# TEST W whale "We_Il ("east coast" pronounciation of W phoneme for "wh") + Testing . + +# TEST w whale "We_Il + Testing . + +# TEST z zing "zIN + Testing . + + +# --------- Approximants + +# TEST j yacht "jA:t + Testing . + +# BUG l long "lA:N says [lang] + Testing . + +# TEST l= little "lI.tl= + Testing . + +# TEST r\ right "r\a_It says [jight] + Testing . + +# TEST w wasp "wA:sp + Testing . + + +# --------- Affricates + +# TEST d_Z gin "d_ZIn + Testing . + +# TEST t_S chin "t_SIn + Testing . + + +# Monophthongs +# --------- Short + +# TEST @ allow @."la_U + Testing . + +# TEST @` actor "{k.t@` + Testing . + +# TEST E pet "pEt + Testing . + +# TEST I pit "pIt + Testing . + +# TEST U put "pUt + Testing . + +# TEST V cut "kVt + Testing . + +# TEST { pat "p{t + Testing . + + +# --------- Long + +# TEST 3`: furs "f3`:z says [fuz z z] + Testing . + +# TEST A: stars "stA:r\z says [starch] + Testing . + +# TEST i: ease "i:z + Testing . + +# TEST O: four "fO:r\ + Testing . + +# TEST u: lose "lu:z + Testing . + + +# --------- Diphthongs + +# TEST o_U nose "no_Uz + Testing . + +# TEST O_I noise "nO_Iz + Testing . + +# TEST a_I rise "r\a_Iz + Testing . + +# TEST a_U rouse "r\a_Uz + Testing . + +# TEST e_I raise "r\e_Iz + Testing . + +# --------- Other Symbols + +# TEST # word separator, tested on "this yacht" + Testing and . + +# TEST % secondary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ +# not tested. + +# TEST . syllable break NEED TEST HERE <<<<<<<<<<<<------------------------------------ +# not tested. + +# BUG " primary stress BETTER TEST? <<<<<<<<<<<<------------------------------------ + Testing and primary stress. + +# --------- + +# END_TEST + diff --git a/pico/tests/data/xsampa_pico_man_es-ES.txt b/pico/tests/data/xsampa_pico_man_es-ES.txt new file mode 100644 index 0000000..898571c --- /dev/null +++ b/pico/tests/data/xsampa_pico_man_es-ES.txt @@ -0,0 +1,131 @@ + +# BEGIN_TEST + +#------------------------------ +# Spanish (es-ES) +# +# Notes: These tests use the XSAMPA examples given in the pico manual. +# The only differences between the manual and the test strings are: +# 1/ replaced the primary stress character " (double quote) by its dec code " +# 2/ the XSAMPA "r\" is replaced by "r\\" (the backslash is escaped) otherwise pico says +# garbage or the [rrr] sound is pronounced "j" (as a french j) +# When a test is marked as "BUG", if possible, the tester will capture an approximate +# transcription of what was heard inside [ ]. + +# Consonants +# --------- Plosives + +# TEST b vino "bi.no + Puedo probar . + +# TEST d donde "don.de + Puedo probar . + +# TEST g gato "ga.to + Puedo probar . + +# TEST k casa "ka.sa + Puedo probar . + +# TEST p puente "pu_^en.te + Puedo probar . + +# TEST t tiempo "tjem.po + Puedo probar . + + +# --------- Fricatives +# TEST f fácil "fa.Til + Puedo probar . + +# TEST x hijo "i.xo + Puedo probar . + +# TEST s sopa "so.pa + Puedo probar . + +# TEST B cabeza ka."Be.Ta + Puedo probar . + +# TEST D dedo "de.Do + Puedo probar . + +# TEST G luego "lu_^e.Go + Puedo probar . + +# TEST T zona "To.na + Puedo probar . + +# TEST j\ cónyuge "kon.j\u.xe + Puedo probar . + + +# --------- Affricates +# TEST t_S mucho "mu.t_So + Puedo probar . + + +# --------- Approximants +# TEST l lejos "le.xos + Puedo probar . + +# BUG L caballo ca."Ba.Lo drops [c], says [aballo] + Puedo probar . + +# IMPROVE j rey "rej [r] is not a strong r, should be + Puedo probar . + + +# --------- Nasals +# TEST J año "a.Jo + Puedo probar . + +# TEST N nunca "nuN.ka + Puedo probar . + +# TEST m monte "mon.te + Puedo probar . + +# TEST n nota "no.ta + Puedo probar . + + +# --------- Tap, trill +# TEST 4 hora "o.4a + Puedo probar . + +# TEST r torre "to.re + Puedo probar . + +# Vowels +# TEST a valle "ba.Le + Puedo probar . + +# TEST e pero "pe.4o + Puedo probar . + +# TEST i pico "pi.ko + Puedo probar . + +# TEST o toro "to.4o + Puedo probar . + +# TEST u duro "du.4o + Puedo probar . + +# TEST u_^ bueno "bu_^e.no + Puedo probar . + + +# END_TEST + +# --------- Other Symbols +# word separator NEED TEST HERE <<<<<<<<<<<<------------------------------------ +% secondary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ +. syllable break NEED TEST HERE <<<<<<<<<<<<------------------------------------ +" primary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ + + +# --------- + + diff --git a/pico/tests/data/xsampa_pico_man_fr-FR.txt b/pico/tests/data/xsampa_pico_man_fr-FR.txt new file mode 100644 index 0000000..6cf6d1a --- /dev/null +++ b/pico/tests/data/xsampa_pico_man_fr-FR.txt @@ -0,0 +1,153 @@ + +# BEGIN_TEST + +#------------------------------ +# French (fr-FR) +# +# Notes: These tests use the XSAMPA examples given in the pico manual. +# The only differences between the manual and the test strings are: +# 1/ replaced the primary stress character " (double quote) by its dec code " +# 2/ the XSAMPA "r\" is replaced by "r\\" (the backslash is escaped) otherwise pico says +# garbage or the "rrr" sound is pronounced "j" (as a french j) +# When a test is marked as "BUG", if possible, the tester will capture an approximate +# transcription of what was heard inside [ ]. + +# Consonants +# --------- Plosives + +# TEST b bon "bO~ + Je teste . + +# TEST d dans "dA~ + Je teste . + +# TEST g gant "gA~ + Je teste . + +# TEST k quand "kA~ + Je teste . + +# TEST p pont "pO~ + Je teste . + +# TEST t temps "tA~ + Je teste . + + +# --------- Nasals + +# TEST J oignon O."JO~ + Je teste . + +# TEST N camping kA~."piN + Je teste . + +# TEST m mont "mO~ + Je teste . + +# TEST n nom "nO~ + Je teste . + + +# --------- Fricatives + +# TEST R rond "RO~ + Je teste . + +# TEST S champ "SA~ + Je teste . + +# TEST Z gens "ZA~ + Je teste . + +# TEST f femme "fam + Je teste . + +# TEST s sans "sA~ + Je teste . + +# TEST v vent "vA~ + Je teste . + +# TEST z zone "zon + Je teste . + + +# --------- Approximants + +# BUG H juin "ZHE~ says [j'lin] + Je teste . + +# TEST j pierre "pjER + Je teste . + +# BUG l long "lO~ says [ion] + Je teste . + +# TEST l long "lO~ works only in a sentence (here also used to say "longtemps") + Je teste et . + +# BUG w coin "kwE~ says [keu'oin] + Je teste . + + +# --------- Vowels + +# TEST 2 deux "d2 + Je teste . + +# TEST 9 neuf "n9f + Je teste . + +# TEST @ justement "Zys.t@.mA~ + Je teste . + +# BUG E seize "sEz says [seisse] + Je teste . + +# TEST O comme "kOm + Je teste . + +# TEST a patte "pat + Je teste . + +# TEST e ses "se + Je teste . + +# TEST i si "si + Je teste . + +# TEST o gros "gRo + Je teste . + +# TEST u doux "du + Je teste . + +# TEST y du "dy + Je teste . + +# TEST 9~ brun "bR9~ + Je teste . + +# TEST E~ vin "vE~ + Je teste . + +# TEST O~ bon "bO~ + Je teste . + +# TEST A~ vent "vA~ + Je teste . + + +# END_TEST + +# --------- Other Symbols +# word separator NEED TEST HERE <<<<<<<<<<<<------------------------------------ +% secondary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ +. syllable break NEED TEST HERE <<<<<<<<<<<<------------------------------------ +" primary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ + + +# --------- + + diff --git a/pico/tests/data/xsampa_pico_man_it-IT.txt b/pico/tests/data/xsampa_pico_man_it-IT.txt new file mode 100644 index 0000000..eeb558d --- /dev/null +++ b/pico/tests/data/xsampa_pico_man_it-IT.txt @@ -0,0 +1,210 @@ + +# BEGIN_TEST + +#------------------------------ +# Italian (it-IT) +# +# Notes: These tests use the XSAMPA examples given in the pico manual. +# The only differences between the manual and the test strings are: +# 1/ replaced the primary stress character " (double quote) by its dec code " +# 2/ the XSAMPA "r\" is replaced by "r\\" (the backslash is escaped) otherwise pico says +# garbage or the [rrr] sound is pronounced "j" (as a french j) +# When a test is marked as "BUG", if possible, the tester will capture an approximate +# transcription of what was heard inside [ ]. + +# Consonants +# --------- Plosives + +# TEST b banco "baN.ko + I test . + +# TEST d danno "da.n:o + I test . + +# TEST g gamba "gam.ba + I test . + +# TEST k cane "ka:.ne + I test . + +# TEST p pane "pa:.ne + I test . + +# TEST t tanto "tan.to + I test . + +# TEST b: gobbo "go.b:o + I test . + +# TEST d: cadde "ka.d:e + I test . + +# IMPROVE g: fugga "fu.g:a says [fuga] wrong g (not "plosive") + I test . + +# TEST k: nocca "no.k:a + I test . + +# TEST p: coppa "ko.p:a + I test . + +# TEST t: zucchetto t_su."k:e.t:o + I test . + + +# --------- Fricatives + +# TEST S scendo "Sen.do + I test . + +# TEST f fame "fa:.me + I test . + +# TEST s sano "sa:.no + I test . + +# TEST v vano "va:.no + I test . + +# TEST z sbaglio "zba.L:o + I test . + +# IMPROVE S: ascia "a.S:a [sh] should be longer + I test . + +# IMPROVE f: beffa "be.f:a [ff] should be longer + I test . + +# IMPROVE s: cassa "ka.s:a [ss] should be longer + I test . + +# IMPROVE v: bevvi "be.v:i [vv] should be more stressed + I test . + + +# --------- Affricates + +# TEST d_z zona "d_zO:.na + I test . + +# TEST d_Z gita "d_Zi:.ta + I test . + +# TEST t_s zitto "t_si.t:o + I test . + +# TEST t_S cena "t_Se:.na + I test . + +# TEST d_z: mezzo "mE.d_z:o + I test . + +# BUG d_Z: oggi "O.d_Z:i [o] is missing, [g] is wrong + I test . + +# TEST t_s: bozza "bo.t_s:a + I test . + +# TEST t_S: braccio "b4a.t_S:o + I test . + +# --------- Approximants + +# TEST l lama "la:.ma + I test . + +# IMPROVE L gli "Li the L sound is hard to recognize + I test . + +# TEST l: colla "ko.l:a + I test . + +# IMPROVE L: foglio "fo.L:o the L sound is hard to recognize + I test . + +# --------- Nasals + +# BUG J gnocchi "JO.k:i [gn] is missing + I test . + +# TEST N manca "maN.ka + I test . + +# TEST m modo "mO:.do + I test . + +# TEST n nato "na:.to + I test . + +# TEST J: guadagna gu_^a."da.J:a + I test . + +# TEST m: partimmo pa4."ti.m:o + I test . + +# TEST n: madonna ma."do.n:a + I test . + + +# --------- Tap, trill +# TEST 4 pera "pE:.4a + I test . + +# TEST r arrabiata a."ra.b:i_^a:.ta + I test . + + +# Vowels + +# TEST a rata "4a:.ta + I test . + +# TEST e rete "4e:.te + I test . + +# TEST E compiendo kom."pi_^En.do + I test . + +# TEST i moderni mo."de4.ni + I test . + +# TEST o sabato "sa:.ba.to + I test . + +# BUG u occulta o."k_kul.ta [cc] is dropped, [t] is wrong, barely audible + I test . + +# TEST a: abitare a.bi."ta:.4e + I test . + +# TEST e: abete a."be:.te + I test . + +# TEST E: alfieri al."fi_^E:.4i + I test . + +# TEST i: alpina al."pi:.na + I test . + +# TEST o: ardore a4."do:.4e + I test . + +# TEST O: memoria me."mO:.4i_^a + I test . + +# TEST u: salubre sa."lu:.b4e + I test . + +# TEST i_^ filiale fi."li_^a:.le + I test . + +# TEST u_^ frequenta f4e."ku_^En.ta + I test . + +# END_TEST + +# --------- Other Symbols +# word separator NEED TEST HERE <<<<<<<<<<<<------------------------------------ +% secondary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ +. syllable break NEED TEST HERE <<<<<<<<<<<<------------------------------------ +" primary stress NEED TEST HERE <<<<<<<<<<<<------------------------------------ diff --git a/pico/tts/com_svox_picottsengine.cpp b/pico/tts/com_svox_picottsengine.cpp index f7df2a4..6fb0ac7 100644 --- a/pico/tts/com_svox_picottsengine.cpp +++ b/pico/tts/com_svox_picottsengine.cpp @@ -29,6 +29,7 @@ * If the language is changed through an SSML tag, there is a latency for the load. * */ +//#define LOG_NDEBUG 0 #include #include @@ -583,6 +584,157 @@ static char * doAddProperties( const char * str ) } +/** get_tok + * Searches for tokens in a string + * @str - text to be processed + * @pos - position of first character to be searched in str + * @textlen - postion of last character to be searched + * @tokstart - address of a variable to receive the start of the token found + * @tokstart - address of a variable to receive the length of the token found + * return : 1=token found, 0=token not found + * notes : the token separator set could be enlarged adding characters in "seps" +*/ +static int get_tok(const char * str , int pos, int textlen, int *tokstart, int *toklen) +{ + const char * seps = " "; + + /*look for start*/ + while ((posseps not found : return full token*/ + *toklen = pos - *tokstart; + return 1; + } + *toklen = pos - *tokstart; + return 1; +}/*get_sub_tok*/ + + +/** doCamelCase + * Searches for tokens having a compound structure with camel case and transforms them as follows : + * "XxxxYyyy" -->> "Xxxx Yyyy", + * "xxxYyyy" -->> "xxx Yyyy", + * "XXXYyyy" -->> "XXXYyyy" + * etc.... + * The calling function is responsible for freeing the returned string. + * @str - text to be processed + * return new string with text processed +*/ +static char * doCamelCase( const char * str ) +{ + int textlen; /* input string length */ + int totlen; /* output string length */ + int tlen_2, nsubtok; /* nuber of subtokens */ + int toklen, tokstart; /*legnth and start of generic token*/ + int stoklen, stokstart; /*legnth and start of generic sub-token*/ + int pos, tokpos, outpos; /*postion of current char in input string and token and output*/ + char *data; /*pointer of the returned string*/ + + pos = 0; + tokpos = 0; + toklen = 0; + stoklen = 0; + tlen_2 = 0; + totlen = 0; + + textlen = strlen(str) + 1; + + /*counting characters after sub token splitting including spaces*/ + //while ((pos tags. * The Pico tag only supports one word in each tag, @@ -649,13 +801,16 @@ typedef struct tagPhnArr char strXSAMPA[6]; /* SAMPA sequence */ } PArr; -#define phn_cnt (134) +#define phn_cnt (134+7) PArr PhnAry[phn_cnt] = { - /* XSAMPA conversion table */ + /* XSAMPA conversion table + This maps a single IPA symbol to a sequence representing XSAMPA. + This relies upon a direct one-to-one correspondance + including diphthongs and affricates. */ - /* Vowels (23) incomplete */ + /* Vowels (23) complete */ {0x025B, "E"}, {0x0251, "A"}, {0x0254, "O"}, @@ -680,7 +835,7 @@ PArr PhnAry[phn_cnt] = { {0x025E, "3\\\\"}, {0x0258, "@\\\\"}, - /* Consonants (60) incomplete */ + /* Consonants (60) complete */ {0x0288, "t`"}, {0x0256, "d`"}, {0x025F, "J\\\\"}, @@ -731,6 +886,7 @@ PArr PhnAry[phn_cnt] = { {0x029C, "H\\\\"}, {0x02A1, ">\\\\"}, {0x02A2, "<\\\\"}, + {0x0267, "x\\\\"}, /* hooktop heng */ {0x0298, "O\\\\"}, {0x01C0, "|\\\\"}, {0x01C3, "!\\\\"}, @@ -739,10 +895,10 @@ PArr PhnAry[phn_cnt] = { {0x027A, "l\\\\"}, {0x0255, "s\\\\"}, {0x0291, "z\\\\"}, - {0x0267, "x\\\\"}, {0x026B, "l_G"}, - /* Diacritics (34) incomplete */ + + /* Diacritics (37) complete */ {0x02BC, "_>"}, {0x0325, "_0"}, {0x030A, "_0"}, @@ -758,7 +914,7 @@ PArr PhnAry[phn_cnt] = { {0x031C, "_c"}, {0x031F, "_+"}, {0x0320, "_-"}, - {0x0308, "_\""}, /* centralized */ + {0x0308, "_\""}, /* centralized */ {0x033D, "_x"}, {0x0318, "_A"}, {0x0319, "_q"}, @@ -766,30 +922,39 @@ PArr PhnAry[phn_cnt] = { {0x02B7, "_w"}, {0x02B2, "_j"}, {0x02E0, "_G"}, - {0x02E4, "_?\\\\"}, - {0x0303, "~"}, + {0x02E4, "_?\\\\"}, /* pharyngealized */ + {0x0303, "~"}, /* nasalized */ {0x207F, "_n"}, {0x02E1, "_l"}, {0x031A, "_}"}, {0x0334, "_e"}, - {0x031D, "_r"}, - {0x031E, "_o"}, - {0x0329, "="}, - {0x032F, "_^"}, - {0x02D0, ":"}, - - /* Others (11) complete */ - {0x0361, "_"}, + {0x031D, "_r"}, /* raised equivalent to 02D4 */ + {0x02D4, "_r"}, /* raised equivalent to 031D */ + {0x031E, "_o"}, /* lowered equivalent to 02D5 */ + {0x02D5, "_o"}, /* lowered equivalent to 031E */ + {0x0329, "="}, /* sylabic */ + {0x032F, "_^"}, /* non-sylabic */ + {0x0361, "_"}, /* top tie bar */ {0x035C, "_"}, - {0x02C8, "\""}, - {0x02CC, "%"}, - {0x02D1, ":\\\\"}, - {0x0306, "_X"}, - {0x2016, "||"}, - {0x203F, "-\\\\"}, - {0x2197, ""}, - {0x2198, ""}, - {0x025D, "3`"}, + + /* Suprasegmental (15) incomplete */ + {0x02C8, "\""}, /* primary stress */ + {0x02CC, "%"}, /* secondary stress */ + {0x02D0, ":"}, /* long */ + {0x02D1, ":\\\\"}, /* half-long */ + {0x0306, "_X"}, /* extra short */ + + {0x2016, "||"}, /* major group */ + {0x203F, "-\\\\"}, /* bottom tie bar */ + {0x2197, ""}, /* global rise */ + {0x2198, ""}, /* global fall */ + {0x2193, ""}, /* downstep */ + {0x2191, ""}, /* upstep */ + {0x02E5, ""}, /* extra high level */ + {0x02E7, ""}, /* mid level */ + {0x02E9, ""}, /* extra low level */ + + {0x025D, "3`:"}, /* non-IPA %% */ /* Affricates (6) complete */ {0x02A3, "d_z"}, @@ -834,7 +999,7 @@ void CnvIPAPnt( const char16_t IPnt, char * XPnt ) int cnvIpaToXsampa( const char16_t * ipaString, size_t ipaStringSize, char ** outXsampaString ) { size_t xsize; /* size of result */ - int ipidx; /* index into IPA string */ + size_t ipidx; /* index into IPA string */ char * XPnt; /* short XSAMPA char sequence */ /* Convert an IPA string to an XSAMPA string and store the xsampa string in *outXsampaString. @@ -1269,6 +1434,7 @@ tts_result TtsEngine::synthesizeText( const char * text, int8_t * buffer, size_t int err; int cbret; pico_Char * inp = NULL; + char * expanded_text = NULL; pico_Char * local_text = NULL; short outbuf[MAX_OUTBUF_SIZE/2]; pico_Int16 bytes_sent, bytes_recv, text_remaining, out_data_type; @@ -1338,10 +1504,16 @@ tts_result TtsEngine::synthesizeText( const char * text, int8_t * buffer, size_t return TTS_FAILURE; } } else { + /* camelCase pre-processing */ + //expanded_text = doCamelCase(text); /* Add property tags to the string - if any. */ - local_text = (pico_Char *) doAddProperties( text ); + local_text = (pico_Char *) doAddProperties( text );//expanded_text ); + /*if (expanded_text) { + LOGV("freeing string for %s", expanded_text); + free( expanded_text ); + }*/ if (!local_text) { - LOGE("Failed to allocate memory for text string"); + LOGE("Failed to allocate memory for text string"); return TTS_FAILURE; } } @@ -1354,9 +1526,9 @@ tts_result TtsEngine::synthesizeText( const char * text, int8_t * buffer, size_t /* synthesis loop */ while (text_remaining) { - + if (picoSynthAbort) { - ret = pico_resetEngine( picoEngine ); + ret = pico_resetEngine( picoEngine, PICO_RESET_SOFT ); break; } @@ -1374,11 +1546,11 @@ tts_result TtsEngine::synthesizeText( const char * text, int8_t * buffer, size_t inp += bytes_sent; do { if (picoSynthAbort) { - ret = pico_resetEngine( picoEngine ); + ret = pico_resetEngine( picoEngine, PICO_RESET_SOFT ); break; } /* Retrieve the samples and add them to the buffer. */ - ret = pico_getData( picoEngine, (void *) outbuf, MAX_OUTBUF_SIZE, &bytes_recv, + ret = pico_getData( picoEngine, (void *) outbuf, MAX_OUTBUF_SIZE, &bytes_recv, &out_data_type ); if (bytes_recv) { if ((bufused + bytes_recv) <= bufferSize) { @@ -1391,7 +1563,7 @@ tts_result TtsEngine::synthesizeText( const char * text, int8_t * buffer, size_t if (cbret == TTS_CALLBACK_HALT) { LOGI("Halt requested by caller. Halting."); picoSynthAbort = 1; - ret = pico_resetEngine( picoEngine ); + ret = pico_resetEngine( picoEngine, PICO_RESET_SOFT ); break; } bufused = 0; @@ -1419,7 +1591,7 @@ tts_result TtsEngine::synthesizeText( const char * text, int8_t * buffer, size_t LOGV("Synth loop: sending TTS_SYNTH_DONE after error"); picoSynthDoneCBPtr( userdata, 16000, AudioSystem::PCM_16_BIT, 1, buffer, bufused, TTS_SYNTH_DONE); - pico_resetEngine( picoEngine ); + pico_resetEngine( picoEngine, PICO_RESET_SOFT ); return TTS_FAILURE; } } diff --git a/picolanginstaller/res/drawable/icon.png b/picolanginstaller/res/drawable/icon.png old mode 100755 new mode 100644 index cdb9e94..997d87b Binary files a/picolanginstaller/res/drawable/icon.png and b/picolanginstaller/res/drawable/icon.png differ diff --git a/picolanginstaller/res/values-cs/strings.xml b/picolanginstaller/res/values-cs/strings.xml index 6263d71..0480acc 100644 --- a/picolanginstaller/res/values-cs/strings.xml +++ b/picolanginstaller/res/values-cs/strings.xml @@ -19,6 +19,6 @@ "Instalace hlasových dat na kartu SD." "Hlasová data byla úspěšně nainstalována. Instalační program můžete bezpečně odebrat." "Odinstalovat" - "Instalace hlasových dat se nezdařila. Zkontrolujte, zda je karta SD v zařízení a obsahuje alespoň 6 MB volného místa. Je-li karta již v zařízení, odeberte ji a vložte znovu." + "Instalace hlasových dat se nezdařila. Zkontrolujte, zda je karta SD v zařízení a obsahuje alespoň 6 MB volného místa. Je-li karta již v zařízení, odeberte ji a vložte znovu." "Zkusit znovu" diff --git a/picolanginstaller/res/values-da/strings.xml b/picolanginstaller/res/values-da/strings.xml new file mode 100644 index 0000000..7244fbe --- /dev/null +++ b/picolanginstaller/res/values-da/strings.xml @@ -0,0 +1,24 @@ + + + + "Installationsprogram for talesyntesedata" + "Installation af stemmedata på SD-kort." + "Stemmedataene er installeret. Du kan nu fjerne dette installationsprogram." + "Afinstaller" + "Stemmedata kunne ikke installeres. Kontroller, at dit SD-kort sidder i enheden og har mindst 6 MB ledig plads. Hvis kortet allerede sidder i enheden, skal du prøve at fjerne kortet og indsætte det igen." + "Prøv igen" + diff --git a/picolanginstaller/res/values-de/strings.xml b/picolanginstaller/res/values-de/strings.xml index e6b4eac..0cc7b02 100644 --- a/picolanginstaller/res/values-de/strings.xml +++ b/picolanginstaller/res/values-de/strings.xml @@ -20,5 +20,5 @@ "Die Sprachdaten wurden erfolgreich installiert. Sie können dieses Installationsprogramm nun entfernen." "Deinstallieren" "Die Sprachdaten konnten nicht installiert werden. Stellen Sie sicher, dass sich die SD-Karte in Ihrem Gerät befindet und über mindestens 6 MB freien Speicherplatz verfügt. Wenn sich Ihre Karte bereits im Gerät befindet, entfernen Sie die Karte und setzen Sie sie dann wieder ein." - "Erneut versuchen" + "Wiederholen" diff --git a/picolanginstaller/res/values-el/strings.xml b/picolanginstaller/res/values-el/strings.xml new file mode 100644 index 0000000..b8a281b --- /dev/null +++ b/picolanginstaller/res/values-el/strings.xml @@ -0,0 +1,24 @@ + + + + "Πρόγραμμα εγκατάστασης δεδομένων σύνθεσης ομιλίας" + "Εγκατάσταση δεδομένων φωνής στην κάρτα SD." + "Η εγκατάσταση των δεδομένων φωνής ολοκληρώθηκε με επιτυχία. Μπορείτε τώρα να καταργήσετε το πρόγραμμα εγκατάστασης." + "Κατάργηση εγκατάστασης" + "Η εγκατάσταση των δεδομένων φωνής απέτυχε. Βεβαιωθείτε ότι η κάρτα SD είναι τοποθετημένη στη συσκευή σας και ότι έχει τουλάχιστον 6MB ελεύθερου χώρου. Εάν η κάρτα βρίσκεται ήδη στη συσκευή σας, δοκιμάστε να την αφαιρέσετε και να την τοποθετήσετε ξανά." + "Επανάληψη" + diff --git a/picolanginstaller/res/values-es-rUS/strings.xml b/picolanginstaller/res/values-es-rUS/strings.xml new file mode 100644 index 0000000..e9898be --- /dev/null +++ b/picolanginstaller/res/values-es-rUS/strings.xml @@ -0,0 +1,24 @@ + + + + "Instalador de datos de síntesis de voz" + "Instalando los datos de voz en la tarjeta SD" + "Los datos de voz se han instalado de manera exitosa. Ahora puedes suprimir este instalador de manera segura." + "Desinstalar..." + "No se pudo instalar los datos de voz de manera correcta. Asegúrate de que tu tarjeta SD esté en tu dispositivo y que tenga al menos 6MB de espacio libre. Si tu tarjeta ya está en tu dispositivo, intenta sacarla y volverla a insertar." + "Intentar nuevamente" + diff --git a/picolanginstaller/res/values-fr/strings.xml b/picolanginstaller/res/values-fr/strings.xml index b167ab0..a97df4f 100644 --- a/picolanginstaller/res/values-fr/strings.xml +++ b/picolanginstaller/res/values-fr/strings.xml @@ -19,6 +19,6 @@ "Installation des données de la fonction de synthèse vocale sur la carte SD" "Les données de la fonction de synthèse vocale ont été installées correctement. Vous pouvez maintenant supprimer ce programme d\'installation en toute sécurité." "Désinstaller" - "L\'installation des données de la fonction de synthèse vocale a échoué. Veuillez vérifier que vous avez bien inséré votre carte SD dans votre mobile et que celle-ci dispose d\'au moins 6 Mo d\'espace disponible. Si votre carte SD est déjà insérée dans votre appareil, essayez de la retirer et de la réinsérer." + "L\'installation des données de la fonction de synthèse vocale a échoué. Veuillez vérifier que vous avez bien inséré votre carte SD dans votre mobile et que celle-ci dispose d\'au moins 6 Mo d\'espace disponible. Si votre carte SD est déjà insérée dans l\'appareil, essayez de la retirer et de la réinsérer." "Réessayer" diff --git a/picolanginstaller/res/values-ja/strings.xml b/picolanginstaller/res/values-ja/strings.xml index 7480db0..2ea06b8 100644 --- a/picolanginstaller/res/values-ja/strings.xml +++ b/picolanginstaller/res/values-ja/strings.xml @@ -16,9 +16,9 @@ "音声合成データのインストーラ" - "音声データをSDカードにインストールしています。" + "音声データをSDカードにインストール中です。" "音声データは正常にインストールされました。これでこのインストーラを安全に削除できます。" "アンインストール" - "音声データをインストールできませんでした。最低6MBの空き容量があるSDカードが端末に挿入されていることを確認してください。既にSDカードが挿入されている場合は挿入し直してみてください。" + "音声データをインストールできませんでした。6MB以上の空き容量があるSDカードが端末に挿入されていることを確認してください。既にSDカードが挿入されている場合は、挿入し直してみてください。" "再試行" diff --git a/picolanginstaller/res/values-ko/strings.xml b/picolanginstaller/res/values-ko/strings.xml new file mode 100644 index 0000000..269d723 --- /dev/null +++ b/picolanginstaller/res/values-ko/strings.xml @@ -0,0 +1,24 @@ + + + + "음성 합성 데이터 설치 프로그램" + "SD 카드에 음성 데이터를 설치하는 중입니다." + "음성 데이터가 성공적으로 설치되었습니다. 이제 이 설치 프로그램을 안전하게 삭제할 수 있습니다." + "제거" + "음성 데이터가 설치되지 않았습니다. SD 카드가 장치에 삽입되어 있고 사용 가능한 공간이 6MB 이상인지 확인하시기 바랍니다. 카드가 이미 장치에 삽입되어 있으면 카드를 제거하고 다시 삽입해 보세요." + "다시 시도" + diff --git a/picolanginstaller/res/values-nb/strings.xml b/picolanginstaller/res/values-nb/strings.xml new file mode 100644 index 0000000..49fbed8 --- /dev/null +++ b/picolanginstaller/res/values-nb/strings.xml @@ -0,0 +1,24 @@ + + + + "Installasjonsprogram for tale-syntesedata" + "Installer stemmedata på SD-kort." + "Stemmedata er installert. Du kan fjerne dette installasjonsprogrammet nå." + "Avinstaller" + "Stemmedata kunne ikke installere. Kontroller at SD-kortet er i enheten, og at det har ledig plass på minst 6 MB. Hvis kortet er i enheten, prøv å ta ut kortet og sette det inn igjen." + "Prøv på nytt" + diff --git a/picolanginstaller/res/values-nl/strings.xml b/picolanginstaller/res/values-nl/strings.xml index 9236d72..0555896 100644 --- a/picolanginstaller/res/values-nl/strings.xml +++ b/picolanginstaller/res/values-nl/strings.xml @@ -19,6 +19,6 @@ "Stemgegevens installeren op SD-kaart." "De stemgegevens zijn geïnstalleerd. U kunt dit installatieprogramma nu veilig verwijderen." "Verwijderen" - "Het installeren van de stemgegevens is mislukt. Controleer of de SD-kaart in het apparaat is geplaatst en ten minste 6 MB vrije ruimte heeft. Als de kaart al in het apparaat is geplaatst, verwijdert u de kaart en plaatst u deze opnieuw." + "Het installeren van de stemgegevens is mislukt. Controleer of de SD-kaart in het apparaat is geplaatst en er ten minste 6 MB vrije ruimte beschikbaar is. Als de kaart al in het apparaat is geplaatst, verwijdert u de kaart en plaatst u deze opnieuw." "Opnieuw proberen" diff --git a/picolanginstaller/res/values-pl/strings.xml b/picolanginstaller/res/values-pl/strings.xml index aef790d..a6c69ad 100644 --- a/picolanginstaller/res/values-pl/strings.xml +++ b/picolanginstaller/res/values-pl/strings.xml @@ -20,5 +20,5 @@ "Dane głosowe zostały pomyślnie zainstalowane. Możesz teraz bezpiecznie usunąć ten program instalacyjny." "Odinstaluj" "Zainstalowanie danych głosowych nie powiodło się. Sprawdź, czy w urządzeniu znajduje się karta SD zawierająca co najmniej 6 MB wolnego miejsca. Jeśli karta znajduje się w urządzeniu, wyjmij ją i włóż ponownie." - "Ponów" + "Ponów próbę" diff --git a/picolanginstaller/res/values-pt-rPT/strings.xml b/picolanginstaller/res/values-pt-rPT/strings.xml new file mode 100644 index 0000000..11dae9b --- /dev/null +++ b/picolanginstaller/res/values-pt-rPT/strings.xml @@ -0,0 +1,24 @@ + + + + "Instalador de dados de reprodução de voz" + "A instalar dados de voz no cartão SD." + "Os dados de voz foram instalados com êxito. Agora já pode remover este instalador com segurança." + "Desinstalar" + "A instalação dos dados de voz falhou. Certifique-se de que o seu cartão SD está inserido no respectivo dispositivo e de que possui, pelo menos, 6 MB de espaço livre. Se o cartão já estiver no dispositivo, experimente retirá-lo e voltar a inseri-lo." + "Tentar novamente" + diff --git a/picolanginstaller/res/values-pt/strings.xml b/picolanginstaller/res/values-pt/strings.xml new file mode 100644 index 0000000..f224726 --- /dev/null +++ b/picolanginstaller/res/values-pt/strings.xml @@ -0,0 +1,24 @@ + + + + "Instalador de dados de sintetização de voz" + "Instalando os dados de voz no cartão SD." + "Os dados de voz foram instalados com êxito. O instalador já pode ser removido com segurança." + "Desinstalar" + "Falha na instalação dos dados de voz. Verifique se o seu cartão SD está no aparelho e tem no mínimo 6 MB de espaço livre. Se o cartão já estiver no seu dispositivo, remova-o e o insira novamente." + "Tentar novamente" + diff --git a/picolanginstaller/res/values-ru/strings.xml b/picolanginstaller/res/values-ru/strings.xml new file mode 100644 index 0000000..ab9e013 --- /dev/null +++ b/picolanginstaller/res/values-ru/strings.xml @@ -0,0 +1,24 @@ + + + + "Установщик данных синтезатора речи" + "Установка голосовых данных на SD-карте." + "Голосовые данные установлены успешно. Можно удалить установщик." + "Удалить" + "Произошел сбой при установке голосовых данных. Убедитесь, что на SD-карте вашего устройства имеется как минимум 6 МБ свободного пространства. Если карта уже находится в устройстве, попробуйте извлечь ее и снова вставить." + "Повторить попытку" + diff --git a/picolanginstaller/res/values-sv/strings.xml b/picolanginstaller/res/values-sv/strings.xml new file mode 100644 index 0000000..a951927 --- /dev/null +++ b/picolanginstaller/res/values-sv/strings.xml @@ -0,0 +1,24 @@ + + + + "Datainstallationsprogram för talsyntes" + "Installera röstdata på SD-kort." + "Röstdata har installerats. Du kan nu ta bort installationsprogrammet." + "Avinstallera" + "Röstdata kunde inte installeras. Kontrollera att SD-kortet i enheten har minst 6 MB ledigt utrymme. Om kortet redan sitter i enheten kan du pröva med att ta ut och sätta tillbaka det." + "Försök igen" + diff --git a/picolanginstaller/res/values-tr/strings.xml b/picolanginstaller/res/values-tr/strings.xml new file mode 100644 index 0000000..b210197 --- /dev/null +++ b/picolanginstaller/res/values-tr/strings.xml @@ -0,0 +1,24 @@ + + + + "Konuşma Sentezi Veri Yükleyicisi" + "Ses verileri SD karta yükleniyor." + "Ses verileri başarıyla yüklendi. Bu yükleyiciyi artık güvenle kaldırabilirsiniz." + "Kaldır" + "Ses verileri yüklenemedi. Lütfen SD kartınızın cihazınızda olduğundan ve en az 6 MB boş alan bulunduğundan emin olun. Kartınız zaten cihazınızdaysa kartı çıkarmayı ve yeniden takmayı deneyin." + "Tekrar Dene" + diff --git a/picolanginstaller/res/values-zh-rCN/strings.xml b/picolanginstaller/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000..1c14c74 --- /dev/null +++ b/picolanginstaller/res/values-zh-rCN/strings.xml @@ -0,0 +1,24 @@ + + + + "语音合成数据安装程序" + "正在将语音数据安装到 SD 卡上。" + "语音数据安装成功,现在可以安全地删除此安装程序。" + "卸载" + "语音数据安装失败。请确保已将 SD 卡插入您的设备,并至少有 6 MB 可用空间。如果您的 SD 卡已插入设备中,请尝试将其拔下并重新插入。" + "重试" + diff --git a/picolanginstaller/res/values-zh-rTW/strings.xml b/picolanginstaller/res/values-zh-rTW/strings.xml index 98b0646..5c0c8ab 100644 --- a/picolanginstaller/res/values-zh-rTW/strings.xml +++ b/picolanginstaller/res/values-zh-rTW/strings.xml @@ -19,6 +19,6 @@ "正在 SD 卡上安裝語音資料。" "已安裝語音資料,您可以移除安裝程式了。" "解除安裝" - "無法安裝語音資料,請確定您的手機已插入 SD 卡,且有 6MB 的可用空間。如果您已插入 SD 卡,請取出再重新插入一次。" + "無法安裝語音資料,請檢查手機是否已插入 SD 卡,以及是否有 6MB 的可用空間。如果您已插入 SD 卡,請取出再重新插入一次。" "重試" -- cgit v1.1