在安卓上实现将文字转换成语音
时间: 2023-09-29 09:09:32 浏览: 98
在安卓上实现将文字转换成语音可以使用Android中的TextToSpeech类。以下是一个简单的示例代码,可以将输入的文字转换成语音:
```java
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.Locale;
public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener {
private TextToSpeech tts;
private Button btnSpeak;
private EditText txtText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts = new TextToSpeech(this, this);
btnSpeak = (Button) findViewById(R.id.btnSpeak);
txtText = (EditText) findViewById(R.id.txtText);
btnSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
speakOut();
}
});
}
@Override
public void onDestroy() {
// 关闭TextToSpeech引擎
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
// 设置语言为英语
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
// 如果不支持英语,则设置为默认语言
tts.setLanguage(Locale.getDefault());
}
} else {
Toast.makeText(this, "初始化TTS引擎失败", Toast.LENGTH_SHORT).show();
}
}
private void speakOut() {
String text = txtText.getText().toString();
// 如果输入的内容为空,则不做处理
if (text.trim().length() == 0) {
return;
}
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
}
```
在这个示例代码中,我们创建了一个TextToSpeech对象,并在onCreate()方法中初始化它。然后,我们设置了一个按钮,当用户单击它时,会调用speakOut()方法,这个方法将输入的文本转换成语音并播放出来。我们还实现了TextToSpeech.OnInitListener接口,以便在初始化TextToSpeech对象时接收回调。
阅读全文