| import java.util.Set; | import java.util.Set; | ||||
| import com.reecedunn.espeak.SpeechSynthesis; | import com.reecedunn.espeak.SpeechSynthesis; | ||||
| import com.reecedunn.espeak.SpeechSynthesis.Voice; | |||||
| import com.reecedunn.espeak.Voice; | |||||
| import android.content.Intent; | import android.content.Intent; | ||||
| import android.content.pm.ActivityInfo; | import android.content.pm.ActivityInfo; |
| import android.util.Log; | import android.util.Log; | ||||
| import com.reecedunn.espeak.SpeechSynthesis.SynthReadyCallback; | import com.reecedunn.espeak.SpeechSynthesis.SynthReadyCallback; | ||||
| import com.reecedunn.espeak.SpeechSynthesis.Voice; | |||||
| import java.io.ByteArrayOutputStream; | import java.io.ByteArrayOutputStream; | ||||
| import java.io.File; | import java.io.File; |
| import android.content.Context; | import android.content.Context; | ||||
| import android.content.res.Configuration; | import android.content.res.Configuration; | ||||
| import android.content.res.Resources; | import android.content.res.Resources; | ||||
| import android.speech.tts.TextToSpeech; | |||||
| import android.util.DisplayMetrics; | import android.util.DisplayMetrics; | ||||
| import android.util.Log; | import android.util.Log; | ||||
| void onSynthDataComplete(); | void onSynthDataComplete(); | ||||
| } | } | ||||
| public class Voice { | |||||
| public final String name; | |||||
| public final String identifier; | |||||
| public final int gender; | |||||
| public final int age; | |||||
| public final Locale locale; | |||||
| public Voice(String name, String identifier, int gender, int age, Locale locale) { | |||||
| this.name = name; | |||||
| this.identifier = identifier; | |||||
| this.gender = gender; | |||||
| this.age = age; | |||||
| this.locale = locale; | |||||
| } | |||||
| /** | |||||
| * Attempts a partial match against a query locale. | |||||
| * | |||||
| * @param query The locale to match. | |||||
| * @return A text-to-speech availability code. One of: | |||||
| * <ul> | |||||
| * <li>{@link TextToSpeech#LANG_NOT_SUPPORTED} | |||||
| * <li>{@link TextToSpeech#LANG_AVAILABLE} | |||||
| * <li>{@link TextToSpeech#LANG_COUNTRY_AVAILABLE} | |||||
| * <li>{@link TextToSpeech#LANG_COUNTRY_VAR_AVAILABLE} | |||||
| * </ul> | |||||
| */ | |||||
| public int match(Locale query) { | |||||
| if (!locale.getISO3Language().equals(query.getISO3Language())) { | |||||
| return TextToSpeech.LANG_NOT_SUPPORTED; | |||||
| } else if (!locale.getISO3Country().equals(query.getISO3Country())) { | |||||
| return TextToSpeech.LANG_AVAILABLE; | |||||
| } else if (!locale.getVariant().equals(query.getVariant())) { | |||||
| return TextToSpeech.LANG_COUNTRY_AVAILABLE; | |||||
| } else { | |||||
| return TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE; | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| return locale.toString().replace('_', '-'); | |||||
| } | |||||
| } | |||||
| private static String getIanaLocaleCode(String code, final Map<String, String> javaToIana) { | private static String getIanaLocaleCode(String code, final Map<String, String> javaToIana) { | ||||
| final String iana = javaToIana.get(code); | final String iana = javaToIana.get(code); | ||||
| if (iana != null) { | if (iana != null) { |
| import android.util.Log; | import android.util.Log; | ||||
| import com.reecedunn.espeak.SpeechSynthesis.SynthReadyCallback; | import com.reecedunn.espeak.SpeechSynthesis.SynthReadyCallback; | ||||
| import com.reecedunn.espeak.SpeechSynthesis.Voice; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Locale; | import java.util.Locale; |
| /* | |||||
| * Copyright (C) 2012-2013 Reece H. Dunn | |||||
| * Copyright (C) 2011 Google Inc. | |||||
| * | |||||
| * 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. | |||||
| */ | |||||
| package com.reecedunn.espeak; | |||||
| import java.util.Locale; | |||||
| import android.speech.tts.TextToSpeech; | |||||
| public class Voice { | |||||
| public final String name; | |||||
| public final String identifier; | |||||
| public final int gender; | |||||
| public final int age; | |||||
| public final Locale locale; | |||||
| public Voice(String name, String identifier, int gender, int age, Locale locale) { | |||||
| this.name = name; | |||||
| this.identifier = identifier; | |||||
| this.gender = gender; | |||||
| this.age = age; | |||||
| this.locale = locale; | |||||
| } | |||||
| /** | |||||
| * Attempts a partial match against a query locale. | |||||
| * | |||||
| * @param query The locale to match. | |||||
| * @return A text-to-speech availability code. One of: | |||||
| * <ul> | |||||
| * <li>{@link TextToSpeech#LANG_NOT_SUPPORTED} | |||||
| * <li>{@link TextToSpeech#LANG_AVAILABLE} | |||||
| * <li>{@link TextToSpeech#LANG_COUNTRY_AVAILABLE} | |||||
| * <li>{@link TextToSpeech#LANG_COUNTRY_VAR_AVAILABLE} | |||||
| * </ul> | |||||
| */ | |||||
| public int match(Locale query) { | |||||
| if (!locale.getISO3Language().equals(query.getISO3Language())) { | |||||
| return TextToSpeech.LANG_NOT_SUPPORTED; | |||||
| } else if (!locale.getISO3Country().equals(query.getISO3Country())) { | |||||
| return TextToSpeech.LANG_AVAILABLE; | |||||
| } else if (!locale.getVariant().equals(query.getVariant())) { | |||||
| return TextToSpeech.LANG_COUNTRY_AVAILABLE; | |||||
| } else { | |||||
| return TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE; | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| return locale.toString().replace('_', '-'); | |||||
| } | |||||
| } |