安卓自带的TTS是不支持中文,需要下载其他语音引擎,比如科大讯飞语音引擎3.0,度秘语音引擎3.0,我目前使用的是科大讯飞语音引擎3.0
可在设置->语言->首选引擎进行选择,如下图:
需要使用安卓自带类TextToSpeech()
下面是调用的示例代码:
package com.example.androidyuyin;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import java.util.Locale;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity
{
private TextToSpeech mSpeech;
private TextView edit;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit =(EditText)findViewById(R.id.test_text);
mSpeech = new TextToSpeech(MainActivity.this, new TTSListener());
mSpeech.setLanguage(Locale.CHINA); //要转换的语言类别
mSpeech.setSpeechRate(1.0f); //播放速度
mSpeech.setPitch(1.0f); //播放音调
initUI();
}
private void initUI()
{
Button b1 = (Button) findViewById(R.id.but1);
b1.setOnClickListener(new OnClickListener()
{
@SuppressWarnings("deprecation")
@Override
public void onClick(View v)
{
String tempStr = edit.getText().toString();//待播放文字
mSpeech.speak( tempStr , TextToSpeech.QUEUE_FLUSH, null);
}
});
}
private class TTSListener implements OnInitListener
{
@Override
public void onInit(int status)
{
// TODO Auto-generated method stub
if (status == TextToSpeech.SUCCESS)
{
Toast.makeText(MainActivity.this, "TTS引擎初始化成功", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(MainActivity.this, "TTS引擎初始化失败", Toast.LENGTH_SHORT).show();
}
}
}
@Override
protected void onDestroy() //释放资源
{
if (mSpeech != null)
{
mSpeech.stop();
mSpeech.shutdown();
mSpeech = null;
}
super.onDestroy();
}
}