| void onSynthDataComplete(); | void onSynthDataComplete(); | ||||
| } | } | ||||
| public static class VoiceVariant { | |||||
| public final String variant; | |||||
| public final int gender; | |||||
| public final int age; | |||||
| protected VoiceVariant(String variant, int age) { | |||||
| if (variant.equals("male")) { | |||||
| this.variant = null; | |||||
| this.gender = GENDER_MALE; | |||||
| } else if (variant.equals("female")) { | |||||
| this.variant = null; | |||||
| this.gender = GENDER_FEMALE; | |||||
| } else { | |||||
| this.variant = variant; | |||||
| this.gender = GENDER_UNSPECIFIED; | |||||
| } | |||||
| this.age = age; | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| final String ret; | |||||
| if (gender == GENDER_MALE) { | |||||
| ret = "male"; | |||||
| } else if (gender == GENDER_FEMALE) { | |||||
| ret = "female"; | |||||
| } else { | |||||
| ret = variant; | |||||
| } | |||||
| if (age == AGE_YOUNG) { | |||||
| return ret + "-young"; | |||||
| } else if (age == AGE_OLD) { | |||||
| return ret + "-old"; | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| } | |||||
| public static VoiceVariant parseVoiceVariant(String value) { | |||||
| String[] parts = value.split("-"); | |||||
| int age = AGE_ANY; | |||||
| switch (parts.length) { | |||||
| case 1: // variant | |||||
| break; | |||||
| case 2: // variant-age | |||||
| age = parts[1].equals("young") ? AGE_YOUNG : AGE_OLD; | |||||
| break; | |||||
| default: | |||||
| return null; | |||||
| } | |||||
| return new VoiceVariant(parts[0], age); | |||||
| } | |||||
| public class Voice { | public class Voice { | ||||
| public final String name; | public final String name; | ||||
| public final String identifier; | public final String identifier; |
| final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); | final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); | ||||
| final String variantString = prefs.getString("espeak_variant", null); | final String variantString = prefs.getString("espeak_variant", null); | ||||
| final SpeechSynthesis.VoiceVariant variant; | |||||
| final VoiceVariant variant; | |||||
| if (variantString == null) { | if (variantString == null) { | ||||
| final int gender = getPreferenceValue(prefs, "default_gender", SpeechSynthesis.GENDER_MALE); | final int gender = getPreferenceValue(prefs, "default_gender", SpeechSynthesis.GENDER_MALE); | ||||
| if (gender == SpeechSynthesis.GENDER_FEMALE) { | if (gender == SpeechSynthesis.GENDER_FEMALE) { | ||||
| variant = SpeechSynthesis.parseVoiceVariant("default-female"); | |||||
| variant = VoiceVariant.parseVoiceVariant("default-female"); | |||||
| } else { | } else { | ||||
| variant = SpeechSynthesis.parseVoiceVariant("default-male"); | |||||
| variant = VoiceVariant.parseVoiceVariant("default-male"); | |||||
| } | } | ||||
| } else { | } else { | ||||
| variant = SpeechSynthesis.parseVoiceVariant(variantString); | |||||
| variant = VoiceVariant.parseVoiceVariant(variantString); | |||||
| } | } | ||||
| int rate = getPreferenceValue(prefs, "espeak_rate", Integer.MIN_VALUE); | int rate = getPreferenceValue(prefs, "espeak_rate", Integer.MIN_VALUE); |
| /* | |||||
| * Copyright (C) 2013 Reece H. Dunn | |||||
| * | |||||
| * 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; | |||||
| public class VoiceVariant { | |||||
| public final String variant; | |||||
| public final int gender; | |||||
| public final int age; | |||||
| protected VoiceVariant(String variant, int age) { | |||||
| if (variant.equals("male")) { | |||||
| this.variant = null; | |||||
| this.gender = SpeechSynthesis.GENDER_MALE; | |||||
| } else if (variant.equals("female")) { | |||||
| this.variant = null; | |||||
| this.gender = SpeechSynthesis.GENDER_FEMALE; | |||||
| } else { | |||||
| this.variant = variant; | |||||
| this.gender = SpeechSynthesis.GENDER_UNSPECIFIED; | |||||
| } | |||||
| this.age = age; | |||||
| } | |||||
| @Override | |||||
| public String toString() { | |||||
| final String ret; | |||||
| if (gender == SpeechSynthesis.GENDER_MALE) { | |||||
| ret = "male"; | |||||
| } else if (gender == SpeechSynthesis.GENDER_FEMALE) { | |||||
| ret = "female"; | |||||
| } else { | |||||
| ret = variant; | |||||
| } | |||||
| if (age == SpeechSynthesis.AGE_YOUNG) { | |||||
| return ret + "-young"; | |||||
| } else if (age == SpeechSynthesis.AGE_OLD) { | |||||
| return ret + "-old"; | |||||
| } | |||||
| return ret; | |||||
| } | |||||
| public static VoiceVariant parseVoiceVariant(String value) { | |||||
| String[] parts = value.split("-"); | |||||
| int age = SpeechSynthesis.AGE_ANY; | |||||
| switch (parts.length) { | |||||
| case 1: // variant | |||||
| break; | |||||
| case 2: // variant-age | |||||
| age = parts[1].equals("young") ? SpeechSynthesis.AGE_YOUNG : SpeechSynthesis.AGE_OLD; | |||||
| break; | |||||
| default: | |||||
| return null; | |||||
| } | |||||
| return new VoiceVariant(parts[0], age); | |||||
| } | |||||
| } |