@@ -23,37 +23,10 @@ public class AliyunSttService implements SttService {
2323 private static final String PROVIDER_NAME = "aliyun" ;
2424 private static final String DEFAULT_MODEL = "paraformer-realtime-v2" ; // 默认模型
2525
26- // 识别器实例
2726 private final String apiKey ;
28- private Recognition recognizer ;
29- private final Object recognizerLock = new Object (); // 用于同步访问recognizer
3027
3128 public AliyunSttService (SysConfig config ) {
3229 this .apiKey = config .getApiKey ();
33- // 初始化recognizer
34- createNewRecognizer ();
35- }
36-
37- /**
38- * 创建新的Recognition实例
39- */
40- private void createNewRecognizer () {
41- synchronized (recognizerLock ) {
42- // 如果存在旧的实例,尝试关闭它
43- if (recognizer != null ) {
44- try {
45- if (recognizer .getDuplexApi () != null ) {
46- recognizer .getDuplexApi ().close (1000 , "创建新实例" );
47- }
48- } catch (Exception e ) {
49- logger .warn ("关闭旧的Recognition实例时出错" , e );
50- }
51- }
52-
53- // 创建新实例
54- recognizer = new Recognition ();
55- logger .info ("创建了新的Recognition实例" );
56- }
5730 }
5831
5932 @ Override
@@ -75,11 +48,7 @@ public String recognition(byte[] audioData) {
7548
7649 @ Override
7750 public String streamRecognition (Sinks .Many <byte []> audioSink ) {
78- // 获取当前的recognizer实例
79- Recognition currentRecognizer ;
80- synchronized (recognizerLock ) {
81- currentRecognizer = this .recognizer ;
82- }
51+ var recognizer = new Recognition ();
8352
8453 // 创建识别参数
8554 var param = RecognitionParam .builder ()
@@ -92,7 +61,7 @@ public String streamRecognition(Sinks.Many<byte[]> audioSink) {
9261 // 使用 Reactor 执行流式识别
9362 var recognition = Flux .<String >create (sink -> {
9463 try {
95- currentRecognizer .streamCall (param , Flowable .create (emitter -> {
64+ recognizer .streamCall (param , Flowable .create (emitter -> {
9665 audioSink .asFlux ().subscribe (
9766 chunk -> emitter .onNext (ByteBuffer .wrap (chunk )),
9867 emitter ::onError ,
@@ -109,7 +78,6 @@ public String streamRecognition(Sinks.Many<byte[]> audioSink) {
10978 Throwable ::printStackTrace ,
11079 sink ::complete
11180 );
112-
11381 } catch (Exception e ) {
11482 sink .error (e );
11583 logger .info ("语音识别失败: {}" , e );
0 commit comments