【发布时间】:2015-09-15 07:41:39
【问题描述】:
我有一个严重依赖 TTS 的低视力应用程序。但是由于某种原因,当我使用 speak 方法时,TTS 会随机跳过句子的前几个字母,或者以极低的音量说出前几个字母,然后以正常的音量说出其余字母。
知道为什么会发生这种情况吗?
这是我当前的代码:
public class SpeechHelper implements TextToSpeech.OnInitListener {
private Context context = null;
private TextToSpeech tts;
public SpeechHelper(Context context)
{
this.context = context;
try {
tts = new TextToSpeech(context, this);
} catch(Exception e) {
Log.e("Phone Features Exception","Couldn't initiate TTS", e);
}
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
tts.setLanguage(Locale.getDefault());
}
}
public void speak(String s, int mode, String messageID) {
Log.d("VOLUME", "getStreamVolume " + am.getStreamVolume(AudioManager.STREAM_MUSIC)); // Always 15
Log.d("VOLUME", "isMusicActive " + (am.isMusicActive() ? "true" : "false")); // Always false
Log.d("VOLUME", "isVolumeFixed " + (am.isVolumeFixed() ? "true" : "false")); // Always false
Log.d("VOLUME", "isSpeakerphoneOn: " + (am.isSpeakerphoneOn() ? "true" : "false")); // Always false
Log.d("VOLUME", "getMode: " + am.getMode()); // Always 0
HashMap<String, String> params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, messageID);
tts.speak(s, mode, params);
}
}
我注意到问题总是在拨打电话后的 5 秒内或解锁手机到应用时发生。
【问题讨论】:
-
您测试的是哪个引擎?
-
我注意到这总是在拨打电话后发生。有什么线索吗?哪个引擎是什么意思?
-
@ozbek 我正在使用 com.google.android.tts