一、引言
在《Android 4 高级编程(第3版)》第11章中,讲到了语音输出及语音识别。
对语音识别,公司项目中有用到,但是我们用的第三方的(讯飞),由于这块功能不是由我来做,所以也就没有花时间去看第三方是怎么接入的,只是粗略的扫了一下项目中这块的代码,没有难度。跟其它第三方API一样。
二、正文
1、TTS(TextToSpeech)
TextToSpeech:在android speech包下,从字面意思就不难猜到,它是把文字转换成语音读出来。
那它是什么原理呢?
其实TTS是一个语音库,在这个库里收录了指定语言的所有单词,以字为基本单元,采用波形语音生成的方法来实现。在google最开始时,只能支持很少数种语言,当然也不支持中文,因为咱华夏文明源远流长,博大精深,不是你一下子就能建一个语音库的。
因此不难猜想到,在把文本转换成语音之前,得设置:
A,用哪种语言;
B,有没有下载安装相应的语音库;
实现比较简单,下面看下具体代码:
第一步:初始化TextToSpeech
private void initParams() {
//这里得由Activity实现OnInitListener监听
mTextToSpeech = new TextToSpeech(this,this);
}
....
@Override
public void onInit(int status) {
if(status == TextToSpeech.SUCCESS){
// int result = mTextToSpeech.setLanguage(Locale.US);//美式英语发音
int result = mTextToSpeech.setLanguage(Locale.CHINESE);//中文
if(result == TextToSpeech.LANG_MISSING_DATA ||
result == TextToSpeech.LANG_NOT_SUPPORTED){
Toast.makeText(this,"数据丢失或不支持",Toast.LENGTH_SHORT)