private void stop() throws IOException, InterruptedException {
		if (responding && !action.isOther())
			return;
		GoogleResponse gr = null;
		responding = true;
		started = false;
		if (!testMode) {
			System.out.println("Stopped");
			microphone.close();
			microphone.open();
			System.out.println("Process");
			lcd.aquireLock();
			lcd.clear();
			lcd.setCursorPosition(0, 1);
			lcd.write("Processing....");
			lcd.releaseLock();
			try {
				gr = recognizer.getRecognizedDataForFlac(flacFileName, 5, SAMPLE_RATE);
			} catch (Exception e1) {
				e1.printStackTrace();
				Speak.say("Unable to Recognize Sound");
			}
			System.out.println("Complete");
			lcd.setMode(LCDController.LCD_MODE_MAIN);
		} else {
			gr = new GoogleResponse();
			gr.setResponse(JOptionPane.showInputDialog("Test mode - Please type text"));
		}
		if (gr != null) {
			ArrayList<String> response = gr.getAllPossibleResponses();
			System.out.println(response);
			if (!action.isOther()) {
				action(response);
				responding = false;
			} else {
				action.setSaid(response);
				action.setOther(false);
			}
		} else {
			System.out.println("null");
			if (action.isOther())
				action.setSaid(null);
		}
		if (duplexEnabled)
			startMicWatcher();
	}