From 233da111db58970a603bfedf83706a0b76246b9e Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 2 May 2013 20:33:43 +0100 Subject: [PATCH] TtsService.java: rework the logic to use the new Parameter API. --- android/jni/jni/eSpeakService.cpp | 38 ------------- .../com/reecedunn/espeak/SpeechSynthesis.java | 12 ----- .../src/com/reecedunn/espeak/TtsService.java | 54 ++++--------------- 3 files changed, 11 insertions(+), 93 deletions(-) diff --git a/android/jni/jni/eSpeakService.cpp b/android/jni/jni/eSpeakService.cpp index 32c9d79a..20dedd98 100644 --- a/android/jni/jni/eSpeakService.cpp +++ b/android/jni/jni/eSpeakService.cpp @@ -288,44 +288,6 @@ JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeSetVoiceByProperties( return JNI_FALSE; } -JNIEXPORT jboolean -JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeSetRate( - JNIEnv *env, jobject object, jint rate) { - const int wpm = ((float)rate / 100) * espeak_GetParameter(espeakRATE, 0); - if (DEBUG) LOGV("%s(rate=%d, wpm=%d)", __FUNCTION__, rate, wpm); - - const espeak_ERROR result = espeak_SetParameter(espeakRATE, wpm, 0); - - switch (result) { - case EE_OK: return JNI_TRUE; - case EE_INTERNAL_ERROR: LOGE("espeak_SetParameter: internal error."); break; - case EE_BUFFER_FULL: LOGE("espeak_SetParameter: buffer full."); break; - case EE_NOT_FOUND: LOGE("espeak_SetParameter: not found."); break; - } - - return JNI_FALSE; -} - -JNIEXPORT jboolean -JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeSetPitch( - JNIEnv *env, jobject object, jint pitch) { - // The values of pitch from android range from 50 - 200, with 100 being normal. - // The values espeak supports are from 0 - 100, with 50 being normal. - // Therefore, halve the value to get the value that espeak supports: - pitch = pitch / 2; - if (DEBUG) LOGV("%s(pitch=%d)", __FUNCTION__, pitch); - const espeak_ERROR result = espeak_SetParameter(espeakPITCH, (int) pitch, 0); - - switch (result) { - case EE_OK: return JNI_TRUE; - case EE_INTERNAL_ERROR: LOGE("espeak_SetParameter: internal error."); break; - case EE_BUFFER_FULL: LOGE("espeak_SetParameter: buffer full."); break; - case EE_NOT_FOUND: LOGE("espeak_SetParameter: not found."); break; - } - - return JNI_FALSE; -} - JNIEXPORT jboolean JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeSetParameter( JNIEnv *env, jobject object, jint parameter, jint value) { diff --git a/android/src/com/reecedunn/espeak/SpeechSynthesis.java b/android/src/com/reecedunn/espeak/SpeechSynthesis.java index bbc50c05..83af65bc 100644 --- a/android/src/com/reecedunn/espeak/SpeechSynthesis.java +++ b/android/src/com/reecedunn/espeak/SpeechSynthesis.java @@ -183,14 +183,6 @@ public class SpeechSynthesis { } } - public void setRate(int rate) { - nativeSetRate(rate); - } - - public void setPitch(int pitch) { - nativeSetPitch(pitch); - } - /** Don't announce any punctuation characters. */ public static int PUNCT_NONE = 0; @@ -326,10 +318,6 @@ public class SpeechSynthesis { private native final boolean nativeSetVoiceByProperties(String language, int gender, int age); - private native final boolean nativeSetRate(int rate); - - private native final boolean nativeSetPitch(int pitch); - private native final boolean nativeSetParameter(int parameter, int value); private native final int nativeGetParameter(int parameter, int current); diff --git a/android/src/com/reecedunn/espeak/TtsService.java b/android/src/com/reecedunn/espeak/TtsService.java index 36e8dac2..d4a090fc 100644 --- a/android/src/com/reecedunn/espeak/TtsService.java +++ b/android/src/com/reecedunn/espeak/TtsService.java @@ -196,9 +196,9 @@ public class TtsService extends TextToSpeechService { if (text == null) return; - final int gender = getDefaultGender(); - final int rate = scaleRate(request.getSpeechRate()); - final int pitch = scalePitch(request.getPitch()); + final int gender = getPreferenceValue("default_gender", 0); + final int rate = (getPreferenceValue("default_rate", 100) / 100) * mEngine.Rate.getDefaultValue(); + final int pitch = getPreferenceValue("default_pitch", 100) / 2; final Bundle params = request.getParams(); if (DEBUG) { @@ -222,50 +222,18 @@ public class TtsService extends TextToSpeechService { mEngine.getChannelCount()); mEngine.setVoice(mMatchingVoice, null, gender, SpeechSynthesis.AGE_ANY); - mEngine.setRate(rate); - mEngine.setPitch(pitch); + mEngine.Rate.setValue(rate, request.getSpeechRate()); + mEngine.Pitch.setValue(pitch, request.getPitch()); mEngine.synthesize(text, text.startsWith("