您的位置:首页 > 移动开发 > Android开发

安卓自动朗读TTS

2017-02-21 08:27 218 查看
安卓的TTS暂时不支持中文

安卓的自动朗读支持主要是通过TextToSpeech来完成,该类提供的构造器如下:

TextToSpeech(Context context,TextToSpeech.OnInitListener listener)

一旦程序中获得了TextToSpeech对象之后,接下来就需要调用TextToSpeech的setLanguage(Locale loc)(返回值是int型) 方法来设置发声引擎使用的语言,国家选项。当返回值是TextToSpeech.LANG_COUNTRY_AVAILABLE,则说明当前TTS支持所设置的语言,国家选项。

TextToSpeech类中常用的方法如下两个:

speak(CharSequence text,int queueMode,Bundle params,String utteranceld)

synthesizeToFile(CharSequence text,int queueMode,Bundle params,File file,String utteranceld)

上述两个发法都是播放音频,但是第一个知识播放音频,第二个是将音频转换为生音文件保存起来

上面的 params都是用于指定生音转换是的参数。speak()方法中的queueMode参数指定TTS的发音队列模式,该参数支持如下两个 常量:

TextToSpeech.QUEUE_FLUSH:如果指定该模式,当TTS调用speak()方法的时候,他会中断当前实例正在执行的任务(清楚当前语音任务,转而执行新的语音任务)

TextToSpeech.QUEUE_ADD如果指定该模式,当TTS调用speak()方法的时候,会把新的发音任务添加到当前发音任务队列之后,也就是当前发音任务执行完之后再去执行下一个任务

实例:

public class MainActivity extends AppCompatActivity {
TextToSpeech tts;
EditText editText;
Button button1;
Button button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts=new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int i) {
//如果装载tts引擎成功
if(i==TextToSpeech.SUCCESS){
//设置使用英语朗读
int result=tts.setLanguage(Locale.US);
if(result!=TextToSpeech.LANG_COUNTRY_AVAILABLE && result!=TextToSpeech.LANG_AVAILABLE){
Toast.makeText(MainActivity.this,"TTS暂时不支持这种语言",Toast.LENGTH_SHORT).show();
}
}
}
});
editText=(EditText)findViewById(R.id.editText);
button1=(Button)findViewById(R.id.du);
button2=(Button)findViewById(R.id.jilu);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//执行朗读
tts.speak(editText.getText().toString(),
TextToSpeech.QUEUE_ADD,null,"speech");
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//将朗读文本的音频记录到指定文件
tts.synthesizeToFile(editText.getText().toString(),null,
new File("mnt/sdcard/sound.wav"),"record");
Toast.makeText(MainActivity.this,"生音记录成功!",Toast.LENGTH_SHORT).show();
}
});
}
public void onDestroy(){
//关闭TextToSpeech对象
if(tts!=null){
tts.shutdown();

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android