am 39478b66: Fix the issue where the native lib for the Pico TTS engine gets copied both to /system/lib and the PicoTts.apk (where it gets installed to /data/data/com.svox.pico/lib/).
Merge commit '39478b6612978a244cb8dba87a78eccda8311454' into eclair
* commit '39478b6612978a244cb8dba87a78eccda8311454':
Fix the issue where the native lib for the Pico TTS engine gets
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 @@
} 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 @@
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 @@
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_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 @@
status = PICO_ERR_INVALID_HANDLE;
} else {
picoctrl_engResetExceptionManager((picoctrl_Engine) engine);
- status = picoctrl_engReset((picoctrl_Engine) engine);
+
+ if (r_mode<PICO_RESET_FULL) r_mode = PICO_RESET_FULL;
+ if (r_mode>PICO_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 @@
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 @@
* @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 @@
------------------------------------------------------------------*/
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;
+ cep->scmeanLFZ = (1 << (picoos_uint32) cep->scmeanpowLFZ);
+
+ cep->scmeanMGC = (1 << (picoos_uint32) cep->scmeanpowMGC);
+
+ }
/* constants used in makeWUWandWUm */
initSmoothing(cep);
- cep->scmeanpowLFZ = cep->pdflfz->bigpow - cep->pdflfz->meanpow;
- cep->scmeanpowMGC = cep->pdfmgc->bigpow - cep->pdfmgc->meanpow;
-
- cep->scmeanLFZ = (1 << (picoos_uint32) cep->scmeanpowLFZ);
-
- cep->scmeanMGC = (1 << (picoos_uint32) cep->scmeanpowMGC);
return PICO_OK;
}/*cepInitialize*/
@@ -461,7 +463,7 @@
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 @@
* @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 @@
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 @@
* @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 @@
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 @@
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 @@
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_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 @@
#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 @@
/*------------------------------------------------------------------
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 @@
* @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 @@
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 @@
}
}
}
+
+
/*-----------------------------------------------------------------
* MANAGE LINGWARE INITIALIZATION IF NEEDED
------------------------------------------------------------------*/
@@ -813,7 +820,7 @@
/*-----------------------------------------------------------------
* 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 @@
/* *****************************************************************************/
-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 @@
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 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 @@
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 @@
} 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 @@
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; i<PICOKNOW_MAX_NUM_WPHO_FSTS; i++) {
@@ -471,7 +476,7 @@
}
- saInitialize(this);
+ saInitialize(this, PICO_RESET_FULL);
return this;
}
diff --git a/pico/lib/picosig.c b/pico/lib/picosig.c
index be44b3c..4282e24 100644
--- a/pico/lib/picosig.c
+++ b/pico/lib/picosig.c
@@ -114,7 +114,7 @@
* @callgraph
* @callergraph
*/
-static pico_status_t sigInitialize(register picodata_ProcessingUnit this)
+static pico_status_t sigInitialize(register picodata_ProcessingUnit this, picoos_int32 r_mode)
{
sig_subobj_t *sig_subObj;
if (NULL == this || NULL == this->subObj) {
@@ -147,33 +147,40 @@
/*-----------------------------------------------------------------
* 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]);
+ 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;
+ 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 memory for DSP
- * ------------------------------------------------------------------*/
- sigDspInitialize(&(sig_subObj->sig_inner));
-
- /*-----------------------------------------------------------------
- * 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 @@
/*-----------------------------------------------------------------
* 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 @@
* @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 @@
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 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 @@
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 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 @@
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 @@
}
tok = (tok_subobj_t *) this->subObj;
*/
- return tokReset(this);
+ return tokReset(this, r_mode);
}
@@ -1508,7 +1508,7 @@
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 @@
} 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 @@
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 @@
return NULL;
}
- waInitialize(this);
+ waInitialize(this, PICO_RESET_FULL);
return this;
}
diff --git a/pico/tts/com_svox_picottsengine.cpp b/pico/tts/com_svox_picottsengine.cpp
index f7df2a4..41cfcdf 100644
--- a/pico/tts/com_svox_picottsengine.cpp
+++ b/pico/tts/com_svox_picottsengine.cpp
@@ -583,6 +583,157 @@
}
+/** 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 ((pos<textlen) && (strchr(seps,str[pos]) != NULL)) {
+ pos++;
+ }
+ if (pos == textlen) {
+ /*no characters != seps found whithin string*/
+ return 0;
+ }
+ *tokstart = pos;
+ /*look for end*/
+ while ((pos<textlen) && (strchr(seps,str[pos]) == NULL)) {
+ pos++;
+ }
+ *toklen = pos - *tokstart;
+ return 1;
+}/*get_tok*/
+
+
+/** get_sub_tok
+ * Searches for subtokens in a token having a compound structure with camel case like "xxxYyyy"
+ * @str - text to be processed
+ * @pos - position of first character to be searched in str
+ * @textlen - postion of last character to be searched in str
+ * @tokstart - address of a variable to receive the start of the sub token found
+ * @tokstart - address of a variable to receive the length of the sub token found
+ * return : 1=sub token found, 0=sub token not found
+ * notes : the sub token separator set could be enlarged adding characters in "seps"
+*/
+static int get_sub_tok(const char * str , int pos, int textlen, int *tokstart, int *toklen) {
+
+ const char * seps = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ if (pos == textlen) {
+ return 0;
+ }
+
+ /*first char != space*/
+ *tokstart = pos;
+ /*finding first non separator*/
+ while ((pos < textlen) && (strchr(seps, str[pos]) != NULL)) {
+ pos++;
+ }
+ if (pos == textlen) {
+ /*characters all in seps found whithin string : return full token*/
+ *toklen = pos - *tokstart;
+ return 1;
+ }
+ /*pos should be pointing to first non seps and more chars are there*/
+ /*finding first separator*/
+ while ((pos < textlen) && (strchr(seps, str[pos]) == NULL)) {
+ pos++;
+ }
+ if (pos == textlen) {
+ /*transition non seps->seps 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<textlen) && (str[pos]!=0)) {
+ while (get_tok(str, pos, textlen, &tokstart, &toklen)) {
+ tokpos = tokstart;
+ tlen_2 = 0;
+ nsubtok = 0;
+ while (get_sub_tok(str, tokpos, tokstart+toklen, &stokstart, &stoklen)) {
+ totlen += stoklen;
+ tlen_2 += stoklen;
+ tokpos = stokstart + stoklen;
+ nsubtok += 1;
+ }
+ totlen += nsubtok; /*add spaces between subtokens*/
+ pos = tokstart + tlen_2;
+ }
+ //}
+ /* Allocate the return string */
+ data = (char *) malloc( totlen ); /* allocate string */
+ if (!data) {
+ return NULL;
+ }
+ memset(data, 0, totlen); /* clear it */
+ outpos = 0;
+ pos = 0;
+ /*copying characters*/
+ //while ((pos<textlen) && (str[pos]!=0)) {
+ while (get_tok (str, pos, textlen, &tokstart, &toklen)) {
+ tokpos = tokstart;
+ tlen_2 = 0;
+ nsubtok = 0;
+ while (get_sub_tok(str, tokpos, tokstart+toklen, &stokstart, &stoklen)) {
+ strncpy(&(data[outpos]), &(str[stokstart]), stoklen);
+ outpos += stoklen;
+ strncpy(&(data[outpos]), " ", 1);
+ tlen_2 += stoklen;
+ outpos += 1;
+ tokpos = stokstart + stoklen;
+ }
+ pos=tokstart+tlen_2;
+ }
+ //}
+ data[outpos] = 0;
+ return data;
+}/*doCamelCase*/
+
+
/** createPhonemeString
* Wrap all individual words in <phoneme> tags.
* The Pico <phoneme> tag only supports one word in each tag,
@@ -834,7 +985,7 @@
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 +1420,7 @@
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,8 +1490,11 @@
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( expanded_text );
+ free( expanded_text );
if (!local_text) {
LOGE("Failed to allocate memory for text string");
return TTS_FAILURE;
@@ -1354,9 +1509,9 @@
/* synthesis loop */
while (text_remaining) {
-
+
if (picoSynthAbort) {
- ret = pico_resetEngine( picoEngine );
+ ret = pico_resetEngine( picoEngine, PICO_RESET_SOFT );
break;
}
@@ -1374,11 +1529,11 @@
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 +1546,7 @@
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 +1574,7 @@
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/values-cs/strings.xml b/picolanginstaller/res/values-cs/strings.xml
deleted file mode 100644
index 6263d71..0000000
--- a/picolanginstaller/res/values-cs/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"Instalační program pro data syntézy řeči"</string>
- <string name="installing_message" msgid="8792926973732354514">"Instalace hlasových dat na kartu SD."</string>
- <string name="uninstall_message" msgid="174096141356529599">"Hlasová data byla úspěšně nainstalována. Instalační program můžete bezpečně odebrat."</string>
- <string name="uninstall" msgid="6195983436684617741">"Odinstalovat"</string>
- <string name="retry_message" msgid="6519833625675608678">"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."</string>
- <string name="retry" msgid="7470276488993209974">"Zkusit znovu"</string>
-</resources>
diff --git a/picolanginstaller/res/values-de/strings.xml b/picolanginstaller/res/values-de/strings.xml
deleted file mode 100644
index e6b4eac..0000000
--- a/picolanginstaller/res/values-de/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"Installationsprogramm für Sprachsynthesedaten"</string>
- <string name="installing_message" msgid="8792926973732354514">"Sprachdaten werden auf der SD-Karte installiert."</string>
- <string name="uninstall_message" msgid="174096141356529599">"Die Sprachdaten wurden erfolgreich installiert. Sie können dieses Installationsprogramm nun entfernen."</string>
- <string name="uninstall" msgid="6195983436684617741">"Deinstallieren"</string>
- <string name="retry_message" msgid="6519833625675608678">"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."</string>
- <string name="retry" msgid="7470276488993209974">"Erneut versuchen"</string>
-</resources>
diff --git a/picolanginstaller/res/values-es/strings.xml b/picolanginstaller/res/values-es/strings.xml
deleted file mode 100644
index 11d1d31..0000000
--- a/picolanginstaller/res/values-es/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"Instalador de datos de síntesis de voz"</string>
- <string name="installing_message" msgid="8792926973732354514">"Instalando archivos de datos de voz en tarjeta SD..."</string>
- <string name="uninstall_message" msgid="174096141356529599">"Los archivos de datos de voz se han instalado correctamente. Puedes eliminar este instalador de forma segura."</string>
- <string name="uninstall" msgid="6195983436684617741">"Desinstalar"</string>
- <string name="retry_message" msgid="6519833625675608678">"No se han podido instalar los archivos de datos de voz. Asegúrate de que la tarjeta SD esté insertada en el dispositivo y tenga un mínimo de 6 MB de espacio libre. Si la tarjeta ya está insertada en el dispositivo, prueba a extraerla y volver a introducirla."</string>
- <string name="retry" msgid="7470276488993209974">"Reintentar"</string>
-</resources>
diff --git a/picolanginstaller/res/values-fr/strings.xml b/picolanginstaller/res/values-fr/strings.xml
deleted file mode 100644
index b167ab0..0000000
--- a/picolanginstaller/res/values-fr/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"Programme d\'installation des données de la fonction de synthèse vocale"</string>
- <string name="installing_message" msgid="8792926973732354514">"Installation des données de la fonction de synthèse vocale sur la carte SD"</string>
- <string name="uninstall_message" msgid="174096141356529599">"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é."</string>
- <string name="uninstall" msgid="6195983436684617741">"Désinstaller"</string>
- <string name="retry_message" msgid="6519833625675608678">"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."</string>
- <string name="retry" msgid="7470276488993209974">"Réessayer"</string>
-</resources>
diff --git a/picolanginstaller/res/values-it/strings.xml b/picolanginstaller/res/values-it/strings.xml
deleted file mode 100644
index c14592c..0000000
--- a/picolanginstaller/res/values-it/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"Programma di installazione dati di sintesi vocale"</string>
- <string name="installing_message" msgid="8792926973732354514">"Installazione dati vocali su scheda SD."</string>
- <string name="uninstall_message" msgid="174096141356529599">"I dati vocali sono stati installati correttamente. Ora puoi rimuovere in tutta sicurezza questo programma di installazione."</string>
- <string name="uninstall" msgid="6195983436684617741">"Disinstalla"</string>
- <string name="retry_message" msgid="6519833625675608678">"Installazione dati vocali non riuscita. Assicurati che la tua scheda SD sia nel dispositivo e contenga almeno 6 MB di spazio libero. Se la scheda è già nel dispositivo, prova a rimuoverla e a reinserirla."</string>
- <string name="retry" msgid="7470276488993209974">"Riprova"</string>
-</resources>
diff --git a/picolanginstaller/res/values-ja/strings.xml b/picolanginstaller/res/values-ja/strings.xml
deleted file mode 100644
index 7480db0..0000000
--- a/picolanginstaller/res/values-ja/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"音声合成データのインストーラ"</string>
- <string name="installing_message" msgid="8792926973732354514">"音声データをSDカードにインストールしています。"</string>
- <string name="uninstall_message" msgid="174096141356529599">"音声データは正常にインストールされました。これでこのインストーラを安全に削除できます。"</string>
- <string name="uninstall" msgid="6195983436684617741">"アンインストール"</string>
- <string name="retry_message" msgid="6519833625675608678">"音声データをインストールできませんでした。最低6MBの空き容量があるSDカードが端末に挿入されていることを確認してください。既にSDカードが挿入されている場合は挿入し直してみてください。"</string>
- <string name="retry" msgid="7470276488993209974">"再試行"</string>
-</resources>
diff --git a/picolanginstaller/res/values-nl/strings.xml b/picolanginstaller/res/values-nl/strings.xml
deleted file mode 100644
index 9236d72..0000000
--- a/picolanginstaller/res/values-nl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"Installatieprogramma voor spraaksynthesegegevens"</string>
- <string name="installing_message" msgid="8792926973732354514">"Stemgegevens installeren op SD-kaart."</string>
- <string name="uninstall_message" msgid="174096141356529599">"De stemgegevens zijn geïnstalleerd. U kunt dit installatieprogramma nu veilig verwijderen."</string>
- <string name="uninstall" msgid="6195983436684617741">"Verwijderen"</string>
- <string name="retry_message" msgid="6519833625675608678">"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."</string>
- <string name="retry" msgid="7470276488993209974">"Opnieuw proberen"</string>
-</resources>
diff --git a/picolanginstaller/res/values-pl/strings.xml b/picolanginstaller/res/values-pl/strings.xml
deleted file mode 100644
index aef790d..0000000
--- a/picolanginstaller/res/values-pl/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"Program instalacyjny danych syntezatora mowy"</string>
- <string name="installing_message" msgid="8792926973732354514">"Instalowanie danych głosowych na karcie SD."</string>
- <string name="uninstall_message" msgid="174096141356529599">"Dane głosowe zostały pomyślnie zainstalowane. Możesz teraz bezpiecznie usunąć ten program instalacyjny."</string>
- <string name="uninstall" msgid="6195983436684617741">"Odinstaluj"</string>
- <string name="retry_message" msgid="6519833625675608678">"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."</string>
- <string name="retry" msgid="7470276488993209974">"Ponów"</string>
-</resources>
diff --git a/picolanginstaller/res/values-zh-rTW/strings.xml b/picolanginstaller/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 98b0646..0000000
--- a/picolanginstaller/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="3853942104135735825">"語音合成資料安裝程式"</string>
- <string name="installing_message" msgid="8792926973732354514">"正在 SD 卡上安裝語音資料。"</string>
- <string name="uninstall_message" msgid="174096141356529599">"已安裝語音資料,您可以移除安裝程式了。"</string>
- <string name="uninstall" msgid="6195983436684617741">"解除安裝"</string>
- <string name="retry_message" msgid="6519833625675608678">"無法安裝語音資料,請確定您的手機已插入 SD 卡,且有 6MB 的可用空間。如果您已插入 SD 卡,請取出再重新插入一次。"</string>
- <string name="retry" msgid="7470276488993209974">"重試"</string>
-</resources>