tts文字转语音
这篇文章介绍了如何在Android中使用文字转语音(TTS) 。 找不到说明如何使用它的帖子并不常见,并且它是Android的一部分,内容不多。 我认为TTS非常有趣,因为它可以为应用程序添加一些不错的功能。 文字转语音是Android平台的一项功能,可用于“读取”单词并使应用说话,或更详细地进行合成
文本。
在这篇文章中,我想介绍如何在Android中实现TTS,以及我们如何控制语音引擎的一些有趣方面。 我们想要编写一个具有EditText小部件的应用程序,以便我们编写必须阅读的单词以及一些用于修改语音引擎的控件。
文字转语音引擎
要在我们的应用中使用TTS ,我们要做的第一件事就是初始化引擎。 控制引擎的类称为TextToSpeech ,
engine = new TextToSpeech(this, this);
其中第一个参数是上下文,另一个是侦听器。 该侦听器用于通知我们的应用程序该引擎已准备好使用。 为了得到通知,我们必须实现TextToSpeech.OnInitListener ,所以我们有:
public class MainActivity extends Activity implements TextToSpeech.OnInitListener {
....
@Override
public void onInit(int status) {
Log.d(&Speech&, &OnInit - Status [&+status+&]&);
if (status == TextToSpeech.SUCCESS) {
Log.d(&Speech&, &Success!&);
engine.setLanguage(Locale.UK);
}
}
}
我们使用onInit
作为回调方法,当引擎准备就绪时,我们设置引擎用来读取句子的默认语言。
读单词
现在我们的引擎已经可以使用了,我们只需要简单地传递我们想要读取的字符串即可。 为此,我们使用EditText,以便用户可以编辑他的字符串,并且当他单击麦克风时,应用程序开始阅读。 由于琐碎琐碎,因此无需过多说明代码,当用户单击麦克风按钮时,我们会集中注意力:
speechButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speech();
}
});
哪里
private void speech() {
engine.speak(editText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null, null);
}
我们只需要调用speak
方法,使我们的应用程序阅读的文本!
控制文本到语音引擎的参数
我们可以更好地控制引擎如何阅读句子。 我们可以修改例如音调和语速 。
例如,在应用程序中,我们使用了两个搜索栏来控制音高和速率。 如果要设置语音音调,则可以使用setPitch
传递一个float值。
另一方面,如果要更改语音速率,可以使用setSpeechRate
。
在我们的应用程序中,我们从两个搜索栏读取此值,语音方法变为:
private void speech() {
engine.setPitch((float) pitch);
engine.setSpeechRate((float) speed);
engine.speak(editText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null, null);
}
- 源代码可用@ github
翻译自: https://www.javacodegeeks.com/2015/02/android-text-speech-tts.html
tts文字转语音