文字轉語言的工具類(科大訊飛的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() { } };
}
本人個人專案地址:百度搜索安卓應用—-點選進入百度應用市場—搜尋”電話老人版”