一、介绍
    
   
    
     目录
    
   
目前国内Android系统自带语音引擎基本上都是Pico TTS,Pico TTS不支持中文转语音播报。因为项目需要播放中文,引入科大讯飞引擎3.0.apk。
    二、配置
   
    下载好
    
     科大讯飞语音引擎3.0.apk
    
    (若是下载小爱,小度等其他引擎也可以),安装成功之后,进入系统设置—>语言输入法设置—>文字转语音(TTS)输出—>选择科大讯飞语音引擎(选择你下载的引擎)。
   
    三、使用
   
代码很简单,注释很详细,废话不多说,直接上工具类。
package com.welbell.temperature.type.ui;
import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import java.util.Locale;
public class VoiceAnnouncements implements TextToSpeech.OnInitListener {
    private static final String TAG = VoiceAnnouncements.class.getName();
    public static VoiceAnnouncements mVoiceAnnouncements;
    private TextToSpeech mTextToSpeech;
    public static VoiceAnnouncements getInstance() {
        synchronized (VoiceAnnouncements.class) {
            if (mVoiceAnnouncements == null) {
                mVoiceAnnouncements = new VoiceAnnouncements();
            }
        }
        return mVoiceAnnouncements;
    }
    public void init(Context context) {
        mTextToSpeech = new TextToSpeech(context, this);
    }
    /**
     * 设置语音播放参数(设置-1将不起作用)
     *
     * @param pitch      音调
     * @param speechRate 语速
     */
    public void setParameter(float pitch, float speechRate) {
        if (mTextToSpeech == null) {
            return;
        }
        if (pitch != -1)
            //设置音调
            mTextToSpeech.setPitch(pitch);
        if (speechRate != -1)
            //设置语速,1.0为正常语速
            mTextToSpeech.setSpeechRate(speechRate);
    }
    /**
     * 设置播放内容
     * 播放语音前需要等初始化成功之后 
     * @param isCover 是否覆盖式播放
     * @param text  播放的内容
     */
    public void speak(boolean isCover,String text){
        if (isCover){
            mTextToSpeech.stop();
        }
        mTextToSpeech.speak(text, TextToSpeech.QUEUE_ADD, null);
    }
    /**
     * 回调函数
     * @param status
     */
    @Override
    public void onInit(int status) {
            //设置朗读语言
        int supported = mTextToSpeech.setLanguage(Locale.SIMPLIFIED_CHINESE);
        if ((supported != TextToSpeech.LANG_AVAILABLE) && (supported != TextToSpeech.LANG_COUNTRY_AVAILABLE)) {
            Log.e(TAG, "onInit: 不支持当前语言");
        }
    }
}
    四、权限
   
TTS需要使用文件操作权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 外部存储读权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 外部存储写权限 -->
    五、补充
   
第三方引擎APK,需要通过用户手动设置为默认TTS输出,否则不能使用。目前除了改framework层以外,Android上层没有办法修改第三方APK为默认的输出TTS应用。
     
   
 
版权声明:本文为duanchuanzhi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
