Android TextToSpeech在Chrome ARC中

Android TextToSpeech在Chrome ARC中,android,text-to-speech,chromium,google-chrome-arc,Android,Text To Speech,Chromium,Google Chrome Arc,我正在尝试使用ArcWeaver将我的android应用程序移植到Chrome。TextToSpeech组件似乎不起作用。在一个活动中,我有一个不确定的进度循环,等待TTS引擎初始化。在Chrome上,它要么永远旋转,要么返回NullPointerException。TTS在Chrome中不可用吗?在Chromebox上运行ChromeOS UtteranceProgressListener ttsListener = new UtteranceProgressListener() {

我正在尝试使用ArcWeaver将我的android应用程序移植到Chrome。TextToSpeech组件似乎不起作用。在一个活动中,我有一个不确定的进度循环,等待TTS引擎初始化。在Chrome上,它要么永远旋转,要么返回NullPointerException。TTS在Chrome中不可用吗?在Chromebox上运行ChromeOS

UtteranceProgressListener ttsListener = new UtteranceProgressListener() {
    @Override
    public void onStart(String s) {
        Logg.d("speech started: " + s);
        if (loadingDialog.isShowing()) {
            loadingDialog.dismiss();
        }
    }
    @Override
    public void onDone(String s) {
        Logg.d("speech done: " + s);
        if (s.equals("1")) {
            nextWord();
        } else if (s.equals("2")) {
            CheckLeave();
        }

    }
    @Override
    public void onError(String s) {
        Logg.e("Text to Speech error speaking: " + s);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    showProgressDialog();
}

@Override
protected void onResume() {
    if (tts==null) {
        Logg.d("re-initializing TTS");
        tts=new TextToSpeech(getApplicationContext(),
                new TextToSpeech.OnInitListener() {
                    @Override
                    public void onInit(int status) {
                        if(status != TextToSpeech.ERROR){
                            tts.setSpeechRate(.5f + .25f * (Integer)KVDB.GetValue("speechRate",2));
                            tts.setLanguage(Locale.US);
                            if (pauseTime != 0) {
                                //Paused. Say nothing.
                            } else if (currentWord == null) {
                                startTime = new ExcelDate();
                                nextWord();
                            } else if (currentWord.length() == 0) {
                                nextWord();
                            } else {
                                reSpeak();
                            }
                        }
                    }
                });
        tts.setOnUtteranceProgressListener(ttsListener);
    }
    super.onResume();
}

private void showProgressDialog() {
    loadingDialog = new ProgressDialog(this);
    loadingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    loadingDialog.setTitle(getString(R.string.test_loading_msg));
    loadingDialog.show();
}

正如您所发现的,看起来我们没有任何类型的默认TTS服务提供商作为ARC包的一部分。基本的安卓操作系统根本没有提供


请随意查看。

我将此问题复制到错误报告中。当您说没有默认的TTS服务提供商时,您的意思是有一个解决办法来访问其他TTS引擎,还是此时无法从ARC将文本转换为语音?您可以通过将另一个TTS引擎包含在您的CRX包中来包含它。您可以包含多个APK。从我在查看Java代码时收集的信息来看,它应该可以正常工作,但我们没有测试过它。在这样做的过程中,您必须处理发动机的任何许可条款。劳埃德,我想尝试实施这样的解决方案。如果我的应用程序要可行的话,我真的需要将它的访问权限扩展到Android之外,而Chrome似乎是实现这一点的完美途径。你知道我在哪里可以找到这方面的指南或帮助吗?例如,我如何将其合并?抱歉耽搁了。我需要更频繁地查看我的收件箱。无论如何,我快速查看了您链接到的扩展,它似乎使用了我们的云TTS引擎服务,您可以在此处找到:。它看起来像一个API,您向我们发送一个包含字符串的web请求,然后我们返回该字符串的音频数据。有免费试用,否则你得付钱。否则,我自己也无法给出多少指导。也许在这里问另一个关于堆栈溢出的问题会是一个好的开始?