Android 文件转语音TTS输出(文字转语音)

一、介绍

目录

一、介绍

二、配置

三、使用

四、权限

五、补充


目前国内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应用。

猜你喜欢

转载自blog.csdn.net/duanchuanzhi/article/details/126101677