Android TTS说中文
来源:互联网 发布:兰州拉面 知乎 编辑:程序博客网 时间:2024/06/04 01:24
昨天在家看一本有关物联网开发的Android书籍时,看到了用TTS说中文的小例子,觉得蛮好的,就写篇学习记录吧!Android虽然很早版本就开始支持TTS(Text To Speech) ,English 、 French 、 German 、 Italian 和 Spanish 五大语言,居然没有几千年历史的汉语。好在开源框架http://code.google.com/p/eyes-free/提供了中文TTS功能,所以我们用它来实现中文朗读。
//http://code.google.com/p/eyes-free///开始之前记录在项目中添加相关jar包:TTS_library_stub_3.0_market.jar,我也是在网上下载的。public class MainActivity extends Activity implements OnInitListener { private EditText edt; private Button speak; private TextToSpeechBeta mTts; private static final int CODE = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); checkTTS(); initViewsAndEvents(); } /** * 初始化控件及监听事件 */ private void initViewsAndEvents() { edt = (EditText) findViewById(R.id.edt); speak = (Button) findViewById(R.id.speak); speak.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String edtStr = edt.getText().toString().trim(); if (!TextUtils.isEmpty(edtStr)) { // 朗读我们输入的文字 mTts.speak(edtStr, TextToSpeechBeta.QUEUE_ADD, null); } } }); } /** * 检查TTS是否可以使用 */ private void checkTTS() { Intent in = new Intent(); in.setAction(TextToSpeechBeta.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(in, CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CODE) { switch (resultCode) { case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_PASS: Toast.makeText(this, "恭喜您,TTS可用", Toast.LENGTH_SHORT).show(); mTts = new TextToSpeechBeta(this, this); break; case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_BAD_DATA:// 发音数据已经损坏 case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_MISSING_DATA: // 需要的语音数据已丢失 case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_MISSING_VOLUME: // 发音数据丢失 // 下载TTS对应的资源 Intent dataIntent = new Intent( TextToSpeechBeta.Engine.ACTION_INSTALL_TTS_DATA); startActivity(dataIntent); break; case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_FAIL: // 发音失败 break; } } } @Override public void onInit(int arg0, int arg1) { if (arg1 == -1) { // 提示安装所需要的数据 installTTS(); } else { // 完成TTS的初始化 if (arg0 == TextToSpeechBeta.SUCCESS) { // 设置TTS引擎,com.google.tts即eSpeak支持的语言包含中文 mTts.setEngineByPackageNameExtended("com.google.tts"); // 设置发音语言Locale.CHINA int result = mTts.setLanguage(Locale.CHINA); // 检查语言是否可用 if (result == TextToSpeechBeta.LANG_MISSING_DATA || result == TextToSpeechBeta.LANG_NOT_SUPPORTED) { speak.setEnabled(false); Toast.makeText(this, "语言功能不可用", Toast.LENGTH_SHORT).show(); } else { speak.setEnabled(true); } } else { Toast.makeText(this, "TTS初始化失败", Toast.LENGTH_SHORT).show(); } } } /** * 安装语音相关资源包 */ private void installTTS() { Builder alertInstall = new AlertDialog.Builder(this) .setTitle("缺少语音包") .setMessage("下载语音包") .setPositiveButton("去下载", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 下载eyes-free的语音数据包 String ttsDataUrl = "http://eyes-free.googlecode.com/files/tts_3.1_market.apk"; Uri ttsDataUri = Uri.parse(ttsDataUrl); Intent ttsIntent = new Intent( Intent.ACTION_VIEW, ttsDataUri); startActivity(ttsIntent); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); alertInstall.create().show(); }}
//布局文件很简单<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/edt" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:gravity="left|center" android:hint="请输入您想说的话!" android:textSize="15sp" /> <Button android:id="@+id/speak" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:hint="开始讲话" android:textSize="16sp" /></LinearLayout>
1 0
- Android TTS说中文
- Android TTS学习(补充)--我能说中文
- Android TTS学习(补充)--我能说中文
- Android 通过手说tts中文语音包实现中文朗读
- speak.vbs 调用TTS,说中文
- .NET 4.0 C# 调用TTS 说中文
- .NET 3.5 C# 调用TTS 说中文
- android 语音播报(通过手说tts 实现中文语音播报)
- 借助“手说”免费应用软件,实现中文朗读(Android TTS实践)
- Android中文TTS语音合成
- android 中文朗读 语音朗读 tts朗读
- Android TTS学习--使用中文语音
- Android中文语音合成(TTS)
- Android TTS 实战四:中文走起
- Android笔记之 TTS中文发音
- Android TTS
- Android中文语音合成(TTS)各家引擎对比
- Android TTS 中文 文字转语音 使用TextToSpeech Svox
- python+selenium 自动化测试webui
- URL vs URI
- HDU 3104 Combination Lock [Ad Hoc]
- 大神亲传:26条深度学习的金科玉律!
- 排序算法
- Android TTS说中文
- 求字符数组的全排列算法
- Mysql几种索引类型的区别及适用情况
- Android之--自定义ListView
- DRIVER_OBJECT,DEVICE_OBJECT 结构体分析
- Web Service和WCF的到底有什么区别
- Design库,全部控件的使用
- 【HWOJ】计算字符个数
- 今天创建了CSDN博客,用于记录自己的学习经历