summaryrefslogtreecommitdiffstats
path: root/pico
diff options
context:
space:
mode:
Diffstat (limited to 'pico')
-rwxr-xr-xpico/lang/de-DE_gl0_sg.binbin636008 -> 634996 bytes
-rwxr-xr-xpico/lang/de-DE_ta.binbin440732 -> 440732 bytes
-rwxr-xr-xpico/lang/en-US_lh0_sg.binbin793868 -> 777396 bytes
-rwxr-xr-xpico/lang/en-US_ta.binbin650668 -> 650668 bytes
-rwxr-xr-xpico/lang/es-ES_ta.binbin256744 -> 256744 bytes
-rwxr-xr-xpico/lang/es-ES_zl0_sg.binbin600672 -> 605280 bytes
-rwxr-xr-xpico/lang/fr-FR_nk0_sg.binbin595056 -> 833236 bytes
-rwxr-xr-xpico/lang/fr-FR_ta.binbin381936 -> 381936 bytes
-rwxr-xr-xpico/src/com/svox/pico/CheckVoiceData.java63
-rw-r--r--pico/tests/data/tests_regressions_es-ES.txt20
-rw-r--r--pico/tests/data/xsampa_pico_man_de-DE.txt4
-rw-r--r--pico/tests/data/xsampa_pico_man_en-GB.txt4
-rw-r--r--pico/tests/data/xsampa_pico_man_en-US.txt4
-rw-r--r--pico/tests/data/xsampa_pico_man_fr-FR.txt16
-rw-r--r--pico/tts/com_svox_picottsengine.cpp10
15 files changed, 96 insertions, 25 deletions
diff --git a/pico/lang/de-DE_gl0_sg.bin b/pico/lang/de-DE_gl0_sg.bin
index 5305b49..1655704 100755
--- a/pico/lang/de-DE_gl0_sg.bin
+++ b/pico/lang/de-DE_gl0_sg.bin
Binary files differ
diff --git a/pico/lang/de-DE_ta.bin b/pico/lang/de-DE_ta.bin
index cd59da7..3cb978a 100755
--- a/pico/lang/de-DE_ta.bin
+++ b/pico/lang/de-DE_ta.bin
Binary files differ
diff --git a/pico/lang/en-US_lh0_sg.bin b/pico/lang/en-US_lh0_sg.bin
index 91487cc..b2dfc39 100755
--- a/pico/lang/en-US_lh0_sg.bin
+++ b/pico/lang/en-US_lh0_sg.bin
Binary files differ
diff --git a/pico/lang/en-US_ta.bin b/pico/lang/en-US_ta.bin
index 95cb042..943f57e 100755
--- a/pico/lang/en-US_ta.bin
+++ b/pico/lang/en-US_ta.bin
Binary files differ
diff --git a/pico/lang/es-ES_ta.bin b/pico/lang/es-ES_ta.bin
index dfa3c55..3442eed 100755
--- a/pico/lang/es-ES_ta.bin
+++ b/pico/lang/es-ES_ta.bin
Binary files differ
diff --git a/pico/lang/es-ES_zl0_sg.bin b/pico/lang/es-ES_zl0_sg.bin
index f29f6b1..c70257c 100755
--- a/pico/lang/es-ES_zl0_sg.bin
+++ b/pico/lang/es-ES_zl0_sg.bin
Binary files differ
diff --git a/pico/lang/fr-FR_nk0_sg.bin b/pico/lang/fr-FR_nk0_sg.bin
index bf5467d..9a11e2b 100755
--- a/pico/lang/fr-FR_nk0_sg.bin
+++ b/pico/lang/fr-FR_nk0_sg.bin
Binary files differ
diff --git a/pico/lang/fr-FR_ta.bin b/pico/lang/fr-FR_ta.bin
index 117dbe3..6d4d72e 100755
--- a/pico/lang/fr-FR_ta.bin
+++ b/pico/lang/fr-FR_ta.bin
Binary files differ
diff --git a/pico/src/com/svox/pico/CheckVoiceData.java b/pico/src/com/svox/pico/CheckVoiceData.java
index 036be3b..abd85ab 100755
--- a/pico/src/com/svox/pico/CheckVoiceData.java
+++ b/pico/src/com/svox/pico/CheckVoiceData.java
@@ -21,8 +21,12 @@ import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.os.Environment;
import android.speech.tts.TextToSpeech;
+import java.util.ArrayList;
+import java.util.HashMap;
+
/*
* Checks if the voice data for the SVOX Pico Engine is present on the
* sd card.
@@ -31,7 +35,8 @@ public class CheckVoiceData extends Activity {
// The following constants are the same path constants as the ones defined
// in external/svox/pico/tts/com_svox_picottsengine.cpp
- private final static String PICO_LINGWARE_PATH = "/sdcard/svox/";
+ private final static String PICO_LINGWARE_PATH =
+ Environment.getExternalStorageDirectory() + "/svox/";
private final static String PICO_SYSTEM_LINGWARE_PATH = "/system/tts/lang_pico/";
private final static String[] dataFiles = {
@@ -45,29 +50,75 @@ public class CheckVoiceData extends Activity {
"spa-ESP", "spa-ESP", "fra-FRA", "fra-FRA", "ita-ITA", "ita-ITA"
};
+ private final static String[] supportedLanguages = {
+ "deu-DEU", "eng-GBR", "eng-USA", "spa-ESP", "fra-FRA", "ita-ITA"
+ };
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int result = TextToSpeech.Engine.CHECK_VOICE_DATA_PASS;
+ boolean foundMatch = false;
+
+ ArrayList<String> available = new ArrayList<String>();
+ ArrayList<String> unavailable = new ArrayList<String>();
+
+ HashMap<String, Boolean> languageCountry = new HashMap<String, Boolean>();
+
+ Bundle bundle = getIntent().getExtras();
+ if (bundle != null){
+ // TODO (clchen): Add this intent to TextToSpeech.Engine
+ ArrayList<String> langCountryVars = bundle.getStringArrayList(
+ "TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR");
+ if (langCountryVars != null){
+ for (int i = 0; i < langCountryVars.size(); i++){
+ if (langCountryVars.get(i).length() > 0){
+ languageCountry.put(langCountryVars.get(i), true);
+ }
+ }
+ }
+ }
// Check for files
- for (int i = 0; i < dataFiles.length; i++) {
- File tempFile = new File(PICO_LINGWARE_PATH + dataFiles[i]);
- File tempFileSys = new File(PICO_SYSTEM_LINGWARE_PATH + dataFiles[i]);
- if ((!tempFile.exists()) && (!tempFileSys.exists())) {
- result = TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA;
+ for (int i = 0; i < supportedLanguages.length; i++){
+ if ((languageCountry.size() < 1) ||
+ (languageCountry.containsKey(supportedLanguages[i]))){
+ if (!fileExists(dataFiles[2 * i]) ||
+ !fileExists(dataFiles[(2 * i) + 1])){
+ result = TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA;
+ unavailable.add(supportedLanguages[i]);
+ } else {
+ available.add(supportedLanguages[i]);
+ foundMatch = true;
+ }
}
}
+ if ((languageCountry.size() > 0) && !foundMatch){
+ result = TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL;
+ }
+
// Put the root directory for the sd card data + the data filenames
Intent returnData = new Intent();
returnData.putExtra(TextToSpeech.Engine.EXTRA_VOICE_DATA_ROOT_DIRECTORY, PICO_LINGWARE_PATH);
returnData.putExtra(TextToSpeech.Engine.EXTRA_VOICE_DATA_FILES, dataFiles);
returnData.putExtra(TextToSpeech.Engine.EXTRA_VOICE_DATA_FILES_INFO, dataFilesInfo);
+ // TODO (clchen): Add these intents to TextToSpeech.Engine
+ returnData.putStringArrayListExtra("TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES", available);
+ returnData.putStringArrayListExtra("TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES", unavailable);
setResult(result, returnData);
finish();
}
+ private boolean fileExists(String filename){
+ File tempFile = new File(PICO_LINGWARE_PATH + filename);
+ File tempFileSys = new File(PICO_SYSTEM_LINGWARE_PATH + filename);
+ if ((!tempFile.exists()) && (!tempFileSys.exists())) {
+ return false;
+ }
+ return true;
+ }
+
}
diff --git a/pico/tests/data/tests_regressions_es-ES.txt b/pico/tests/data/tests_regressions_es-ES.txt
new file mode 100644
index 0000000..f44d8dc
--- /dev/null
+++ b/pico/tests/data/tests_regressions_es-ES.txt
@@ -0,0 +1,20 @@
+
+# BEGIN_TEST
+
+#------------------------------
+# Spanish (es-ES)
+#
+# Notes: These tests cover known issues and previous bugs that have been fixed. Those
+# latter are to be used for regression testing
+# When a test is marked as "BUG", if possible, the tester will capture an approximate
+# transcription of what was heard inside [ ].
+
+# TEST (old bug: burst of noise at end of sentence)
+<speak xml:lang="es-ES">El sintetizador de voz</speak>
+
+# END_TEST
+
+
+# ---------
+
+
diff --git a/pico/tests/data/xsampa_pico_man_de-DE.txt b/pico/tests/data/xsampa_pico_man_de-DE.txt
index 4e9690b..1182394 100644
--- a/pico/tests/data/xsampa_pico_man_de-DE.txt
+++ b/pico/tests/data/xsampa_pico_man_de-DE.txt
@@ -71,8 +71,8 @@
# TEST s Masse "ma.s@
<speak xml:lang="de-DE"> Ich teste <phoneme alphabet="xsampa" ph="&#34;ma.s@"/>.</speak>
-# BUG v Wahl "va:l says [val], [a] should be long
-<speak xml:lang="de-DE"> Ich teste <phoneme alphabet="xsampa" ph="&#34;va:l"/>.</speak>
+# TEST v Wahl "va:l says [val]
+<speak xml:lang="de-DE"> Ich teste <phoneme alphabet="xsampa" ph="&#34;va:l"/>. Ein Wahl.</speak>
# TEST x Bach "bax
<speak xml:lang="de-DE"> Ich teste <phoneme alphabet="xsampa" ph="&#34;bax"/>.</speak>
diff --git a/pico/tests/data/xsampa_pico_man_en-GB.txt b/pico/tests/data/xsampa_pico_man_en-GB.txt
index fbee754..b65af3a 100644
--- a/pico/tests/data/xsampa_pico_man_en-GB.txt
+++ b/pico/tests/data/xsampa_pico_man_en-GB.txt
@@ -197,7 +197,7 @@
<speak xml:lang="en-GB"> Testing <phoneme alphabet="xsampa" ph="&#34;mE.Z@`"/>.</speak>
<speak xml:lang="en-GB"> Testing <phoneme alphabet="xsampa" ph="&#34;mE.Z@"/>.</speak>
-# BUG A: (US) long "lA:N says [lang]
+# TEST A: (US) long "lA:N
<speak xml:lang="en-GB"> Testing <phoneme alphabet="xsampa" ph="&#34;lA:N"/>.</speak>
# TEST A:r\ (US) A:(GB) stars "stA:r\z
@@ -247,7 +247,7 @@
# TEST j yacht "jA:t
<speak xml:lang="en-GB"> Testing <phoneme alphabet="xsampa" ph="&#34;jA:t"/>.</speak>
-# BUG l long "lA:N
+# TEST l long "lA:N
<speak xml:lang="en-GB"> Testing <phoneme alphabet="xsampa" ph="&#34;lA:N"/>.</speak>
# TEST w wasp "wA:sp
diff --git a/pico/tests/data/xsampa_pico_man_en-US.txt b/pico/tests/data/xsampa_pico_man_en-US.txt
index 74ed371..6f477a2 100644
--- a/pico/tests/data/xsampa_pico_man_en-US.txt
+++ b/pico/tests/data/xsampa_pico_man_en-US.txt
@@ -87,8 +87,8 @@
# TEST j yacht "jA:t
<speak xml:lang="en-US"> Testing <phoneme alphabet="xsampa" ph="&#34;jA:t"/>.</speak>
-# BUG l long "lA:N says [lang]
-<speak xml:lang="en-US"> Testing <phoneme alphabet="xsampa" ph="&#34;lA:N"/>.</speak>
+# TEST l long "lA:N
+<speak xml:lang="en-US"> Testing <phoneme alphabet="xsampa" ph="&#34;lA:N"/>. And long.</speak>
# TEST l= little "lI.tl=
<speak xml:lang="en-US"> Testing <phoneme alphabet="xsampa" ph="&#34;lI.tl= "/>.</speak>
diff --git a/pico/tests/data/xsampa_pico_man_fr-FR.txt b/pico/tests/data/xsampa_pico_man_fr-FR.txt
index 6cf6d1a..f6485e3 100644
--- a/pico/tests/data/xsampa_pico_man_fr-FR.txt
+++ b/pico/tests/data/xsampa_pico_man_fr-FR.txt
@@ -75,20 +75,20 @@
# --------- Approximants
-# BUG H juin "ZHE~ says [j'lin]
-<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;ZHE~"/>.</speak>
+# TEST H juin "ZHE~
+<speak xml:lang="fr-FR"> Le mois de <phoneme alphabet="xsampa" ph="&#34;ZHE~"/>, et de juin.</speak>
# TEST j pierre "pjER
<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;pjER"/>.</speak>
-# BUG l long "lO~ says [ion]
-<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;lO~"/>.</speak>
+# TEST l long "lO~
+<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;lO~"/>, long, et longtemps.</speak>
-# TEST l long "lO~ works only in a sentence (here also used to say "longtemps")
+# TEST l long "lO~ used here in a sentence (to say "longtemps")
<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;lO~"/> et <phoneme alphabet="xsampa" ph="&#34;lO~tA~"/>.</speak>
-# BUG w coin "kwE~ says [keu'oin]
-<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;kwE~"/>.</speak>
+# TEST w coin "kwE~
+<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;kwE~"/>, et coin.</speak>
# --------- Vowels
@@ -103,7 +103,7 @@
<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;Zys.t@.mA~"/>.</speak>
# BUG E seize "sEz says [seisse]
-<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;sEz"/>.</speak>
+<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;sEz"/>, et seize, et césar.</speak>
# TEST O comme "kOm
<speak xml:lang="fr-FR"> Je teste <phoneme alphabet="xsampa" ph="&#34;kOm"/>.</speak>
diff --git a/pico/tts/com_svox_picottsengine.cpp b/pico/tts/com_svox_picottsengine.cpp
index 6fb0ac7..450ebcb 100644
--- a/pico/tts/com_svox_picottsengine.cpp
+++ b/pico/tts/com_svox_picottsengine.cpp
@@ -730,7 +730,7 @@ static char * doCamelCase( const char * str )
pos=tokstart+tlen_2;
}
//}
- data[outpos] = 0;
+ data[outpos -1] = 0;
return data;
}/*doCamelCase*/
@@ -1505,13 +1505,13 @@ tts_result TtsEngine::synthesizeText( const char * text, int8_t * buffer, size_t
}
} else {
/* camelCase pre-processing */
- //expanded_text = doCamelCase(text);
+ expanded_text = doCamelCase(text);
/* Add property tags to the string - if any. */
- local_text = (pico_Char *) doAddProperties( text );//expanded_text );
- /*if (expanded_text) {
+ local_text = (pico_Char *) doAddProperties( 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");
return TTS_FAILURE;