Browse Source

TtsService.java: Make onSynthesizeText use VoiceSettings to get the voice parameters.

master
Reece H. Dunn 12 years ago
parent
commit
3cde1f7e6a
1 changed files with 8 additions and 47 deletions
  1. 8
    47
      android/src/com/reecedunn/espeak/TtsService.java

+ 8
- 47
android/src/com/reecedunn/espeak/TtsService.java View File

@@ -214,37 +214,6 @@ public class TtsService extends TextToSpeechService {
if (text == null)
return;

final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
final String variantString = prefs.getString("espeak_variant", null);
final VoiceVariant variant;
if (variantString == null) {
final int gender = getPreferenceValue(prefs, "default_gender", SpeechSynthesis.GENDER_MALE);
if (gender == SpeechSynthesis.GENDER_FEMALE) {
variant = VoiceVariant.parseVoiceVariant(VoiceVariant.FEMALE);
} else {
variant = VoiceVariant.parseVoiceVariant(VoiceVariant.MALE);
}
} else {
variant = VoiceVariant.parseVoiceVariant(variantString);
}

int rate = getPreferenceValue(prefs, "espeak_rate", Integer.MIN_VALUE);
if (rate == Integer.MIN_VALUE) {
// Try the old eyes-free setting:
int defaultValue = mEngine.Rate.getDefaultValue();
int maxValue = mEngine.Rate.getMaxValue();

rate = (getPreferenceValue(prefs, "default_rate", 100) / 100) * defaultValue;
if (rate < defaultValue) rate = defaultValue;
if (rate > maxValue) rate = maxValue;
}

int pitch = getPreferenceValue(prefs, "espeak_pitch", Integer.MIN_VALUE);
if (pitch == Integer.MIN_VALUE) {
// Try the old eyes-free setting:
pitch = getPreferenceValue(prefs, "default_pitch", 100) / 2;
}

if (DEBUG) {
Log.i(TAG, "Received synthesis request: {language=\"" + mMatchingVoice.name + "\"}");

@@ -263,25 +232,17 @@ public class TtsService extends TextToSpeechService {
}

mCallback = callback;
mCallback.start(mEngine.getSampleRate(), mEngine.getAudioFormat(),
mEngine.getChannelCount());
mEngine.setVoice(mMatchingVoice, variant);
mEngine.Rate.setValue(rate, request.getSpeechRate());
mEngine.Pitch.setValue(pitch, request.getPitch());
mEngine.PitchRange.setValue(getPreferenceValue(prefs, "espeak_pitch_range", mEngine.PitchRange.getDefaultValue()));
mEngine.Volume.setValue(getPreferenceValue(prefs, "espeak_volume", mEngine.Volume.getDefaultValue()));
mCallback.start(mEngine.getSampleRate(), mEngine.getAudioFormat(), mEngine.getChannelCount());
final VoiceSettings settings = new VoiceSettings(PreferenceManager.getDefaultSharedPreferences(this), mEngine);
mEngine.setVoice(mMatchingVoice, settings.getVoiceVariant());
mEngine.Rate.setValue(settings.getRate(), request.getSpeechRate());
mEngine.Pitch.setValue(settings.getPitch(), request.getPitch());
mEngine.PitchRange.setValue(settings.getPitchRange());
mEngine.Volume.setValue(settings.getVolume());
mEngine.synthesize(text, text.startsWith("<speak"));
}

private int getPreferenceValue(SharedPreferences prefs, String preference, int defaultValue) {
final String prefString = prefs.getString(preference, null);
if (prefString == null) {
return defaultValue;
}
return Integer.parseInt(prefString);
}

/**
* Pipes synthesizer output from native eSpeak to an {@link AudioTrack}.
*/

Loading…
Cancel
Save