java.websocket不存在,Java-WebSocket调用报错:WebSocketClient objects are not reuseable

赵景曜
2023-12-01

importcom.google.common.collect.ImmutableMap;importcom.google.common.io.ByteArrayDataOutput;importcom.google.common.io.ByteStreams;importcom.google.gson.Gson;importcom.xxx.web.open.service.CacheService;importcom.xxx.web.open.util.AudioStreamHelper;importlombok.Setter;importlombok.extern.slf4j.Slf4j;importorg.apache.commons.lang3.tuple.ImmutablePair;importorg.java_websocket.enums.ReadyState;importorg.java_websocket.client.WebSocketClient;importorg.java_websocket.handshake.ServerHandshake;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Component;importorg.springframework.util.DigestUtils;importjava.io.File;importjava.net.URI;importjava.nio.ByteBuffer;importjava.util.Map;importjava.util.Objects;importjava.util.UUID;importjava.util.concurrent.locks.ReentrantLock;/***

* 离线语音合成*/@Slf4j

@Component("ttsService")public class OfflineTTSService extendsWebSocketClient {public String textToSpeech(String text, String speakerId) throwsInterruptedException {/***

* 根据请求的内容计算hash值,防止请求重放,产生不必要的请求,浪费服务器资源(内存、cpu、硬盘空间)

* hash值产生算法:

* 1、byteArrayOf("tts")+byteArrayOf("待转换的文字")

* 2、byteArrayOf("asr")+音频流二进制 byte[]

* 3、byteArrayOf("merge") + 文件流 byteArray1[] + 文件流byteArray2[] + ... 文件流 byteArrayN[]*/ImmutablePair result =findConversion(computeHash(text,speakerId));

Boolean existed=result.getLeft();if(existed)

{

String uuid=result.getRight();

log.warn("重复的合成请求:{}",uuid);returnuuid;

}synchronized (this)

{if(getReadyState()==ReadyState.NOT_YET_CONNECTED) {if(isClosed()) {

reconnectBlocking();

}else{

connectBlocking();

}

}else if(getReadyState() ==ReadyState.CLOSED){

reconnectBlocking();

}

}

}

 类似资料: