-
Notifications
You must be signed in to change notification settings - Fork 390
Description
从最新日志来看,Vosk 模型加载成功,但在创建Recognizer实例时仍频繁出现 java.lang.Error: Invalid memory access,导致语音识别失败。结合之前的排查,核心问题集中在 Model 与 Recognizer 的交互逻辑 或 native 库的底层兼容性,具体分析和解决方案如下:
一、错误本质:Recognizer 初始化时的 native 层内存访问异常
错误堆栈明确指向 new Recognizer(model, AudioUtils.SAMPLE_RATE) 这一行(VoskSttService.java:165),即使用已加载的 Model 实例创建 Recognizer 时,native 方法 vosk_recognizer_new 发生内存访问错误。16:18:21.272 [] INFO c.w.c.m.c.w.c.c.WhispalMessageHandler - [handleListenMessage,288] - 开始监听 - Mode: Auto
16:18:21.272 [] INFO c.w.c.m.c.d.v.i.VadService - [initSession,300] - VAD会话已初始化: 9d5e69d5-750d-58e9-e1c0-f2a8a0158913
16:18:22.863 [] INFO c.w.c.m.c.d.v.i.VadService - [processAudio,426] - 检测到语音开始 - SessionId: 9d5e69d5-750d-58e9-e1c0-f2a8a0158913, 概率: 1.0000, 能量: 0.038061, 阈值: 0.5000
16:18:22.864 [] INFO c.w.c.m.c.w.s.WhispalDialogueService - [lambda$2,360] - stt 开始时间戳:1761898702864
16:18:22.934 [boundedElastic-1] INFO c.a.n.client.naming - [subscribe,167] - [SUBSCRIBE-SERVICE] service:whispal-service-ip-app, group:dev, clusters:
16:18:22.954 [boundedElastic-1] INFO c.a.n.client.naming - [isChangedServiceInfo,184] - init new ips(1) service: dev@@whispal-service-ip-app -> [{"instanceId":"192.168.31.244#9105#DEFAULT#dev@@whispal-service-ip-app","ip":"192.168.31.244","port":9105,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"dev@@whispal-service-ip-app","metadata":{"preserved.register.source":"SPRING_CLOUD","IPv6":"[240e:3b3:30b1:6ce0:55f4:fab:6bbf:88ac]","developer":"public"},"ipDeleteTimeout":30000,"instanceHeartBeatTimeOut":15000,"instanceHeartBeatInterval":5000}]
16:18:22.955 [boundedElastic-1] INFO c.a.n.client.naming - [processServiceInfo,169] - current ips:(1) service: dev@@whispal-service-ip-app -> [{"instanceId":"192.168.31.244#9105#DEFAULT#dev@@whispal-service-ip-app","ip":"192.168.31.244","port":9105,"weight":1.0,"healthy":true,"enabled":true,"ephemeral":true,"clusterName":"DEFAULT","serviceName":"dev@@whispal-service-ip-app","metadata":{"preserved.register.source":"SPRING_CLOUD","IPv6":"[240e:3b3:30b1:6ce0:55f4:fab:6bbf:88ac]","developer":"public"},"ipDeleteTimeout":30000,"instanceHeartBeatTimeOut":15000,"instanceHeartBeatInterval":5000}]
16:18:23.518 [nacos-grpc-client-executor-8.155.22.57-18] INFO c.a.n.c.r.client - [printIfInfoEnabled,63] - [dd1b5132-04e0-4a72-a2fb-a090adfcb167] Receive server push request, request = NotifySubscriberRequest, requestId = 31174
16:18:23.519 [nacos-grpc-client-executor-8.155.22.57-18] INFO c.a.n.c.r.client - [printIfInfoEnabled,63] - [dd1b5132-04e0-4a72-a2fb-a090adfcb167] Ack server push request, request = NotifySubscriberRequest, requestId = 31174
Exception in thread "" java.lang.Error: Invalid memory access
at org.vosk.LibVosk.vosk_recognizer_new(Native Method)
at org.vosk.Recognizer.(Recognizer.java:19)
at com.whispal.aimodel.core.stt.providers.VoskSttService.lambda$3(VoskSttService.java:165)
at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
16:18:23.756 [] ERROR c.w.c.m.c.w.s.WhispalDialogueService - [lambda$6,608] - 处理对话失败: stt未识别到有效内容
java.lang.RuntimeException: stt未识别到有效内容
at com.whispal.chat.modular.communication.whispal.service.WhispalDialogueService.lambda$6(WhispalDialogueService.java:575)
at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
16:18:28.655 [] INFO c.w.c.m.c.d.v.i.VadService - [processAudio,452] - 语音结束: 9d5e69d5-750d-58e9-e1c0-f2a8a0158913, 静音: 573ms
16:18:28.655 [] INFO c.w.c.m.c.w.s.WhispalDialogueService - [lambda$2,417] - stt 结束时间戳:1761898708655,是否正在流式识别:true,是否使用SophNet:false
16:18:28.740 [] INFO c.w.c.m.c.d.v.i.VadService - [processAudio,426] - 检测到语音开始 - SessionId: 9d5e69d5-750d-58e9-e1c0-f2a8a0158913, 概率: 1.0000, 能量: 0.109666, 阈值: 0.5000
16:18:28.741 [] INFO c.w.c.m.c.w.s.WhispalDialogueService - [lambda$2,360] - stt 开始时间戳:1761898708741
Exception in thread "" java.lang.Error: Invalid memory access
at org.vosk.LibVosk.vosk_recognizer_new(Native Method)
at org.vosk.Recognizer.(Recognizer.java:19)
at com.whispal.aimodel.core.stt.providers.VoskSttService.lambda$3(VoskSttService.java:165)
at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
16:18:29.072 [] ERROR c.w.c.m.c.w.s.WhispalDialogueService - [lambda$6,608] - 处理对话失败: stt未识别到有效内容
java.lang.RuntimeException: stt未识别到有效内容
at com.whispal.chat.modular.communication.whispal.service.WhispalDialogueService.lambda$6(WhispalDialogueService.java:575)
at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
16:18:29.723 [nacos-grpc-client-executor-8.155.22.57-20] INFO c.a.n.c.r.client - [printIfInfoEnabled,63] - [dd1b5132-04e0-4a72-a2fb-a090adfcb167] Receive server push request, request = NotifySubscriberRequest, requestId = 31176