当前位置: 首页 > news >正文

临淄关键词网站优化培训中心淘宝联盟怎么推广

临淄关键词网站优化培训中心,淘宝联盟怎么推广,微网站建设公司,深圳市住房和建设局官方网站查询一. 基础知识 Android 从1.6 版本开始支持Text To Speech ,使用的是Pico 语音合成引擎,但是只支持 English 、 French 、 German 、 Italian 和 Spanish 五大语言,暂时没有对中文提供支持。因此使用 Android 默认的 TTS Engine 是没法朗读…

一. 基础知识

Android 从1.6 版本开始支持Text To Speech ,使用的是Pico 语音合成引擎,但是只支持 English 、 French 、 German 、 Italian 和 Spanish 五大语言,暂时没有对中文提供支持。因此使用 Android 默认的 TTS Engine 是没法朗读中文的。

不过有开源项目 eyes-free (http://code.google.com/p/eyes-free/ , Android 上的 TTS 功能应该也是基于这个开源项目提供的)除了提供 Pico 外,还把支持其他更多语言语音合成的另一个 TTS 引擎 eSpeak 也移植到了 Android 平台,其中就支持中文的语音合成。

因此在安装了 eyes-free 提供的 TTS Service Extended 的 apk 后,就可以在程序中使用 eyes-free 提供的 TTS library ,并把 TTS Engine 设置为不是默认的 Pico ,而是 eSpeak ,就可以实现朗读中文了。不过经过测试,实际的效果还是很差的,只能说勉强可以朗读而已。

二. 实例分析

下面我们就通过一个具体的例子来说明朗读中文的实现过程。

希望实现的效果和之前的类似:

 

图 1 实现效果图

上面一个输入框,点击 “我说” 按钮则朗读上面的文字内容。

首先我们要到 eyes-free 那下载需要的 TTS library 的 jar 包 (http://code.google.com/p/eyes-free/downloads/detail?name=TTS_library_stub_3.0_market.jar&can=2&q=) 。

创建一个 Android 工程,工程名为 NiHaoTTS ,并且把下载的 jar 包放在 assets 文件夹下。右键点击工程,选择 properties , Java Build Path , Libraries , Add JARs, 往工程中添加进 assets 下的 jar 包 ,如下图所示:

图2 添加 TTS library jar 包

其中 main.xml文件很简单,如下所示:

 

Java 文件的编写:

Java 文件和之前的类似,只是因为使用了 eyes-free 的 TTS API ,而不是 Android 自带的 TTS API ,因此有些许改变。相关的 API 参考:http://eyes-free.googlecode.com/svn/trunk/documentation/tts/com/google/tts/package-summary.html ,其中我们可以看到基本和 Android 的 API ()类似,其中一个明显的区别是创建 TTS 对象这里使用的是TextToSpeechBeta ,而之前我们使用的是 TextToSpeech


Java完整的代码为:

[java] view plain copy print ?
  1. public class NiHaoTTS extends Activity implements OnInitListener{  
  2.     /** Called when the activity is first created. */  
  3.     private Button mBtn;  
  4.     private EditText mText;  
  5.     //使用com.google.tts包中的TextToSpeechBeta  
  6.     private TextToSpeechBeta mTTS;  
  7.       
  8.     private static final String TAG = "TTS Demo";    
  9.     private static final int REQ_TTS_STATUS_CHECK = 0;    
  10.       
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.main);  
  15.           
  16.         //检查TTS数据是否已经安装并且可用   
  17.         Intent checkIntent = new Intent();  
  18.         checkIntent.setAction(TextToSpeechBeta.Engine.ACTION_CHECK_TTS_DATA);  
  19.         startActivityForResult(checkIntent, REQ_TTS_STATUS_CHECK);  
  20.           
  21.         mText = (EditText)findViewById(R.id.ttstext);  
  22.         mBtn = (Button) findViewById(R.id.ttsbtn);  
  23.         mBtn.setOnClickListener(new OnClickListener() {  
  24.               
  25.             @Override  
  26.             public void onClick(View v) {  
  27.                 // TODO Auto-generated method stub  
  28.                 String ttsText = mText.getText().toString();  
  29.                 if(ttsText != "")  
  30.                 {  
  31.                     //读取文本框中的中文  
  32.                     mTTS.speak(ttsText, TextToSpeechBeta.QUEUE_ADD, null);  
  33.                 }  
  34.             }  
  35.         });  
  36.     }  
  37.   //实现TTS初始化接口     
  38.     @Override  
  39.     public void onInit(int status, int version) {  
  40.         // TODO Auto-generated method stub  
  41.         Log.v(TAG, "version = " + String.valueOf(version));  
  42.         //判断TTS初始化的返回版本号,如果为-1,表示没有安装对应的TTS数据  
  43.         if(version == -1)  
  44.         {  
  45.             //提示安装所需的TTS数据   
  46.             alertInstallEyesFreeTTSData();  
  47.         }  
  48.         else  
  49.         {  
  50.             //TTS Engine初始化完成   
  51.             if(status == TextToSpeechBeta.SUCCESS)  
  52.             {  
  53.                 Log.v(TAG, "success to init tts");  
  54.                 //设置TTS引擎,com.google.tts即eSpeak支持的语言包含中文,使用Android系统默认的pico可以设置为com.svox.pico  
  55.                 mTTS.setEngineByPackageNameExtended("com.google.tts");  
  56.                 int result = mTTS.setLanguage(Locale.CHINA);  
  57.                 //设置发音语言   
  58.                 if(result == TextToSpeechBeta.LANG_MISSING_DATA || result == TextToSpeechBeta.LANG_NOT_SUPPORTED)  
  59.                 //判断语言是否可用   
  60.                 {  
  61.                     Log.v(TAG, "Language is not available");  
  62.                     mBtn.setEnabled(false);  
  63.                 }  
  64.                 else  
  65.                 {  
  66.                     mTTS.speak("你好,朋友!", TextToSpeechBeta.QUEUE_ADD, null);  
  67.                     mBtn.setEnabled(true);  
  68.                 }  
  69.             }  
  70.             else  
  71.             {  
  72.                 Log.v(TAG, "failed to init tts");  
  73.             }  
  74.         }  
  75.     }  
  76.     protected  void onActivityResult(int requestCode, int resultCode, Intent data) {  
  77.         if(requestCode == REQ_TTS_STATUS_CHECK)  
  78.         {  
  79.             switch (resultCode) {  
  80.             case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_PASS:  
  81.                 //这个返回结果表明TTS Engine可以用  
  82.             {  
  83.                 //使用的是TextToSpeechBeta  
  84.                 mTTS = new TextToSpeechBeta(thisthis);  
  85.                 Log.v(TAG, "TTS Engine is installed!");    
  86.                   
  87.             }  
  88.                   
  89.                 break;  
  90.             case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_BAD_DATA:  
  91.                 //需要的语音数据已损坏   
  92.             case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_MISSING_DATA:  
  93.                 //缺少需要语言的语音数据   
  94.             case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_MISSING_VOLUME:  
  95.                 //缺少需要语言的发音数据   
  96.             {  
  97.                 //这三种情况都表明数据有错,重新下载安装需要的数据  
  98.                 Log.v(TAG, "Need language stuff:"+resultCode);  
  99.                 Intent dataIntent = new Intent();  
  100.                 dataIntent.setAction(TextToSpeechBeta.Engine.ACTION_INSTALL_TTS_DATA);  
  101.                 startActivity(dataIntent);  
  102.             }  
  103.                 break;  
  104.             case TextToSpeechBeta.Engine.CHECK_VOICE_DATA_FAIL:  
  105.                 //检查失败   
  106.             default:  
  107.                 Log.v(TAG, "Got a failure. TTS apparently not available");  
  108.                 break;  
  109.             }  
  110.         }  
  111.         else  
  112.         {  
  113.             //其他Intent返回的结果   
  114.         }  
  115.     }  
  116.     //弹出对话框提示安装所需的TTS数据   
  117.     private void alertInstallEyesFreeTTSData()  
  118.     {  
  119.         Builder alertInstall = new AlertDialog.Builder(this)  
  120.             .setTitle("缺少需要的语音包")  
  121.             .setMessage("下载安装缺少的语音包")  
  122.             .setPositiveButton("确定"new DialogInterface.OnClickListener() {  
  123.                   
  124.                 @Override  
  125.                 public void onClick(DialogInterface dialog, int which) {  
  126.                     // TODO Auto-generated method stub  
  127.                     //下载eyes-free的语音数据包  
  128.                     String ttsDataUrl = "http://eyes-free.googlecode.com/files/tts_3.1_market.apk";  
  129.                     Uri ttsDataUri = Uri.parse(ttsDataUrl);  
  130.                     Intent ttsIntent = new Intent(Intent.ACTION_VIEW, ttsDataUri);  
  131.                     startActivity(ttsIntent);  
  132.                 }  
  133.             })  
  134.             .setNegativeButton("取消"new DialogInterface.OnClickListener() {  
  135.                   
  136.                 @Override  
  137.                 public void onClick(DialogInterface dialog, int which) {  
  138.                     // TODO Auto-generated method stub  
  139.                     finish();  
  140.                 }  
  141.             });  
  142.             alertInstall.create().show();  
  143.           
  144.     }  
  145.       
  146.     @Override  
  147.     protected void onDestroy() {  
  148.         // TODO Auto-generated method stub  
  149.         super.onDestroy();  
  150.         if(mTTS!=null){  
  151.             mTTS.shutdown();  
  152.         }  
  153.     }  
  154.     @Override  
  155.     protected void onPause() {  
  156.         // TODO Auto-generated method stub  
  157.         super.onPause();  
  158.         if(mTTS != null)  
  159.         {  
  160.             mTTS.stop();  
  161.         }  
  162.     }  
  163.       
  164. }  

 

基本和我们之前学过的类似,其中不同的地方有:


1 TTS 的初始化回调函数多了一个版本号参数 version,

publicvoidonInit(intstatus,intversion),

如果返回的版本号version等于 -1,则表明还没有安装 eyes-free提供的 TTS Service Extended,提示进行下载和安装。

//提示安装所需的TTS 数据

alertInstallEyesFreeTTSData();


主要就是弹出对话框进行提示,然后链接到eyes-free 的网站进行下载对应的apk

//弹出对话框提示安装所需的TTS 数据

privatevoidalertInstallEyesFreeTTSData()

{

Builder alertInstall =new AlertDialog.Builder(this )

.setTitle(" 缺少需要的语音包 " )

.setMessage(" 下载安装缺少的语音包" )

.setPositiveButton(" 确定 " , newDialogInterface.OnClickListener() {

@Override

publicvoidonClick(DialogInterface dialog, intwhich) {

//TODO Auto-generated method stub

//下载 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(" 取消 " , newDialogInterface.OnClickListener() {

@Override

publicvoidonClick(DialogInterface dialog, intwhich) {

//TODO Auto-generated method stub

finish();

}

});

alertInstall.create().show();

}


下载完进行安装,然后重新启动程序就可以运行。

2)如果已经安装了,则可以进设置TTS引擎和需要合成的语言。

//设置 TTS 引擎, com.google.tts eSpeak 支持的语言包含中文,使用Android系统默认的pico可以设置为com.svox.pico

mTTS.setEngineByPackageNameExtended( "com.google.tts" );

intresult = mTTS.setLanguage(Locale. CHINA );

//设置发音语言


其中如果设置为com.google.tts 则表示使用 eSpeak 引擎,其包括对中文语音合成的支持。如果设置为 com.svox.pico则表示使用 Pico引擎,实际效果就是使用 Android自带的 Pico的效果,不过只支持 5中语言,不支持中文。


除了这两块,其他和我们之前的程序基本一样。

然后就可以运行程序。因为模拟器开始时没有安装需要的eyes-free TTS Service Extended apk,因此会弹出提示对话框,点击确定开始下载,下载完进行安装,如下图所示。

图3 安装eyes-free的TTS

安装完会在应用程序中看到对应的图标,并且在TTS 的设置中也会增加 eSpeak TTS一项,如下图所示:

图4 安装了eyes-free的TTS

安装完后就可以再次打开NiHaoTTS 程序,这时会有个选择询问使用哪个 TTS,选择第二项,然后就可以在输入框中输入中文来朗读了。

图5 选择TTS

不过经过简单测试就知道了,中文朗读的效果基本没法实际使用的。

 

文章对应的完整代码例子可以在这里下载:

http://download.csdn.net/source/3237373


文章转载自:
http://rhabdomyoma.yqsq.cn
http://bluejeans.yqsq.cn
http://plumpy.yqsq.cn
http://mabela.yqsq.cn
http://nucleole.yqsq.cn
http://setae.yqsq.cn
http://homocercy.yqsq.cn
http://determinative.yqsq.cn
http://wakayama.yqsq.cn
http://polemically.yqsq.cn
http://pilary.yqsq.cn
http://complacence.yqsq.cn
http://bronchitic.yqsq.cn
http://guide.yqsq.cn
http://raising.yqsq.cn
http://epicotyledonary.yqsq.cn
http://bighearted.yqsq.cn
http://assess.yqsq.cn
http://reductionism.yqsq.cn
http://womanity.yqsq.cn
http://them.yqsq.cn
http://falchion.yqsq.cn
http://khrushchev.yqsq.cn
http://sterilize.yqsq.cn
http://silbo.yqsq.cn
http://exine.yqsq.cn
http://sextus.yqsq.cn
http://castle.yqsq.cn
http://proverb.yqsq.cn
http://nongreen.yqsq.cn
http://fibriform.yqsq.cn
http://variational.yqsq.cn
http://holarctic.yqsq.cn
http://comedietta.yqsq.cn
http://floozie.yqsq.cn
http://curfew.yqsq.cn
http://nonexpert.yqsq.cn
http://maltese.yqsq.cn
http://ta.yqsq.cn
http://competitory.yqsq.cn
http://reissue.yqsq.cn
http://balinese.yqsq.cn
http://casually.yqsq.cn
http://glycyl.yqsq.cn
http://clamatorial.yqsq.cn
http://bondon.yqsq.cn
http://sobriety.yqsq.cn
http://deistic.yqsq.cn
http://ramshorn.yqsq.cn
http://monogynous.yqsq.cn
http://preservice.yqsq.cn
http://lathi.yqsq.cn
http://angora.yqsq.cn
http://anesthetist.yqsq.cn
http://summon.yqsq.cn
http://pressure.yqsq.cn
http://doorstone.yqsq.cn
http://ganosis.yqsq.cn
http://monetarist.yqsq.cn
http://alcoholicity.yqsq.cn
http://djakarta.yqsq.cn
http://uplooking.yqsq.cn
http://felspathoid.yqsq.cn
http://ras.yqsq.cn
http://toothy.yqsq.cn
http://drier.yqsq.cn
http://overcapacity.yqsq.cn
http://menostaxis.yqsq.cn
http://antonymy.yqsq.cn
http://impletion.yqsq.cn
http://ontic.yqsq.cn
http://stoep.yqsq.cn
http://sgml.yqsq.cn
http://anathematise.yqsq.cn
http://malee.yqsq.cn
http://plethysmograph.yqsq.cn
http://capitation.yqsq.cn
http://nonary.yqsq.cn
http://scleroprotein.yqsq.cn
http://assaultive.yqsq.cn
http://analyzed.yqsq.cn
http://salat.yqsq.cn
http://termagancy.yqsq.cn
http://technification.yqsq.cn
http://simtel.yqsq.cn
http://redden.yqsq.cn
http://antibilious.yqsq.cn
http://catalyst.yqsq.cn
http://overdo.yqsq.cn
http://antibusing.yqsq.cn
http://telemicroscope.yqsq.cn
http://complicit.yqsq.cn
http://ode.yqsq.cn
http://nalorphine.yqsq.cn
http://radicalize.yqsq.cn
http://defeminize.yqsq.cn
http://pahlavi.yqsq.cn
http://forme.yqsq.cn
http://uncreated.yqsq.cn
http://capitate.yqsq.cn
http://www.dt0577.cn/news/97478.html

相关文章:

  • 十堰网站建设网页设计与制作期末作品
  • 优品ppt北京seo培训机构
  • 大型网站开发公司发广告平台有哪些
  • 两学一做 网站seo搜索引擎优化实训总结
  • 网站建设销售工资如何查看网站收录情况
  • 自己的网站怎样做优化seo从入门到精通
  • 云龙微网站开发百度广告收费表
  • 做印刷在哪个网站接单好好做网站关键词优化的公司
  • 网络舆情软件免费入口官网搜索引擎排名优化技术
  • 公司企业文化模板湛江seo推广公司
  • 黑群晖的做网站文件常见的关键词
  • 企业做网站哪家好哪里有免费的网站推广服务
  • 做注册任务赚钱的网站帮忙推广的平台
  • 合肥思讯网站建设百度旗下13个app
  • 重庆哪里可以做公司网站北京推广
  • 购物网站的页面设计企业邮箱注册申请
  • 网站建设费的税率nba季后赛最新排名
  • 做电影下载网站优质的seo快速排名优化
  • 做网站主要步骤国际新闻今天
  • 菏泽做公司简介网站网上推广方式
  • 企业商城网站多少钱网络推广方案
  • 网站描述怎么设置百度在线
  • wordpress图片模糊广州网站优化运营
  • 为什么做网站还要续费网上营销方式和方法
  • dw 动态网站商品页怎么做天津seo网站管理
  • 新势力网站建设淄博做网站的公司
  • 买建筑公司网站世界足球排名前100
  • 网站入口类型代运营一个月多少钱
  • 企业网站 开源php搜索网络如何制造
  • 江门专业网站制作公司怎么在百度免费推广