Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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
Android 文本到语音转换不说话_Android - Fatal编程技术网

Android 文本到语音转换不说话

Android 文本到语音转换不说话,android,Android,我被一个从编辑文本中说出单词的代码弄糊涂了,我使用的代码没有说出,但是它正确地得到了值,没有字符等 我使用的代码是 public class AndroidTextToSpeechActivity extends Activity implements TextToSpeech.OnInitListener { /** Called when the activity is first created. */ private TextToSpeech tts; private But

我被一个从编辑文本中说出单词的代码弄糊涂了,我使用的代码没有说出,但是它正确地得到了值,没有字符等

我使用的代码是

 public class AndroidTextToSpeechActivity extends Activity implements
    TextToSpeech.OnInitListener {
/** Called when the activity is first created. */

private TextToSpeech tts;
private Button btnSpeak;
private EditText txtText;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    System.out.println("Entered to the Activity");
    tts = new TextToSpeech(this, this);

    btnSpeak = (Button) findViewById(R.id.btnSpeak);

    txtText = (EditText) findViewById(R.id.txtText);

    // button on click event
    btnSpeak.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            speakOut();
        }

    });
}

@Override
public void onDestroy() {
    // Don't forget to shutdown!
    if (tts != null) {
        System.out.println("Entered  to OnDestroy");
        tts.stop();
        tts.shutdown();
    }
    super.onDestroy();
}

@Override
public void onInit(int status) {
    // TODO Auto-generated method stub

    System.out.println("Enterd init Function");
    if (status == TextToSpeech.SUCCESS) {

        int result = tts.setLanguage(Locale.ENGLISH);

        // tts.setPitch(5); // set pitch level

        // tts.setSpeechRate(2); // set speech speed rate

        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "Language is not supported");
        } else {
            btnSpeak.setEnabled(true);
            speakOut();
        }

    } else {
        Log.e("TTS", "Initilization Failed");
    }

}

private void speakOut() {
     System.out.println("Entered Speakout");
    String text = txtText.getText().toString();

    tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}

它返回了一条不支持languagge的消息。我如何更正它?

试试这个,它可能会对您有所帮助

我认为在你的设备中没有安装语音合成器,因此请使用这些设备。如果没有安装,它将重定向到谷歌播放安装这个

 public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
        int result = talker.setLanguage(Locale.US);
        if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "This Language is not supported");
            Intent installIntent = new Intent();
            installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            startActivity(installIntent);
        } else {
            btnSpeak.setEnabled(true);
            speakOut();
        }
    } else {
        Log.e("TTS", "Initilization Failed!");
    }
}

试试这个,它可能对你有帮助

我认为在你的设备中没有安装语音合成器,因此请使用这些设备。如果没有安装,它将重定向到谷歌播放安装这个

 public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
        int result = talker.setLanguage(Locale.US);
        if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "This Language is not supported");
            Intent installIntent = new Intent();
            installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            startActivity(installIntent);
        } else {
            btnSpeak.setEnabled(true);
            speakOut();
        }
    } else {
        Log.e("TTS", "Initilization Failed!");
    }
}

试试下面的代码。它对我很好,我希望它也能帮助你

public class TexttoSpeechActivity extends Activity implements OnClickListener,
    OnInitListener {
    private Button m_btnSpech;
    private EditText m_etText;
    // TTS object
    private TextToSpeech m_tts;
    // status check code
    private final int m_data = 0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        m_btnSpech = (Button) findViewById(R.id.mbtnSpeak);
        m_etText = (EditText) findViewById(R.id.metTextValues);
        // listen for clicks
        m_btnSpech.setOnClickListener(this);        
        // check for TTS data intent to check if a TTS engine is installed
        Intent m_intent = new Intent();
        m_intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(m_intent, m_data);
    }
    // respond to button click.
    @Override
    public void onClick(View p_v) {
        // get the text entered.
        String m_word = m_etText.getText().toString();
        speakWord(m_word);
    }
    /**
     * Executed when a new TTS is instantiated. Some text is spoken via TTS
     * here.
     * 
     * @param p_word
     *            -contains the word entered into the edittext.
     */
    private void speakWord(String p_word) {
        // speak straight away
        m_tts.speak(p_word, TextToSpeech.QUEUE_FLUSH, null);
    }
    /**
     * This is the callback from the TTS engine check, if a TTS is installed we
     * create a new TTS instance (which in turn calls onInit), if not then we
     * will create an intent to go off and install a TTS engine
     * 
     * @param p_requestCode
     *            int Request code returned from the check for TTS engine.
     * @param p_resultCode
     *            int Result code returned from the check for TTS engine.
     * @param p_data
     *            Intent Intent returned from the TTS check.
     */
    @Override
    protected void onActivityResult(int p_requestcode, int p_resultcode,
            Intent p_data) {
        if (p_requestcode == m_data) {
            if (p_resultcode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                // the user has the necessary data - create the TTS
                m_tts = new TextToSpeech(this, this);
            } else {
                // no data - install it now
                Intent m_intnt = new Intent();
                m_intnt.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(m_intnt);
            }
        }
    }
    // setup TTS
    @Override
    public void onInit(int p_status) {
        // check for successful instantiation
        if (p_status == TextToSpeech.SUCCESS) {
            if (m_tts.isLanguageAvailable(Locale.US) == TextToSpeech.LANG_AVAILABLE) {
                m_tts.setLanguage(Locale.US);
                Toast.makeText(this, "Text To Speech ", Toast.LENGTH_LONG)
                        .show();
            }
            Toast.makeText(TexttoSpeechActivity.this,
                    "Text-To-Speech engine is initialized", Toast.LENGTH_LONG).show();
        } else if (p_status == TextToSpeech.ERROR) {
            Toast.makeText(this, "Sorry! Text To Speech failed...",
                    Toast.LENGTH_LONG).show();
        }
    }
    /**
     * Be kind, once you've finished with the TTS engine, shut it down so other
     * applications can use it without us interfering with it.
     */
    @Override
    public void onDestroy() {
        // Don't forget to shutdown!
        if (m_tts != null) {
            m_tts.stop();
            m_tts.shutdown();
        }
        super.onDestroy();
    }
}

试试下面的代码。它对我很好,我希望它也能帮助你

public class TexttoSpeechActivity extends Activity implements OnClickListener,
    OnInitListener {
    private Button m_btnSpech;
    private EditText m_etText;
    // TTS object
    private TextToSpeech m_tts;
    // status check code
    private final int m_data = 0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        m_btnSpech = (Button) findViewById(R.id.mbtnSpeak);
        m_etText = (EditText) findViewById(R.id.metTextValues);
        // listen for clicks
        m_btnSpech.setOnClickListener(this);        
        // check for TTS data intent to check if a TTS engine is installed
        Intent m_intent = new Intent();
        m_intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(m_intent, m_data);
    }
    // respond to button click.
    @Override
    public void onClick(View p_v) {
        // get the text entered.
        String m_word = m_etText.getText().toString();
        speakWord(m_word);
    }
    /**
     * Executed when a new TTS is instantiated. Some text is spoken via TTS
     * here.
     * 
     * @param p_word
     *            -contains the word entered into the edittext.
     */
    private void speakWord(String p_word) {
        // speak straight away
        m_tts.speak(p_word, TextToSpeech.QUEUE_FLUSH, null);
    }
    /**
     * This is the callback from the TTS engine check, if a TTS is installed we
     * create a new TTS instance (which in turn calls onInit), if not then we
     * will create an intent to go off and install a TTS engine
     * 
     * @param p_requestCode
     *            int Request code returned from the check for TTS engine.
     * @param p_resultCode
     *            int Result code returned from the check for TTS engine.
     * @param p_data
     *            Intent Intent returned from the TTS check.
     */
    @Override
    protected void onActivityResult(int p_requestcode, int p_resultcode,
            Intent p_data) {
        if (p_requestcode == m_data) {
            if (p_resultcode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                // the user has the necessary data - create the TTS
                m_tts = new TextToSpeech(this, this);
            } else {
                // no data - install it now
                Intent m_intnt = new Intent();
                m_intnt.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(m_intnt);
            }
        }
    }
    // setup TTS
    @Override
    public void onInit(int p_status) {
        // check for successful instantiation
        if (p_status == TextToSpeech.SUCCESS) {
            if (m_tts.isLanguageAvailable(Locale.US) == TextToSpeech.LANG_AVAILABLE) {
                m_tts.setLanguage(Locale.US);
                Toast.makeText(this, "Text To Speech ", Toast.LENGTH_LONG)
                        .show();
            }
            Toast.makeText(TexttoSpeechActivity.this,
                    "Text-To-Speech engine is initialized", Toast.LENGTH_LONG).show();
        } else if (p_status == TextToSpeech.ERROR) {
            Toast.makeText(this, "Sorry! Text To Speech failed...",
                    Toast.LENGTH_LONG).show();
        }
    }
    /**
     * Be kind, once you've finished with the TTS engine, shut it down so other
     * applications can use it without us interfering with it.
     */
    @Override
    public void onDestroy() {
        // Don't forget to shutdown!
        if (m_tts != null) {
            m_tts.stop();
            m_tts.shutdown();
        }
        super.onDestroy();
    }
}

转到设备的文字到语音设置并收听示例如果其工作正常则问题出在代码中转到设备的文字到语音设置并收听示例如果其工作正常则问题出在代码中您应该使用“startActivityForResult”,而不是“startActivity”,您应该使用“startActivityForResult”,而不是“星际触觉”