原创 Android笔记11- 中文发音TTS

2014-7-29 20:25 4229 18 20 分类: 软件与OS 文集: Android
1、TTS 就是 Text to Speech ,把文本内容变为语音。 谷歌在Android 1.6 开始就支持TTS 了,但是可惜,只是支持英语法语德语等五种语言,唯独丫丫的木有我们中文。 所以,我们只能另外自己开发中文语音包程序。
 
目前主要有以下几种中文TTS 。 
(1)开源项目 eyes-free  ,链接是:  http://code.google.com/p/eyes-free/ 
在手机上安装了eyes-free  提供的   TTS Service Extended.apk 文件后,就可以在手机-设置-语音输入-中设置是eSpeak输入为默认的语音输入。
 
实际效果没有测试,网上有其他网友测试说效果很差。具体如何开发,请参考这篇文章:
http://blog.csdn.net/ichliebephone/article/details/6373184
 
(2)科大讯飞
这个比较出名了,因为苹果的语音合成让它火了一把,它也是国内语音合成方面做得比较好的一个公司。
之前提供安卓开发的中文语音引擎,不过现在官网上只是提供IOS 和塞班的了,很奇怪,android 的呢?
所以,我们想要开发基于讯飞的中文TTS只得找以前的资料了。
 
 
(3)手说TTS 
手说TTS,是Android平台下的中文语音引擎,提供了中文文本到语音的转换。
使用手说TTS进行中文文本的朗读,包括中文简繁体、阿拉伯数字、英文字母及一些符号的混读。并且处理了中文的多音字和音调转换等问题。个人工作室所做的。因为他提供了比较详细的二次开发接口,所以我下面就是针对他做了一个中文TTS开发。实际测试,效果差钱人意吧,普通话真的不是很好。此外,只有最新版的才有连贯功能,以前的没有,纠结我半天。
 
下面给出调试过程和源码。
 

 

第一步:安装手说TTS安装包

 

从官网 http://shoushuo.com/sstts.html 下载手说TTS安装包:ShoushuoTTS.apk 。

 

安装到真实手机或者手机模拟器中。

 

第二步:下载手说TTS客户类库包

 

下载手说TTS客户类库包:shoushuotts.jar 。

将该jar文件引入到你的应用中。

 
第三步,编写代码
 
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
import com.shoushuo.android.tts.ITts;
 
 
/**
 
 * @version 1.0
 */
public class Speech extends Activity
 
  private ITts ttsService; 
 
     private boolean ttsBound;
     private ServiceConnection connection = new ServiceConnection() { 
      
       @Override 
       public void onServiceConnected(ComponentName className, IBinder iservice) { 
         ttsService = ITts.Stub.asInterface(iservice); 
         ttsBound = true; 
      
      //在应用第一个使用TTS 的地方,调用下面的initialize方法,比如如果有 
     //两个Activity都使用手说TTS,则第二个Activity在此不需要再调用。 
     try { 
           ttsService.initialize(); 
     } catch (RemoteException e) { 
      e.printStackTrace();
      setTitle("出错啦");
     } 
       } 
      
       @Override 
       public void onServiceDisconnected(ComponentName arg0) { 
         ttsService = null; 
         ttsBound = false; 
       } 
     }; 
 private EditText edt;
 
 private Button press; 
 
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  
   this.setContentView( R.layout.main );
 
         this.press = ( Button ) findViewById( R.id.speech );
         edt = (EditText)findViewById(R.id.txt);
         //给Button 添加事件***Button.OnClickListener()
       
         
         //处理事件
       press.setOnClickListener(new OnClickListener()
         {
 
             @Override
             public void onClick( View source)
             {
              
              try {
      ttsService.speak("欢迎小朋友",0);
     } catch (RemoteException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
             }
         } );
 
 }
 
  @Override 
     protected void onStart() { 
       super.onStart(); 
       if (!ttsBound ) { 
         String actionName = "com.shoushuo.android.tts.intent.action.InvokeTts"; 
         Intent intent = new Intent(actionName); 
         this.bindService(intent, connection, Context.BIND_AUTO_CREATE); 
       } 
     } 
    
   @Override 
     protected void onDestroy () { 
       if (ttsBound ) { 
         ttsBound = false; 
         this.unbindService(connection); 
       } 
   super. onDestroy (); 
     }  
 
}
 
 
记得用最新版的手说TTS apk 程序,因为旧版没有连贯朗读的功能,一字字地很生硬。
 
再给出源码下载吧,毕竟我很多东西都受益于网络,你好我好,大家好才是真的好。
 
 

文章评论2条评论)

登录后参与讨论

用户377235 2014-12-6 15:16

Good

用户841296 2014-7-5 18:08

谢谢,学习
相关推荐阅读
啊左不是蜗牛 2015-01-28 09:21
【博客大赛】那样的人生,看不穿
         昨晚11点跟PM姐姐聊天,问她今晚要不要加班,她回:刚刚开发哥哥陪她出来打的。。。我以为我十点半从实验室回去已经够晚了。。我脸红了。        我问她为什么不早点回去...
啊左不是蜗牛 2015-01-13 19:41
【智能手机】三个观点说说国产手机未来
在此篇文章之前还有一个各大手机品牌的总结,请点击查看。 智能手机之论英雄出处      谈手机之前换个角度,类比一下PC领域。 PC领域毛利最高的时候,国产PC一直混在低端。随着时代发...
啊左不是蜗牛 2015-01-09 17:56
【智能手机】论英雄出处
我认为,如果你不知道对手的底细,那么你就很难战胜对手。知己知彼,百战百胜。所以,我简单地说说我对这几家手机品牌的看法。个人之见,欢迎讨论。   苹果: 1976年成立,在乔布斯这样的天...
啊左不是蜗牛 2014-11-19 13:48
【博客大赛】蜗牛求职记之华为篇
1、前言说明          蜗牛是电赛出身,本科做硬件嵌入式,画板子和写C程序,然后研究生阶段是转战android,但是由于项目涉及到硬件,导师项目众多,小伙伴少,于是我也负责部分st...
啊左不是蜗牛 2014-08-16 14:38
以另一种位图的思想来解决一道OJ题目
前言: 以前所接触到的位图的思想都是以1位的形式去存储某个数出现的次数是1次还是0次。常见的例子不外乎在《编程珠玑》上的开篇例子里,1千万个数的排序统计,用1.25M的内存空间就可以达到遍历一...
啊左不是蜗牛 2014-08-15 11:57
Android 笔记之 listview 性能优化
列表显示需要三个元素, (1)listview 视图,用来显示列表的View ; (2)适配器,用来把数据映射到listView上面的 (3)数据,具体将被映射的数据,包括字符串,图片...
我要评论
2
18
关闭 站长推荐上一条 /2 下一条