Android文字転音声2方式
3850 ワード
今日は開発中に文字を音声に変換する機能を作り、多くの穴に入った.
まず私が採用したのは科大訊飛のオンライン音声合成技術です.書き終わったら、彼は低バージョンの携帯電話で読むことができますが、高バージョンの7.0以上では読めません.何を読むか分かりません.
まず科大訊飛公式サイトでアプリケーションを作成し、APPIDを手に入れてからsdk jarパッケージを生成します.
これは文字を音声に変換するツールクラスです.
使うときにアプリ登録して初期化して、
次の操作を行います.
これはどのように高バージョンの携帯電話に適しているか分からないので、このような方法は採用されていません.
私が使っているのはAndroidシステムが持っている文字を音声に変換する方法です.簡単で使いやすいです.(簡単で乱暴で、あなたが望んでいる効果を直接実現します)
コードを直接手で引く:
使用
これで文字を音声に変換する機能が実現しました.
猿たちに助けてほしい!
まず私が採用したのは科大訊飛のオンライン音声合成技術です.書き終わったら、彼は低バージョンの携帯電話で読むことができますが、高バージョンの7.0以上では読めません.何を読むか分かりません.
まず科大訊飛公式サイトでアプリケーションを作成し、APPIDを手に入れてからsdk jarパッケージを生成します.
これは文字を音声に変換するツールクラスです.
public class AudioUtils {
private static AudioUtils audioUtils;
private SpeechSynthesizer mySynthesizer;
public AudioUtils() {
}
/**
* :
* :
* :[email protected]
* : 2016/8/19 14:38
*/
public static AudioUtils getInstance() {
if (audioUtils == null) {
synchronized (AudioUtils.class) {
if (audioUtils == null) {
audioUtils = new AudioUtils();
}
}
}
return audioUtils;
}
private InitListener myInitListener = new InitListener() {
@Override
public void onInit(int code) {
Log.d("mySynthesiezer:", "InitListener init() code = " + code);
}
};
/**
* :
* :
* :[email protected]
* : 2016/8/19 14:38
*/
public void init(Context context) {
//
mySynthesizer = SpeechSynthesizer.createSynthesizer(context, myInitListener);
//
mySynthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
//
mySynthesizer.setParameter(SpeechConstant.PITCH, "50");
//
mySynthesizer.setParameter(SpeechConstant.VOLUME, "50");
mySynthesizer.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_CLOUD);
}
/**
* :
* :
* :[email protected]
* : 2016/8/19 14:39
*/
public void speakText(String content) {
int code = mySynthesizer.startSpeaking(content, new SynthesizerListener() {
@Override
public void onSpeakBegin() {
}
@Override
public void onBufferProgress(int i, int i1, int i2, String s) {
}
@Override
public void onSpeakPaused() {
}
@Override
public void onSpeakResumed() {
}
@Override
public void onSpeakProgress(int i, int i1, int i2) {
}
@Override
public void onCompleted(SpeechError speechError) {
}
@Override
public void onEvent(int i, int i1, int i2, Bundle bundle) {
}
});
}
}
使うときにアプリ登録して初期化して、
SpeechUtility.createUtility(getApplicationContext(), "appid= APPID");
AudioUtils.getInstance().init(getApplicationContext());
次の操作を行います.
AudioUtils.getInstance().speakText(" ");
これはどのように高バージョンの携帯電話に適しているか分からないので、このような方法は採用されていません.
私が使っているのはAndroidシステムが持っている文字を音声に変換する方法です.簡単で使いやすいです.(簡単で乱暴で、あなたが望んでいる効果を直接実現します)
コードを直接手で引く:
private TextToSpeech mTextToSpeech;
private void speakChina(){
//
mTextToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status==TextToSpeech.SUCCESS) {
//
int supported= mTextToSpeech.setLanguage(Locale.US);
if ((supported!=TextToSpeech.LANG_AVAILABLE)&&(supported!=TextToSpeech.LANG_COUNTRY_AVAILABLE)) {
Toast.makeText(sAppContext, " !", Toast.LENGTH_SHORT).show();
}
}
}
});
}
使用
mTextToSpeech.speak(" ", TextToSpeech.QUEUE_FLUSH, null);
これで文字を音声に変換する機能が実現しました.
猿たちに助けてほしい!