63 lines
1.9 KiB
Java
63 lines
1.9 KiB
Java
|
|
package com.ruoyi.cms.handler;
|
|||
|
|
|
|||
|
|
import com.alibaba.nls.client.protocol.asr.SpeechRecognizer;
|
|||
|
|
import org.springframework.stereotype.Component;
|
|||
|
|
|
|||
|
|
import javax.websocket.*;
|
|||
|
|
import javax.websocket.server.ServerEndpoint;
|
|||
|
|
import java.io.ByteArrayInputStream;
|
|||
|
|
import java.io.IOException;
|
|||
|
|
import java.nio.ByteBuffer;
|
|||
|
|
|
|||
|
|
@Component
|
|||
|
|
@ServerEndpoint("/speech-recognition")
|
|||
|
|
public class SpeechRecognitionWebSocketHandler {
|
|||
|
|
|
|||
|
|
private SpeechRecognizerAI recognizerDemo;
|
|||
|
|
|
|||
|
|
public SpeechRecognitionWebSocketHandler() {
|
|||
|
|
// 初始化语音识别器
|
|||
|
|
String appKey = "LuvNcrddU3PH8Tau";
|
|||
|
|
String id = "LTAI5tRBahK93vPNF1JDVEPA";
|
|||
|
|
String secret = "x95OWb4cV6ccQVtbEJ2Gxm2Uwl2thJ";
|
|||
|
|
String url = System.getenv().getOrDefault("NLS_GATEWAY_URL", "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1");
|
|||
|
|
recognizerDemo = new SpeechRecognizerAI(appKey, id, secret, url);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 连接建立成功调用的方法
|
|||
|
|
*/
|
|||
|
|
@OnOpen
|
|||
|
|
public void onOpen(Session session) {
|
|||
|
|
System.out.println("WebSocket 连接建立成功,sessionId = " + session.getId());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 收到客户端消息后调用的方法
|
|||
|
|
*/
|
|||
|
|
@OnMessage(maxMessageSize=5242880)
|
|||
|
|
public void onMessage(ByteBuffer message, Session session) throws IOException {
|
|||
|
|
byte[] audioData = new byte[message.remaining()];
|
|||
|
|
message.get(audioData);
|
|||
|
|
|
|||
|
|
// 处理音频数据
|
|||
|
|
recognizerDemo.processStream(session, new ByteArrayInputStream(audioData), 16000);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 连接关闭调用的方法
|
|||
|
|
*/
|
|||
|
|
@OnClose
|
|||
|
|
public void onClose(Session session) {
|
|||
|
|
System.out.println("WebSocket 连接关闭,sessionId = " + session.getId());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 发生错误时调用的方法
|
|||
|
|
*/
|
|||
|
|
@OnError
|
|||
|
|
public void onError(Session session, Throwable error) {
|
|||
|
|
System.err.println("WebSocket 发生错误:" + error.getMessage());
|
|||
|
|
error.printStackTrace();
|
|||
|
|
}
|
|||
|
|
}
|