android - TTS 随机跳过句子的第一个字母

标签 android text-to-speech

我有一个严重依赖 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 秒内发生。

最佳答案

要么你做错了什么,要么 Android 做错了。如果我必须在上面花钱,我会说是你。

从调用开始

tts.speak("the quick brown fox jumps over the lazy dog", tts.QUEUE_FLUSH, null);

看看您是否可以在测试应用程序中重现该问题(我不能)。如果可以,那么我很好奇您运行的是什么手机/操作系统。您的问题可能在于被截断的字符串,或者其他以编程方式干扰音量的问题。

关于android - TTS 随机跳过句子的第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32447124/

相关文章:

java - 不同类中的不同 HTTP POST 使用相同的方法?

android - Android记录和播放

c# - 如何使用SpeechSynthesizer C#将音频流写出到响应

javascript - HTML5 语音合成

c# - Azure 认知服务 TTS - 示例应用程序中其他语言的错误

api - 使用 Chrome TTS 的 SSML

java - MaryTTS异常NoClassDefFoundError : com/google/common/bas e/Joiner

java - 单击某个项目后如何关闭回收者 View 持有者?

应用国家/地区过滤器时,Android google play 支持/不支持设备列表

android - 开源一个 android studio 库项目并允许其他人作为 gradle 依赖项包含在内