android 文字转化为语音TextToSpeech
16lz
2021-01-26
布局文件
主类:
public class MainActivity extends AppCompatActivity implements View.OnClickListener, TextToSpeech.OnInitListener { private EditText main_edit_text; private Button main_btn_read; // TTS对象 private TextToSpeech mTextToSpeech; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initTextToSpeech(); } private void initTextToSpeech() { // 参数Context,TextToSpeech.OnInitListener mTextToSpeech = new TextToSpeech(this, this); // 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规 mTextToSpeech.setPitch(1.0f); // 设置语速 mTextToSpeech.setSpeechRate(0.5f); } private void initView() { main_edit_text = (EditText) findViewById(R.id.main_edit_text); main_btn_read = (Button) findViewById(R.id.main_btn_read); main_btn_read.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.main_btn_read: submit(); break; default: break; } } private void submit() { // validate String text = main_edit_text.getText().toString().trim(); if (TextUtils.isEmpty(text)) { Toast.makeText(this, "请您输入要朗读的文字", Toast.LENGTH_SHORT).show(); return; } if (mTextToSpeech != null && !mTextToSpeech.isSpeaking()) { /* TextToSpeech的speak方法有两个重载。 // 执行朗读的方法 speak(CharSequence text,int queueMode,Bundle params,String utteranceId); // 将朗读的的声音记录成音频文件 synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId); 第二个参数queueMode用于指定发音队列模式,两种模式选择 (1)TextToSpeech.QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务 (2)TextToSpeech.QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后, 等前面的语音任务执行完了才会执行新的语音任务 */ mTextToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null); } } /** * 用来初始化TextToSpeech引擎 * * @param status SUCCESS或ERROR这2个值 */ @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { /* 使用的是小米手机进行测试,打开设置,在系统和设备列表项中找到更多设置, 点击进入更多设置,在点击进入语言和输入法,见语言项列表,点击文字转语音(TTS)输出, 首选引擎项有三项为Pico TTs,科大讯飞语音引擎3.0,度秘语音引擎3.0。其中Pico TTS不支持 中文语言状态。其他两项支持中文。选择科大讯飞语音引擎3.0。进行测试。 如果自己的测试机里面没有可以读取中文的引擎, 那么不要紧,我在该Module包中放了一个科大讯飞语音引擎3.0.apk,将该引擎进行安装后,进入到 系统设置中,找到文字转语音(TTS)输出,将引擎修改为科大讯飞语音引擎3.0即可。重新启动测试 Demo即可体验到文字转中文语言。 */ // setLanguage设置语言 int result = mTextToSpeech.setLanguage(Locale.CHINA); // TextToSpeech.LANG_MISSING_DATA:表示语言的数据丢失 // TextToSpeech.LANG_NOT_SUPPORTED:不支持 if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Toast.makeText(this, "数据丢失或不支持", Toast.LENGTH_SHORT).show(); } } } @Override protected void onStop() { super.onStop(); // 不管是否正在朗读TTS都被打断 mTextToSpeech.stop(); // 关闭,释放资源 mTextToSpeech.shutdown(); } @Override protected void onDestroy() { if (mTextToSpeech != null) { mTextToSpeech.stop(); mTextToSpeech.shutdown(); mTextToSpeech = null; } super.onDestroy(); }}
更多相关文章
- Android世界的15款开源的游戏开发引擎
- 图表引擎AChartEngine 一
- Android(朗读文本) TextToSpeech的使用
- Unity3d中MicroPhone的使用
- Android(安卓)录音实现方法、仿微信语音、麦克风录音、发送语音
- android 2d物理引擎-APEngine
- Android(安卓)自带语音识别功能
- 22、TTS技术
- 【Android】后台收听收音机时,语音搜索失效