Chinaunix首页 | 论坛 | 博客
  • 博客访问: 355006
  • 博文数量: 90
  • 博客积分: 2017
  • 博客等级: 大尉
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-19 08:10
文章分类

全部博文(90)

文章存档

2012年(4)

2011年(74)

2010年(11)

2009年(1)

分类: 嵌入式

2010-08-22 15:26:57

让你的程序开口说话,没错!接下来讲解如何通过第三方资源为你的应用程序实现语音功能。这个语音库的名字是Text-To-Speech (以下简称TTS),开发者可以通过调用这个这个语音库实现将字符串转为声音。
- e$ G! x8 H4 }+ M. I4 Y2 M; k; D" g- w9 M+ H

" c' P- \8 z0 K, O( e0 O% i在讲解具体实现方法之前,需要配置Esclipse的设定:( t% o& O* s' b( M
Project > Properties > Java Build Path > Libraries and click on
7 F$ B$ N6 h+ g. N"Add External JARs..." Then add in the TTS_library_stub.jar file$ m7 q0 S# h& h


$ }  ~6 c9 V1 }2 E& N% _

使用eSpeak引擎前需要为Emulator添加虚拟SD Card。

) x/ H5 X! E; X0 o
将这个APK安装到Emulator (启动Emulator的前提下,在CLS中输入”adb install ***.APK “)。* S5 M+ F9 r- D0 N) \
当程序运行后也可以通过参数控制是否需要弹出安装tts_market.apk的提示对话框:3 ^* y& r( X6 I& h$ S9 g

/ u( [" l2 f9 M5 k) V, q
下边通过几行简单的代码来实现调用语音库的方法:* J! A" ?. X( ~
1. 创建一个新的Android项目,可以随意命名为你认为有意义的名字,比如“I am Well-E”等等
. t* z! s6 H3 }/ Y' Y( W+ v$ V2. 应用上边所提到的方法为当前的项目添加Library。6 p0 G) g$ i, S2 f
3. 在主程序.java中添加如下代码:* g( O0 h' f, b8 a
1.import com.google.tts.TTS;" E% z5 z' D% N7 e
- b& v# p/ A4 E* o' g6 `
, T: Y$ _2 t  J( }
介于onCreate()和类之间声明空的TTS: J1 |$ n" ]$ t: p/ f
1.private TTS myTts;1 \" G0 p1 [+ J- n1 V
' ~' f5 _$ q& ]" u- k
7 d3 v( c7 C5 K8 k9 g
在onCreat()中创建TTS的实体
' d( B. m- A. W1.myTts = new TTS(this, ttsInitListener, true);
8 e6 ~3 O; ~  }" \: \0 }
6 ~6 d( A- ?7 b( W8 A+ n( D
, U6 W. c& t0 t$ @在onCreat()后边定义一个新函数
: e6 X/ z' S+ f& n. D1 g- z1.private TTS.InitListener ttsInitListener = new TTS.InitListener() { 6 i, A! f5 R5 Q' w% j' u! T2 _5 s
2.        public void onInit(int version) { 4 X3 e1 M0 `. N+ Z9 ]
3.          myTts.speak("I am Wall E", 0, null);
% V0 U$ J- x7 g) X; T4.        }
! P7 `  H5 d6 I( ^8 p+ `5.};. R- y  S( a4 V" b, G, i1 e; `
+ K9 o, n1 u* Q5 {
) \" @2 }3 z& R5 t2 v0 q. T0 @

* z( R" P) T  ^5 R! I7 s
至此可以Run你的程序了,如果顺利的话,第一次启动程序后会首先调用TTS通过Server下载数据,然后手动回到主程序面板重新启动你的程序,听到Emulator发出响亮的声音了吧?
3 [' j, j( R. i: R3 u; D6 n# r

) r2 E. t* g2 W7 L
创建TTS实体时要求有三个参数:
" `) G6 Q( V5 g- U6 z1. Application Context
  F2 J/ }9 p- E% @: f2. TTS.InitListener - 监听TTS初始化Event$ u! w# H: c9 z+ R
3. Boolean - 当检测到Emulator或其它测试机没有安装TTs_market.apk时,是否弹出下载
5 I# P3 @  @+ l  提示对话框。$ v  a% b" s1 w7 {6 t0 N# u/ w
TTS实体调用Speak行为时的参数:, K+ Z; s9 Z( q# J# F2 {. i
1. String - 语音内容3 `3 f# S( a8 C
2. Boolean - 是否启用队列模式(0:代表没有列队模式,1:代笔具有先进先出的队列模式)
- g6 W* n$ w% g/ u0 ?3. Array - an array of Strings that are parameters for how to speak the text.
阅读(1681) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~