百度TTS引擎离线语音合成+语音播报已个人测试,可用声音满意,代码只是一个模块参考还需要一些文件下面连接方可进入下载demo,虽花钱但是负责你到最后实现
mqtts长连接 双进程保活 tts中文语音播报 mqtt断开重连 demo已实现
有问题加qq1546079149
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
appId = "23599225";
appKey = "GhwGax68SruSmoiQTDZGIDdW";
secretKey = "S09oPGNDxqs8tuIGC8HFpUtN0azl5poV";
sn = "a38d176c-7a99210e-0b26-0014-75eff-00"; // 离线合成SDK必须有此参数;在线合成SDK没有此参数
initialButtons(); // 配置onclick
initialTts(); // 初始化TTS引擎
if (!isOnlineSDK) {
Log.i("SynthActivity", "so version:" + SynthesizerTool.getEngineInfo());
}
/**
* 界面上的按钮对应方法
*/
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.speak:
speak("欢迎使用"); // 播放
break;
case R.id.batchSpeak:
batchSpeak(); //播放
break;
case R.id.loadModel:
// 切换离线资源
AlertDialog.Builder builder = new AlertDialog.Builder(this, android.R.style.Theme_Holo_Light_Dialog);
final Map<String, String> map = new LinkedHashMap<>(4);
map.put("离线女声", OfflineResource.VOICE_FEMALE);
map.put("离线男声", OfflineResource.VOICE_MALE);
map.put("离线度逍遥", OfflineResource.VOICE_DUXY);
map.put("离线度丫丫", OfflineResource.VOICE_DUYY);
final String[] keysTemp = new String[4];
final String[] keys = map.keySet().toArray(keysTemp);
builder.setItems(keys, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
loadModel(map.get(keys[which]));
}
});
builder.show();
break;
case R.id.pause:
pause(); // 播放暂停
break;
case R.id.stop:
stop(); // 停止合成引擎
break;
default:
break;
}
}