问题描述
这是错误消息
2020-08-20 21:20:37.130错误30392 --- [-worker-ELG-1-2] io.grpc.internal.ManagedChannelImpl:[Channel :((speech.googleapis.com:443 )] SynchronizationContext中未捕获的异常。惊慌!
java.util.concurrent.RejectedExecutionException:任务java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@5f5d2cc从java.util.concurrent.ScheduledThreadPoolExecutor@57e062cf拒绝了[已终止,池大小= 0,活动线程= 0,排队的任务= 0,已完成的任务= 0] 在java.util.concurrent.ThreadPoolExecutor $ AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)〜[na:1.8.0_201] 在java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)〜[na:1.8.0_201] 在java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:326)〜[na:1.8.0_201] 在java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:533)〜[na:1.8.0_201] 在java.util.concurrent.ScheduledThreadPoolExecutor.execute(ScheduledThreadPoolExecutor.java:622)〜[na:1.8.0_201] 在io.grpc.internal.DelayedClientTransport.reprocess(DelayedClientTransport.java:297)〜[grpc-core-1.31.1.jar!/:1.31.1] 在io.grpc.internal.ManagedChannelImpl.updateSubchannelPicker(ManagedChannelImpl.java:832)〜[grpc-core-1.31.1.jar!/:1.31.1] 在io.grpc.internal.ManagedChannelImpl.access $ 4400(ManagedChannelImpl.java:106)〜[grpc-core-1.31.1.jar!/:1.31.1] 在io.grpc.internal.ManagedChannelImpl $ LbHelperImpl $ 1UpdateBalancingState.run(ManagedChannelImpl.java:1147)〜[grpc-core-1.31.1.jar!/:1.31.1] 在io.grpc.SynchronizationContext.drain(SynchronizationContext.java:95)[grpc-api-1.31.1.jar!/:1.31.1] 在io.grpc.SynchronizationContext.execute(SynchronizationContext.java:127)[grpc-api-1.31.1.jar!/:1.31.1] 在io.grpc.internal.InternalSubchannel $ TransportListener.transportReady(InternalSubchannel.java:546)[grpc-core-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.grpc.netty.ClientTransportLifecycleManager.notifyReady(ClientTransportLifecycleManager.java:43)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler $ FrameListener.onSettingsRead(NettyClientHandler.java:854)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder $ FrameReadListener.onSettingsRead(DefaultHttp2ConnectionDecoder.java:479)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder $ PrefaceFrameListener.onSettingsRead(DefaultHttp2ConnectionDecoder.java:702)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2InboundFrameLogger $ 1.onSettingsRead(Http2InboundFrameLogger.java:93)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.readSettingsFrame(DefaultHttp2FrameReader.java:542)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.processpayloadState(DefaultHttp2FrameReader.java:263)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:160)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2InboundFrameLogger.readFrame(Http2InboundFrameLogger.java:41)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:174)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler $ FrameDecoder.decode(Http2ConnectionHandler.java:378)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler $ PrefaceDecoder.decode(Http2ConnectionHandler.java:242)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:438)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.BytetoMessageDecoder.decodeRemovalReentryProtection(BytetoMessageDecoder.java:498)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.BytetoMessageDecoder.callDecode(BytetoMessageDecoder.java:437)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.BytetoMessageDecoder.channelRead(BytetoMessageDecoder.java:276)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1486)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1235)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1282)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.BytetoMessageDecoder.decodeRemovalReentryProtection(BytetoMessageDecoder.java:498)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.BytetoMessageDecoder.callDecode(BytetoMessageDecoder.java:437)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.handler.codec.BytetoMessageDecoder.channelRead(BytetoMessageDecoder.java:276)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline $ HeadContext.channelRead(DefaultChannelPipeline.java:1410)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollStreamChannel $ EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor $ 4.run(SingleThreadEventExecutor.java:989)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.util.internal.ThreadExecutorMap $ 2.run(ThreadExecutorMap.java:74)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)[grpc-netty-shaded-1.31.1.jar!/:1.31.1] 在java.lang.Thread.run(Thread.java:748)[na:1.8.0_201]
我的代码
public class GoogleRealAsrClient {
public static void streamingMicRecognize() throws Exception {
recognize();
}
/** Performs microphone streaming speech recognition with a duration of 1 minute. */
public static void recognize() throws Exception {
Resource resource = new ClassPathResource("ASR-WIZ-6dc168cfb480.json");
GoogleCredentials credentials = GoogleCredentials.fromStream(resource.getInputStream())
.createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"));
SpeechSettings speechSettings =
SpeechSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credentials))
.build();
long speechSettingsstartTime = System.currentTimeMillis();
ResponSEObserver<StreamingRecognizeResponse> responSEObserver = null;
try (SpeechClient client = SpeechClient.create(speechSettings)) {
log.info("recognize begin");
responSEObserver =
new ResponSEObserver<StreamingRecognizeResponse>() {
ArrayList<StreamingRecognizeResponse> responses = new ArrayList<>();
@Override
public void onStart(StreamController controller) {
log.info("start");
}
@Override
public void onResponse(StreamingRecognizeResponse response) {
log.info("onResponse is {}",response);
responses.add(response);
}
@Override
public void onComplete() {
for (StreamingRecognizeResponse response : responses) {
StreamingRecognitionResult result = response.getResultsList().get(0);
SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
System.out.printf("Transcript : %s\n",alternative.getTranscript());
}
}
@Override
public void onError(Throwable t) {
log.error("recognize error",t);
}
};
ClientStream<StreamingRecognizeRequest> clientStream = client.streamingRecognizeCallable().splitCall(responSEObserver);
RecognitionConfig recognitionConfig =
RecognitionConfig.newBuilder()
.setEncoding(AudioEncoding.LINEAR16)
.setLanguageCode("en-US")
.setSampleRateHertz(16000)
.build();
StreamingRecognitionConfig streamingRecognitionConfig =
StreamingRecognitionConfig.newBuilder().setConfig(recognitionConfig).build();
StreamingRecognizeRequest request =
StreamingRecognizeRequest.newBuilder()
.setStreamingConfig(streamingRecognitionConfig)
.build(); // The first request in a streaming call has to be a config
clientStream.send(request);
File file = new File("/home/google/1.pcm");
File file2 = new File ("/home/google/2.pcm");
byte[] data1 = toByteArray(new FileInputStream(file));
byte[] data2 = toByteArray(new FileInputStream(file2));
request = StreamingRecognizeRequest.newBuilder()
.setAudioContent(ByteString.copyFrom(data1))
.build();
clientStream.send(request);
Thread.sleep(200);
request = StreamingRecognizeRequest.newBuilder()
.setAudioContent(ByteString.copyFrom(data2))
.build();
clientStream.send(request);
} catch (Exception e) {
log.error("recognize error",e);
}
log.info("recognize end");
responSEObserver.onComplete();
}
public static byte[] toByteArray(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer,n);
}
return output.toByteArray();
}
}
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>9.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-speech</artifactId>
</dependency>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)