Android TTS 支持中文

最近项目需求,要在android里面实现语音转文字朗读,TTS,于是上网各种搜索,比较好的是android有自带原生的api可以直接使用,android.speech.tts.TextToSpeech。封装一个java类方便使用,代码如下:

package dione.healthclub;

import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.widget.Toast;
import java.util.Locale;

public class AJTextToSpeech implements TextToSpeech.OnInitListener {

    private Context mContext;
    private TextToSpeech mTTS;


    public  AJTextToSpeech(Context context){
        mContext = context;
        mTTS = new TextToSpeech(mContext,this);
    }

    public boolean speak(final String text){
        Log.d("dione","speak text:"+text);
        // 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
        mTTS.setPitch(1.0f);
        // 设置语速
        mTTS.setSpeechRate(1.0f);
        //播放语音
        int ret = mTTS.speak(text,TextToSpeech.QUEUE_ADD,null);
        if(ret == 0) {
            Toast.makeText(mContext, "文字转语音成功...", Toast.LENGTH_SHORT).show();
            return true;
        }
        else {
            Toast.makeText(mContext, "文字转语音错误...", Toast.LENGTH_SHORT).show();
            return false;
        }
    }

    @Override
    public void onInit(int status) {
        // 判断是否转化成功
        if (status == TextToSpeech.SUCCESS){
            //默认设定语言为中文,原生的android貌似不支持中文。
            int result = mTTS.setLanguage(Locale.US);
            if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED){
                Toast.makeText(mContext, "数据丢失或不支持..."+String.valueOf(result), Toast.LENGTH_SHORT).show();
            }else{
                //不支持中文就将语言设置为英文
                mTTS.setLanguage(Locale.US);
            }
        }
    }
}
将该java加入到自己的工程基本上就可以实现英文的语音转文字朗读。

TextToSpeech mTTS = new TextToSpeech(Context,this);
mTTS.speak("TTS中文朗读");

两句话就可以使用了。

一般系统都没有带中文TTS,不安装语音插件的情况下是可以直接实现英文朗读。
使用中文朗读:将TTS讯飞语音包(底部地址下载)解压出来的两个apk安装到android系统里面,然后在设置 -- 语言和输入法--文字转语音TTS输出--选择科大讯飞语音。
按照如上操作后android系统就支持了中文语音朗读。

仅供学习参考,by Dione.

完整代码已经中文语音插件apk下载地址:https://download.csdn.net/download/u012532263/10885562

 

 

展开阅读全文

没有更多推荐了,返回首页