import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import java.net.InetSocketAddress;
public
class
SpeechRecognitionServer
extends
WebSocketServer {
private
SpeechClient speechClient;
public
SpeechRecognitionServer(InetSocketAddress address) {
super(address);
try
{
this.speechClient = SpeechClient.create();
}
catch
(IOException e) {
e.printStackTrace();
}
}
@Override
public
void onOpen(WebSocket conn, ClientHandshake handshake) {
}
@Override
public
void onClose(WebSocket conn, int code, String reason, boolean remote) {
try
{
speechClient.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
@Override
public
void onMessage(WebSocket conn, String message) {
byte[] audioData = decodeAudioData(message);
startRecognition(audioData);
}
@Override
public
void onError(WebSocket conn, Exception ex) {
}
private
void startRecognition(byte[] audioData) {
RecognitionConfig config = RecognitionConfig.newBuilder()
.setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
.setSampleRateHertz(16000)
.setLanguageCode(
"en-US"
)
.build();
RecognitionAudio audio = RecognitionAudio.newBuilder()
.setContent(ByteString.copyFrom(audioData))
.build();
RecognizeResponse response = speechClient.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
for
(SpeechRecognitionResult result : results) {
System.out.println(result.getAlternatives(0).getTranscript());
}
}
private
byte[] decodeAudioData(String message) {
return
null;
}
}