百度语音是当前网络上与讯飞语音并肩的一个集成语音在线离线合成,语音识别文字等的SDK。相对它的优点在于,不同于讯飞语音离线合成语音的收费方式,采用离在线自动切换,并且在离线环境下,免费服务。对于用于学习的开发者而言,这是比较好的一件事。
百度语音开发主要分为以下几个流程:
一,集成开发包:
1)so文件,一般情况下我们为了减少apk体积,所以在选择集成so文件的时候,最好只选择自己需要运行的平台,不要一股脑的全部集成进去,我当前选择的是armeabi文件中的so文件,至于v8a,v7a,x86等文件目前是不需要的,所以没有必要添加进去。
2)jar文件,目前百度语音需要所需要的jar文件只有com.baidu.tts_2.2.9.20161020_154fa02_release.jar和galaxy-v2.0.jar。
3)配置AndroidManifest文件:
二,初始化语音配置
// 获取语音合成对象实例
mSpeechSynthesizer=SpeechSynthesizer.getInstance();
// 设置context
mSpeechSynthesizer.setContext(this);
// 设置语音合成状态监听器
mSpeechSynthesizer.setSpeechSynthesizerListener(this);
// 设置在线语音合成授权,需要填入从百度语音官网申请的api_key和secret_key
mSpeechSynthesizer.setApiKey("your_api_key","your_secret_key");
// 设置离线语音合成授权,需要填入从百度语音官网申请的app_id
mSpeechSynthesizer.setAppId("your_app_id");
// 设置语音合成文本模型文件
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE,"your_txt_file_path");
// 设置语音合成声音模型文件
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE,"your_speech_file_path");
三,语音合成授权
// 设置语音合成声音授权文件
mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_TTS_LICENCE_FILE,"your_licence_path");
// 获取语音合成授权信息
AuthInfoauthInfo=mSpeechSynthesizer.auth(TtsMode.MIX);
// 判断授权信息是否正确,如果正确则初始化语音合成器并开始语音合成,如果失败则做错误处理
if(authInfo.isSuccess()){
mSpeechSynthesizer.initTts(TtsMode.MIX);
mSpeechSynthesizer.speak("百度语音合成示例程序正在运行");
}else{
// 授权失败
}
四,语音合成监听
//合成异常监听
public void onError(String arg0, SpeechError arg1) {
// TODO Auto-generated method stub
}
//合成完成监听
public void onSpeechFinish(String arg0) {
// TODO Auto-generated method stub
}
//合成进度监听
public void onSpeechProgressChanged(String arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSpeechStart(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onSynthesizeDataArrived(String arg0, byte[] arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onSynthesizeFinish(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onSynthesizeStart(String arg0) {
// TODO Auto-generated method stub
}
五,调用语音合成组件
1)调用合成接口
SpeechSynthesizer.speak(str);
2)获取语音合成文件
OnNewDataListener dataListener = new OnNewDataListener() {
@Override
public int onNewData(byte[] arg0, int position) {
return 0;
}
};
3)更改发音人:
public int loadModel(String speechModelPath, String textModelPath)