|
|
@@ -30,9 +30,13 @@ import java.util.concurrent.TimeUnit;
|
|
|
@RefreshScope
|
|
|
public class SpeakerServiceImpl implements ISpeakerService {
|
|
|
|
|
|
- @Value("${speaker.port:}")
|
|
|
+ @Value("${speaker.port:8080}")
|
|
|
private String port;
|
|
|
|
|
|
+ @Value("${speaker.isOnline:0}")
|
|
|
+ private Integer isOnline;
|
|
|
+
|
|
|
+
|
|
|
private static Logger logger = LoggerFactory.getLogger(SpeakerServiceImpl.class);
|
|
|
@Autowired
|
|
|
private OkHttpRequest okHttpRequest;
|
|
|
@@ -163,13 +167,13 @@ public class SpeakerServiceImpl implements ISpeakerService {
|
|
|
|
|
|
@Override
|
|
|
public void textParseVoiceIps(String texts, List<PlayVo> playVoList) {
|
|
|
- commonTextParseVoice(texts, playVoList);
|
|
|
+ commonTextParseVoice(texts,playVoList);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void textParseVoiceAppIps(String texts, List<PlayVo> playVoList) {
|
|
|
+ public void textParseVoiceAppIps(String texts,List<PlayVo> playVoList) {
|
|
|
if (playVoList.size() == 1) {
|
|
|
- commonTextParseVoice(texts, playVoList);
|
|
|
+ commonTextUrlVoice(texts, playVoList);
|
|
|
} else {
|
|
|
PlayBatchVo playBatchVo = new PlayBatchVo();
|
|
|
BeanUtils.copyProperties(playVoList.get(0), playBatchVo);
|
|
|
@@ -182,17 +186,18 @@ public class SpeakerServiceImpl implements ISpeakerService {
|
|
|
for (PlayVo playVo : playVoList) {
|
|
|
snsList.add(playVo.getSn());
|
|
|
}
|
|
|
+ String deviceIp =playVoList.get(0).getDeviceIp();
|
|
|
playBatchVo.setSns(snsList.toArray(new String[snsList.size()]));
|
|
|
- boolean isTrue = invokePost(JSONObject.toJSON(playBatchVo).toString(), 1, 0);
|
|
|
+ boolean isTrue = invokePost(JSONObject.toJSON(playBatchVo).toString(), deviceIp,1, 0);
|
|
|
if (isTrue) {
|
|
|
- textParseVoiceAppIps(texts, playVoList);
|
|
|
+ textParseVoiceAppIps(texts,playVoList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void textParseUrlAppIpsOrigin(String text, List<PlayVo> playVo) {
|
|
|
- commonTextParseVoice(text, playVo);
|
|
|
+ public void textParseUrlAppIpsOrigin(String text,List<PlayVo> playVo) {
|
|
|
+ commonTextParseVoice(text,playVo);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -211,7 +216,6 @@ public class SpeakerServiceImpl implements ISpeakerService {
|
|
|
|
|
|
/**
|
|
|
* 认证失败刷新token
|
|
|
- *
|
|
|
* @param requestStr
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -231,22 +235,54 @@ public class SpeakerServiceImpl implements ISpeakerService {
|
|
|
return urlVoList;
|
|
|
}
|
|
|
|
|
|
+ private List<UrlVo> getTextParseUrl(String text,PlayVo playVo) {
|
|
|
+ List<UrlVo> urlVoList = new ArrayList<>();
|
|
|
+ String remoteUrl = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getTtsPort() + "/tts_xf.single?text=" + text + "&voice_name=xiaoyan&speed=" + playVo.getSpeed() + "&volume=" + playVo.getParams().getVol();
|
|
|
+ UrlVo urlVo = new UrlVo(text.substring(0, 1), remoteUrl);
|
|
|
+ urlVoList.add(urlVo);
|
|
|
+ return urlVoList;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 公共的文字转语音播放
|
|
|
*
|
|
|
* @param texts
|
|
|
* @param playVoList
|
|
|
*/
|
|
|
- private void commonTextParseVoice(String texts, List<PlayVo> playVoList) {
|
|
|
+ private void commonTextParseVoice(String texts,List<PlayVo> playVoList) {
|
|
|
for (PlayVo play : playVoList) {
|
|
|
+ String deviceIp=play.getDeviceIp();
|
|
|
+ List<UrlVo> urlVoList = getTextParseUrl(texts,play);
|
|
|
+ if (null != play.getParams()) {
|
|
|
+ play.getParams().setTid(UUID.randomUUID().toString());
|
|
|
+ play.getParams().setUrls(urlVoList);
|
|
|
+ }
|
|
|
+ boolean isTrue = invokePost(JSONObject.toJSON(play).toString(),deviceIp, 0, play.getPort());
|
|
|
+ if (isTrue) {
|
|
|
+ commonTextParseVoice(texts,playVoList);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 公共的语音路径播放
|
|
|
+ * commonTextUrlVoice
|
|
|
+ * @param texts
|
|
|
+ * @param playVoList
|
|
|
+ */
|
|
|
+ private void commonTextUrlVoice(String texts,List<PlayVo> playVoList) {
|
|
|
+ for (PlayVo play : playVoList) {
|
|
|
+ String deviceIp=play.getDeviceIp();
|
|
|
List<UrlVo> urlVoList = getUrlList(texts);
|
|
|
if (null != play.getParams()) {
|
|
|
play.getParams().setTid(UUID.randomUUID().toString());
|
|
|
play.getParams().setUrls(urlVoList);
|
|
|
}
|
|
|
- boolean isTrue = invokePost(JSONObject.toJSON(play).toString(), 0, play.getPort());
|
|
|
+ boolean isTrue = invokePost(JSONObject.toJSON(play).toString(),deviceIp, 0, play.getPort());
|
|
|
if (isTrue) {
|
|
|
- commonTextParseVoice(texts, playVoList);
|
|
|
+ commonTextParseVoice(texts,playVoList);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -256,13 +292,21 @@ public class SpeakerServiceImpl implements ISpeakerService {
|
|
|
* @param body
|
|
|
* @param type 0是单个,1是批量
|
|
|
*/
|
|
|
- private boolean invokePost(String body, Integer type, int port) {
|
|
|
+ private boolean invokePost(String body,String deviceIp, Integer type, int port) {
|
|
|
logger.info("+++++++++++++++++++++++++++" + body + "+++++++++++++++++++++++++");
|
|
|
String remoteUrlIp = "";
|
|
|
- if (type == 0) {
|
|
|
- remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + port;
|
|
|
- } else {
|
|
|
- remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getRemotePort() + "/api/sendtodevice";
|
|
|
+ if(isOnline==1){
|
|
|
+ if (type == 0) {
|
|
|
+ remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getRemotePort();
|
|
|
+ } else {
|
|
|
+ remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getRemotePort() + "/api/sendtodevice";
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (type == 0) {
|
|
|
+ remoteUrlIp = remoteAddress.getProtocol() + "://" + deviceIp + ":" + port;
|
|
|
+ } else {
|
|
|
+ remoteUrlIp = remoteAddress.getProtocol() + "://" + deviceIp + ":" + port + "/api/sendtodevice";
|
|
|
+ }
|
|
|
}
|
|
|
String token = getToken();
|
|
|
String responseStr = okHttpRequest.doPostJson(remoteUrlIp, token, body);
|