1. 程式人生 > >文字轉語言的工具類(科大訊飛的API)

文字轉語言的工具類(科大訊飛的API)

開發過程中有時需要用到科大訊飛的SDK,下面是我自己寫的文字轉語音的工具類:
package utils;

import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SynthesizerListener;

public class SpeechUiUtils {
//傳入上下文,和需要轉成語音的文字
public static void read(Context context, String read) {
SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(context,
null);
mTts.setParameter(SpeechConstant.VOICE_NAME, “aisxping”);
mTts.setParameter(SpeechConstant.SPEED, “50”);
mTts.setParameter(SpeechConstant.VOLUME, “100”);
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 設定雲端
mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, “./sdcard/iflytek.pcm”);// 語音儲存位置
mTts.startSpeaking(read, mSynListener);
}

//傳入上下文,和需要轉成語音的文字,voice_name代表讀文字的指定語音人,注意這個不是隨便寫,要看科大訊飛的文件
public static void read(Context context, String read,String voice_name) {
    SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(context,
            null);
    mTts.setParameter(SpeechConstant.VOICE_NAME, voice_name);
    mTts.setParameter(SpeechConstant.SPEED, "50");
    mTts.setParameter(SpeechConstant.VOLUME, "100");
    mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 設定雲端
    mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");// 語音儲存位置
    mTts.startSpeaking(read, mSynListener);
}

//自定義讀語音,自己傳語音的監聽
public static void read(Context context, String read,SynthesizerListener mSynListener) {
    SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(context,
            null);
    mTts.setParameter(SpeechConstant.VOICE_NAME, "aisxping");
    mTts.setParameter(SpeechConstant.SPEED, "50");
    mTts.setParameter(SpeechConstant.VOLUME, "100");
    mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 設定雲端
    mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");// 語音儲存位置
    mTts.startSpeaking(read, mSynListener);
}

public static void read_load_local(Context context, String read) {
    SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(context,
            null);
    mTts.setParameter(SpeechConstant.VOICE_NAME, "aisxping");
    mTts.setParameter(SpeechConstant.SPEED, "50");
    mTts.setParameter(SpeechConstant.VOLUME, "100");
    mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);// 設定雲端
    mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH,
            Environment.getExternalStorageDirectory() + "/iflytek.pcm");// 語音儲存位置
    mTts.startSpeaking(read, mSynListener);
}

private static SynthesizerListener mSynListener = new SynthesizerListener() {
    // 緩衝進度回撥
    // percent為緩衝進度0~100,beginPos為緩衝音訊在文字中開始位置,endPos表示緩衝音訊在文字中結束位置,info為附加資訊
    @Override
    public void onBufferProgress(int percent, int beginPos, int endPos,
            String info) {

    }

    // 會話結束回撥介面,沒有錯誤時,error為null
    @Override
    public void onCompleted(SpeechError error) {
    }

    // 會話事件回撥介面
    @Override
    public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {

    }

    // 開始播放
    @Override
    public void onSpeakBegin() {

    }

    // 暫停播放
    @Override
    public void onSpeakPaused() {

    }

    // 播放進度回撥
    // percent為播放進度0~100,beginPos為播放音訊在文字中開始位置,endPos表示播放音訊在文字中結束位置.
    @Override
    public void onSpeakProgress(int percent, int beginPos, int endPos) {

    }

    // 恢復播放回調介面
    @Override
    public void onSpeakResumed() {

    }

};

}

本人個人專案地址:百度搜索安卓應用—-點選進入百度應用市場—搜尋”電話老人版”