Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TextToSpeech Android无法正常工作_Android_Google Text To Speech_Sony Xperia - Fatal编程技术网

TextToSpeech Android无法正常工作

TextToSpeech Android无法正常工作,android,google-text-to-speech,sony-xperia,Android,Google Text To Speech,Sony Xperia,我正试图找出我的应用程序无法按预期工作的原因。为了找出原因,我创建了一个带有单个活动的小项目,在这个项目中,如果你按下一个按钮,就应该说出预定义的单词。我使用的是索尼Xperia Compact安卓9。我最近做了一些系统更新,这是原因吗 import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.UtteranceProgressListener; import andr

我正试图找出我的应用程序无法按预期工作的原因。为了找出原因,我创建了一个带有单个活动的小项目,在这个项目中,如果你按下一个按钮,就应该说出预定义的单词。我使用的是索尼Xperia Compact安卓9。我最近做了一些系统更新,这是原因吗

import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.UtteranceProgressListener;

import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

import java.util.Locale;

public class MainActivity extends AppCompatActivity {
    private TextToSpeech textToSpeech;
    private boolean isInitialized = false;
    private MainActivity mainActivity;
    int ctr = 0;
    private String words[] = {"handboll", "kula", "golf"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        mainActivity = this;

        textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                if (status == TextToSpeech.SUCCESS){
                    textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
                        @Override
                        public void onStart(String utteranceId) {
                            System.out.println("---onStart");
                        }

                        @Override
                        public void onDone(String utteranceId) {
                            System.out.println("-----onDone");
                        }

                        @Override
                        public void onError(String utteranceId) {
                            System.out.println("-----onError");
                        }

                        @Override
                        public void onError(String utteranceId, int errorCode){
                            onError(utteranceId);
                            System.out.println("Error with code: " + errorCode);
                        }
                    });
                    isInitialized = true;
                    Locale locale = new Locale("sv");
                    textToSpeech.setLanguage(locale);
                }
            }
        });
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (isInitialized){
                    System.out.println(textToSpeech.getLanguage().getDisplayLanguage());
                    textToSpeech.speak(words[ctr], TextToSpeech.QUEUE_FLUSH, null, "SpeakTest");
                    ctr++;
                    ctr %= words.length;
                } else {
                    Snackbar.make(view, "Speaker not ready", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }
            }
        });

    }
}
结果是,当我按下按钮时,只说出了几个单词。例如,在这种情况下,只能说
handboll
kula
,但不能说
golf
。在其他情况下,
kula
不能说

然后我创建了数组
{“kula”,“kula”,“kula”}
并按下按钮大约100次,然后突然它开始工作。很明显,它能说出这些话,但当我按下按钮时,它并不总是发生

对于
Locale
对象,我尝试了
sv、sv-sv
swe
,都得到了相同的结果


如果我使用英语和
en
,效果很好

我在Ankidroid的泰语中也有同样的问题。通常没有演讲,但如果我经常用手势重复演讲,有时会出错。英语很好用。我卸载了Google文本到语音的更新,它再次工作。

我在Ankidroid中遇到了与泰语相同的问题。通常没有演讲,但如果我经常用手势重复演讲,有时会出错。英语很好用。我卸载了谷歌文字语音转换的更新,它再次正常工作。

你尝试过其他设备吗?是的,似乎在一台装有Android 7I的华为手机上工作。我测试过,它似乎正常工作。。。您所经历的行为可能与语音引擎的不同行为,甚至与声音的不同行为有关。有些声音是“在线”的,在调用speak()时需要在east进行初始下载。。。造成严重延迟。您尝试过其他设备吗?是的,似乎在一台装有Android 7I的华为上工作。我测试过,它似乎工作正常。。。您所经历的行为可能与语音引擎的不同行为,甚至与声音的不同行为有关。有些声音是“在线”的,在调用speak()时需要在east进行初始下载。。。造成重大延误的。