From 04e3bef1c953f345104d6c5fc5fbe58c6b388940 Mon Sep 17 00:00:00 2001 From: Dmitriy Malych Date: Mon, 21 Nov 2016 12:12:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AudioTestNow.flac | Bin 86 -> 9368 bytes src/com/company/CommandsRecognizer.java | 62 ++++++++++++++ src/com/company/Main.java | 10 ++- src/com/company/RecordingThread.java | 105 ++++++++++++++++++++++++ src/com/company/ResponseListener.java | 10 +++ src/com/company/temp.java | 30 +++++++ temp.flac | Bin 0 -> 11287 bytes 7 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 src/com/company/CommandsRecognizer.java create mode 100644 src/com/company/RecordingThread.java create mode 100644 src/com/company/ResponseListener.java create mode 100644 src/com/company/temp.java create mode 100644 temp.flac diff --git a/AudioTestNow.flac b/AudioTestNow.flac index 56e1a569a6997c08bca494a0c6e0ad27ed398bb4..acceb0b551fc2655d43e2490e138f5f58b48b8b1 100644 GIT binary patch literal 9368 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 b1^_^;7yt_3d responces = response.getOtherPossibleResponses(); + + double startTrainingSimilarity = 0; + double poseTypeSimilarity = 0; + double capturePoseSimilarity = 0; + double completeTrainingSimilarity = 0; + + + for(String responce : responces ) { + if(responce != null) { + + if(startTrainingSimilarity < jaroWinkler.similarity(responce, startTraining)) { + startTrainingSimilarity = jaroWinkler.similarity(responce, startTraining); + } + + if(poseTypeSimilarity < jaroWinkler.similarity(responce, poseType)) { + poseTypeSimilarity = jaroWinkler.similarity(responce, poseType); + } + + if(capturePoseSimilarity < jaroWinkler.similarity(responce, capturePose)) { + capturePoseSimilarity = jaroWinkler.similarity(responce, capturePose); + } + + if(completeTrainingSimilarity < jaroWinkler.similarity(responce, completeTraining)) { + completeTrainingSimilarity = jaroWinkler.similarity(responce, completeTraining); + } + } + } + + System.out.println(startTrainingSimilarity); + System.out.println(poseTypeSimilarity); + System.out.println(capturePoseSimilarity); + System.out.println(completeTrainingSimilarity); + } +} diff --git a/src/com/company/Main.java b/src/com/company/Main.java index a730351..475f0ae 100644 --- a/src/com/company/Main.java +++ b/src/com/company/Main.java @@ -16,7 +16,7 @@ */ public class Main { - public static void main (String[]args) { + public static void main1 (String[]args) { // Mixer.Info[] infoArray = AudioSystem.getMixerInfo(); // for(Mixer.Info info : infoArray) { @@ -72,4 +72,12 @@ public static void main (String[]args) { file.deleteOnExit (); //Deletes the file as it is no longer necessary. } + + public static void main (String[] args) { + RecordingThread recordingThread = new RecordingThread(); + recordingThread.addResponceListener(new CommandsRecognizer()); + recordingThread.addResponceListener(new temp()); + + recordingThread.start(); + } } \ No newline at end of file diff --git a/src/com/company/RecordingThread.java b/src/com/company/RecordingThread.java new file mode 100644 index 0000000..c22cf02 --- /dev/null +++ b/src/com/company/RecordingThread.java @@ -0,0 +1,105 @@ +package com.company; + +import com.darkprograms.speech.microphone.MicrophoneAnalyzer; +import com.darkprograms.speech.recognizer.GoogleResponse; +import com.darkprograms.speech.recognizer.Recognizer; +import javaFlacEncoder.FLACFileWriter; + +import java.io.File; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +/** + * Created by user on 20.11.16. + */ +public class RecordingThread extends Thread { + + private String apiKey = "AIzaSyDMRFZsdncfP2udmTbozAQ2owJuL5RRm34"; + + private boolean debug = true; + + private int minimumVolumeToStartrecording = 40; + private int volumeToStopRecording = 20; + private int checkVolumeSampleTime = 10; + private int sampleTime = 1000; + + private MicrophoneAnalyzer microphone; + private File tempAudioFile; + private Recognizer recognizer; + + private List listeners; + + public RecordingThread() { + + microphone = new MicrophoneAnalyzer(FLACFileWriter.FLAC); + tempAudioFile = new File("temp.flac"); + microphone.setAudioFile(tempAudioFile); + recognizer = new Recognizer(Recognizer.Languages.RUSSIAN, apiKey); + listeners = new ArrayList(); + + } + + public void addResponceListener(ResponseListener listener) { + listeners.add(listener); + } + + @Override + public void run() { + + while (true) { + microphone.open(); + + try { + microphone.captureAudioToFile(microphone.getAudioFile()); + Thread.sleep(checkVolumeSampleTime * 3); + + int volume = microphone.getAudioVolume(checkVolumeSampleTime); + boolean isSpeaking = (volume > minimumVolumeToStartrecording); + + if (isSpeaking) { + + DebugLog("RECORDING..."); + + do { + Thread.sleep(sampleTime);//Updates every second + } while (microphone.getAudioVolume(sampleTime) > volumeToStopRecording); + + + DebugLog("Recording Complete!"); + DebugLog("Recognizing..."); + + GoogleResponse response = recognizer.getRecognizedDataForFlac(microphone.getAudioFile(), 3); + notifyListeners(response); + + DebugLog("Looping back");//Restarts loops + + } + + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + System.out.println("Error Occured"); + } finally { + microphone.close();//Makes sure microphone closes on exit. + } + } + + } + + private void notifyListeners (GoogleResponse response) { + for(ResponseListener listener : listeners) { + if(listener != null) { + listener.onResponce(response); + } + } + } + + + private void DebugLog(String message) { + if (debug) { + System.out.println(message); + } + } + +} diff --git a/src/com/company/ResponseListener.java b/src/com/company/ResponseListener.java new file mode 100644 index 0000000..9f6fc56 --- /dev/null +++ b/src/com/company/ResponseListener.java @@ -0,0 +1,10 @@ +package com.company; + +import com.darkprograms.speech.recognizer.GoogleResponse; + +/** + * Created by user on 21.11.16. + */ +public interface ResponseListener { + void onResponce(GoogleResponse response); +} diff --git a/src/com/company/temp.java b/src/com/company/temp.java new file mode 100644 index 0000000..da26fe4 --- /dev/null +++ b/src/com/company/temp.java @@ -0,0 +1,30 @@ +package com.company; + +import com.darkprograms.speech.recognizer.GoogleResponse; + +/** + * Created by user on 21.11.16. + */ +public class temp implements ResponseListener { + @Override + public void onResponce(GoogleResponse response) { + + displayResponse(response); + + } + + + private static void displayResponse(GoogleResponse gr) { + if (gr.getResponse() == null) { + System.out.println((String) null); + return; + } + System.out.println("Google Response: " + gr.getResponse()); + System.out.println("Google is " + Double.parseDouble(gr.getConfidence()) * 100 + "% confident in" + + " the reply"); + System.out.println("Other Possible responses are: "); + for (String s : gr.getOtherPossibleResponses()) { + System.out.println("\t" + s); + } + } +} diff --git a/temp.flac b/temp.flac new file mode 100644 index 0000000000000000000000000000000000000000..d67b4d3e2f83ef62d75c577a046f9e0e2c196819 GIT binary patch literal 11287 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 literal 0 HcmV?d00001