/tts/src/com/google/tts/CheckVoiceData.java
Java | 136 lines | 97 code | 17 blank | 22 comment | 8 complexity | d580db9c5fecbbb806d45d4c2e784a04 MD5 | raw file
1/* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.google.tts; 18 19import java.io.File; 20 21import android.app.Activity; 22import android.content.Intent; 23import android.os.Bundle; 24import android.os.Environment; 25import android.speech.tts.TextToSpeech; 26 27import java.util.ArrayList; 28import java.util.HashMap; 29 30/* 31 * Checks if the voice data for the SVOX Pico Engine is present on the 32 * sd card. 33 */ 34public class CheckVoiceData extends Activity { 35 36 // The following constants are the same path constants as the ones defined 37 // in external/svox/pico/tts/com_svox_picottsengine.cpp 38 private final static String ESPEAK_DATA_PATH = Environment.getExternalStorageDirectory() 39 + "/espeak-data/"; 40 41 private final static String[] baseDataFiles = { 42 "af_dict", "config", "cs_dict", "cy_dict", "de_dict", "el_dict", "en_dict", "eo_dict", 43 "es_dict", "fi_dict", "fr_dict", "grc_dict", "hbs_dict", "hi_dict", "hu_dict", 44 "id_dict", "is_dict", "it_dict", "jbo_dict", "ku_dict", "la_dict", "mk_dict", 45 "nl_dict", "no_dict", "phondata", "phonindex", "phontab", "pl_dict", "pt_dict", 46 "ro_dict", "ru_dict", "sk_dict", "sv_dict", "sw_dict", "ta_dict", "tr_dict", "vi_dict", 47 "zh_dict", "zhy_dict", "mbrola/dummyfile", "mbrola_ph/af1_phtrans", 48 "mbrola_ph/ca1_phtrans", "mbrola_ph/cr1_phtrans", "mbrola_ph/cs_phtrans", 49 "mbrola_ph/de2_phtrans", "mbrola_ph/de4_phtrans", "mbrola_ph/de6_phtrans", 50 "mbrola_ph/en1_phtrans", "mbrola_ph/es_phtrans", "mbrola_ph/es4_phtrans", 51 "mbrola_ph/fr1_phtrans", "mbrola_ph/gr2_phtrans", "mbrola_ph/grc-de6_phtrans", 52 "mbrola_ph/hu1_phtrans", "mbrola_ph/id1_phtrans", "mbrola_ph/in1_phtrans", 53 "mbrola_ph/it3_phtrans", "mbrola_ph/la1_phtrans", "mbrola_ph/nl_phtrans", 54 "mbrola_ph/pl1_phtrans", "mbrola_ph/pt_phtrans", "mbrola_ph/ptbr_phtrans", 55 "mbrola_ph/ptbr4_phtrans", "mbrola_ph/ro1_phtrans", "mbrola_ph/sv_phtrans", 56 "mbrola_ph/sv2_phtrans", "mbrola_ph/us_phtrans", "mbrola_ph/us3_phtrans", 57 "soundicons/dummyfile", "voices/af", "voices/bs", "voices/cs", "voices/cy", 58 "voices/de", "voices/default", "voices/el", "voices/eo", "voices/es", "voices/es-la", 59 "voices/fi", "voices/fr", "voices/fr-be", "voices/grc", "voices/hi", "voices/hr", 60 "voices/hu", "voices/id", "voices/is", "voices/it", "voices/jbo", "voices/ku", 61 "voices/la", "voices/mk", "voices/nl", "voices/no", "voices/pl", "voices/pt", 62 "voices/pt-pt", "voices/ro", "voices/ru", "voices/sk", "voices/sr", "voices/sv", 63 "voices/sw", "voices/ta", "voices/tr", "voices/vi", "voices/zh", "voices/zhy", 64 "voices/!v/croak", "voices/!v/f1", "voices/!v/f2", "voices/!v/f3", "voices/!v/f4", 65 "voices/!v/m1", "voices/!v/m2", "voices/!v/m3", "voices/!v/m4", "voices/!v/m5", 66 "voices/!v/m6", "voices/!v/whisper", "voices/en/en", "voices/en/en-n", 67 "voices/en/en-r", "voices/en/en-rp", "voices/en/en-sc", "voices/en/en-wi", 68 "voices/en/en-wm", "voices/mb/mb-af1", "voices/mb/mb-af1-en", "voices/mb/mb-br1", 69 "voices/mb/mb-br3", "voices/mb/mb-br4", "voices/mb/mb-cr1", "voices/mb/mb-cz2", 70 "voices/mb/mb-de2", "voices/mb/mb-de4", "voices/mb/mb-de4-en", "voices/mb/mb-de5", 71 "voices/mb/mb-de5-en", "voices/mb/mb-de6", "voices/mb/mb-de6-grc", "voices/mb/mb-de7", 72 "voices/mb/mb-en1", "voices/mb/mb-es1", "voices/mb/mb-es2", "voices/mb/mb-fr1", 73 "voices/mb/mb-fr1-en", "voices/mb/mb-fr4", "voices/mb/mb-fr4-en", "voices/mb/mb-gr2", 74 "voices/mb/mb-gr2-en", "voices/mb/mb-hu1", "voices/mb/mb-hu1-en", "voices/mb/mb-id1", 75 "voices/mb/mb-it3", "voices/mb/mb-it4", "voices/mb/mb-la1", "voices/mb/mb-nl2", 76 "voices/mb/mb-nl2-en", "voices/mb/mb-pl1", "voices/mb/mb-pl1-en", "voices/mb/mb-ro1", 77 "voices/mb/mb-ro1-en", "voices/mb/mb-sw1", "voices/mb/mb-sw1-en", "voices/mb/mb-sw2", 78 "voices/mb/mb-sw2-en", "voices/mb/mb-us1", "voices/mb/mb-us2", "voices/mb/mb-us3" 79 }; 80 81 private final static String[] supportedLanguages = { 82 "afr", "bos", "zho", "hrv", "ces", "nld", "eng", "eng-USA", "eng-GBR", 83 "epo", "fin", "fra", "deu", "ell", "hin", "hun", "isl", "ind", "ita", "kur", "lat", 84 "mkd", "nor", "pol", "por", "ron", "rus", "srp", "slk", "spa", "spa-MEX", "swa", "swe", 85 "tam", "tur", "vie", "cym" 86 }; 87 88 89 @Override 90 protected void onCreate(Bundle savedInstanceState) { 91 super.onCreate(savedInstanceState); 92 int result = TextToSpeechBeta.Engine.CHECK_VOICE_DATA_PASS; 93 Intent returnData = new Intent(); 94 returnData.putExtra(TextToSpeechBeta.Engine.EXTRA_VOICE_DATA_ROOT_DIRECTORY, ESPEAK_DATA_PATH); 95 returnData.putExtra(TextToSpeechBeta.Engine.EXTRA_VOICE_DATA_FILES, baseDataFiles); 96 returnData.putExtra(TextToSpeechBeta.Engine.EXTRA_VOICE_DATA_FILES_INFO, baseDataFiles); 97 98 ArrayList<String> available = new ArrayList<String>(); 99 ArrayList<String> unavailable = new ArrayList<String>(); 100 101 // TODO (clchen): Check each language INDIVIDUALLY 102 boolean passedAllChecks = true; 103 104 for (int i = 0; i < baseDataFiles.length; i++) { 105 if (!fileExists(baseDataFiles[i])) { 106 passedAllChecks = false; 107 break; 108 } 109 } 110 111 if (passedAllChecks) { 112 for (int i = 0; i < supportedLanguages.length; i++) { 113 available.add(supportedLanguages[i]); 114 } 115 } else { 116 for (int i = 0; i < supportedLanguages.length; i++) { 117 unavailable.add(supportedLanguages[i]); 118 } 119 } 120 121 returnData.putStringArrayListExtra("availableVoices", available); 122 returnData.putStringArrayListExtra("unavailableVoices", unavailable); 123 setResult(result, returnData); 124 finish(); 125 } 126 127 private boolean fileExists(String filename) { 128 File tempFile = new File(ESPEAK_DATA_PATH + filename); 129 File tempFileSys = new File(ESPEAK_DATA_PATH + filename); 130 if ((!tempFile.exists()) && (!tempFileSys.exists())) { 131 return false; 132 } 133 return true; 134 } 135 136}