700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 语音合成android代码 百度 TTS 语音合成-Android

语音合成android代码 百度 TTS 语音合成-Android

时间:2023-04-25 09:22:38

相关推荐

语音合成android代码 百度 TTS 语音合成-Android

参考百度语音合成demo,MiniActivity.java 抽离代码。

初始化

mSpeechSynthesizer放在Application中,并在Activity调用,但是无法正常播放。先贴出关键代码

Application初始化代码:

protectedStringappId="15151421";

protectedStringappKey="MxIQEHVeZg2222LNs3ygUYo1";

protectedStringsecretKey="t0F9gzpw1111AHkGdf8GM70zdOSnlrD";

privateTtsModettsMode=TtsMode.ONLINE;

publicSpeechSynthesizermSpeechSynthesizer;

privatevoidinitTTs(){

LoggerProxy.printable(true);//日志打印在logcat中

booleanisSuccess;

//日志更新在UI中,可以换成MessageListener,在logcat中查看日志

SpeechSynthesizerListenerlistener=newUiMessageListener(mainHandler);

//1.获取实例

mSpeechSynthesizer=SpeechSynthesizer.getInstance();

mSpeechSynthesizer.setContext(this);

//2.设置listener

mSpeechSynthesizer.setSpeechSynthesizerListener(listener);

//3.设置appId,appKey.secretKey

intresult=mSpeechSynthesizer.setAppId(appId);

result=mSpeechSynthesizer.setApiKey(appKey,secretKey);

//5.以下setParam参数选填。不填写则默认值生效

//设置在线发声音人:0普通女声(默认)1普通男声2特别男声3情感男声4情感儿童声

mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER,"0");

//设置合成的音量,0-9,默认5

mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME,"9");

//设置合成的语速,0-9,默认5

mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED,"5");

//设置合成的语调,0-9,默认5

mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_PITCH,"5");

mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_MIX_MODE,SpeechSynthesizer.MIX_MODE_DEFAULT);

//该参数设置为TtsMode.MIX生效。即纯在线模式不生效。

//MIX_MODE_DEFAULT默认,wifi状态下使用在线,非wifi离线。在线状态下,请求超时6s自动转离线

//MIX_MODE_HIGH_SPEED_SYNTHESIZE_WIFIwifi状态下使用在线,非wifi离线。在线状态下,请求超时1.2s自动转离线

//MIX_MODE_HIGH_SPEED_NETWORK,3G4Gwifi状态下使用在线,其它状态离线。在线状态下,请求超时1.2s自动转离线

//MIX_MODE_HIGH_SPEED_SYNTHESIZE,2G3G4Gwifi状态下使用在线,其它状态离线。在线状态下,请求超时1.2s自动转离线

mSpeechSynthesizer.setAudioStreamType(AudioManager.MODE_IN_CALL);

//x.额外:自动so文件是否复制正确及上面设置的参数

Mapparams=newHashMap<>();

//复制下上面的mSpeechSynthesizer.setParam参数

//上线时请删除AutoCheck的调用

InitConfiginitConfig=newInitConfig(appId,appKey,secretKey,ttsMode,params,listener);

AutoCheck.getInstance(this.getApplicationContext()).check(initConfig,newHandler(){

@Override

/**

*开新线程检查,成功后回调

*/

publicvoidhandleMessage(Messagemsg){

if(msg.what==100){

AutoCheckautoCheck=(AutoCheck)msg.obj;

synchronized(autoCheck){

Stringmessage=autoCheck.obtainDebugMessage();

print(message);

}

}

}

});

//6.初始化

result=mSpeechSynthesizer.initTts(ttsMode);

checkResult(result,"initTts");

}

并在onCreate()中初始化。

并在Activity调用

privateSpeechSynthesizermSpeechSynthesizer;

application=MainApplication.getInstance();

mSpeechSynthesizer=application.mSpeechSynthesizer;

intresult=mSpeechSynthesizer.speak(text);

调用正常,但是无法正常播放音频,求解。个人怀疑是UI阻塞,这个如何解决

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。