diff --git a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java index 6783642..5a5fe9e 100644 --- a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java +++ b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java @@ -101,9 +101,6 @@ public class AudiobookRecorder extends JFrame { SourceDataLine play = null; - public HavenQueue havenQueue = new HavenQueue(); - - public TargetDataLine microphone = null; public AudioInputStream microphoneStream = null; @@ -113,7 +110,6 @@ public class AudiobookRecorder extends JFrame { toolBar = new MainToolBar(this); toolBar.addSeparator(); toolBar.add(Box.createHorizontalGlue()); - toolBar.add(havenQueue); ob.add(toolBar, BorderLayout.NORTH); } @@ -815,7 +811,6 @@ public class AudiobookRecorder extends JFrame { JMenuObject o = (JMenuObject)e.getSource(); Sentence s = (Sentence)o.getObject(); if (!s.isLocked()) { - havenQueue.submit(s); } } }); @@ -1128,7 +1123,6 @@ public class AudiobookRecorder extends JFrame { for (Enumeration s = c.children(); s.hasMoreElements();) { Sentence snt = (Sentence)s.nextElement(); if (snt.getId().equals(snt.getText())) { - havenQueue.submit(snt); } } } diff --git a/src/uk/co/majenko/audiobookrecorder/HavenQueue.java b/src/uk/co/majenko/audiobookrecorder/HavenQueue.java deleted file mode 100644 index 1ff0d04..0000000 --- a/src/uk/co/majenko/audiobookrecorder/HavenQueue.java +++ /dev/null @@ -1,83 +0,0 @@ -package uk.co.majenko.audiobookrecorder; - -import java.util.*; -import java.util.concurrent.*; -import javax.swing.*; -import java.awt.*; -import java.util.Timer; - -public class HavenQueue extends JPanel { - ConcurrentLinkedQueue sentenceList = new ConcurrentLinkedQueue(); - - Timer timer = new Timer(); - - Sentence currentSentence = null; - - JLabel count; - - public HavenQueue() { - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 30000); - count = new JLabel("Haven queue: 0"); - setLayout(new BorderLayout()); - add(count, BorderLayout.CENTER); - - count.setOpaque(false); - setOpaque(false); - count.setForeground(Color.WHITE); - } - - public void processQueue() { - - count.setText("Haven queue: " + sentenceList.size()); - - if (currentSentence == null) { - // Grab a new sentence to process. - currentSentence = sentenceList.poll(); - - if (currentSentence != null) { - if (!currentSentence.postHavenData()) { // Failed. Add to the end of the queue and wait a bit - submit(currentSentence); - currentSentence = null; - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 30000); - return; - } - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 5000); - return; - } - - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 5000); - return; - } - - if (currentSentence != null) { - currentSentence.processPendingHaven(); - int status = currentSentence.getHavenStatus(); - switch (status) { - case 0: // Um... not running...? - currentSentence = null; - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 30000); - return; - case 1: // Still processing... - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 5000); - return; - case 2: // Finished - currentSentence = null; - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 30000); - return; - case 3: // Failed - currentSentence = null; - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 30000); - return; - } - } - - timer.schedule(new TimerTask() { public void run() { processQueue(); }}, 30000); - } - - public void submit(Sentence s) { - s.setOverrideText("[queued...]"); - AudiobookRecorder.window.bookTreeModel.reload(s); - sentenceList.add(s); - count.setText("Haven queue: " + sentenceList.size()); - } -} diff --git a/src/uk/co/majenko/audiobookrecorder/Options.java b/src/uk/co/majenko/audiobookrecorder/Options.java index abd2a30..89d0ceb 100644 --- a/src/uk/co/majenko/audiobookrecorder/Options.java +++ b/src/uk/co/majenko/audiobookrecorder/Options.java @@ -44,8 +44,6 @@ public class Options extends JDialog { JSpinner etherealAttenuation; JSpinner etherealOffset; - JTextField havenApiKey; - JTextField externalEditor; JTextArea startupScript; @@ -325,11 +323,6 @@ public class Options extends JDialog { addSeparator(optionsPanel); - enableParsing = addCheckBox(optionsPanel, "Enable automatic speech-to-text submission", getBoolean("process.haven.auto")); - havenApiKey = addTextField(optionsPanel, "Haven OnDemand API Key", get("process.haven.apikey")); - - addSeparator(optionsPanel); - externalEditor = addTextField(optionsPanel, "External Editor Command", get("editor.external")); addSeparator(optionsPanel); @@ -585,9 +578,6 @@ public class Options extends JDialog { defaultPrefs.put("audio.export.bitrate", "256000"); defaultPrefs.put("audio.export.samplerate", "44100"); - defaultPrefs.put("process.sphinx", "false"); - defaultPrefs.put("process.haven.apikey", ""); - defaultPrefs.put("editor.external", ""); defaultPrefs.put("cache.size", "100"); @@ -709,8 +699,6 @@ public class Options extends JDialog { set("catenation.post-section", postSectionGap.getValue()); set("audio.export.bitrate", ((KVPair)bitRate.getSelectedItem()).key); set("audio.export.samplerate", ((KVPair)exportRate.getSelectedItem()).key); - set("process.sphinx", enableParsing.isSelected()); - set("process.haven.apikey", havenApiKey.getText()); set("editor.external", externalEditor.getText()); set("cache.size", cacheSize.getValue()); set("audio.recording.trim.fft", fftThreshold.getValue()); diff --git a/src/uk/co/majenko/audiobookrecorder/Sentence.java b/src/uk/co/majenko/audiobookrecorder/Sentence.java index 345e941..c5ef96f 100644 --- a/src/uk/co/majenko/audiobookrecorder/Sentence.java +++ b/src/uk/co/majenko/audiobookrecorder/Sentence.java @@ -49,14 +49,6 @@ public class Sentence extends DefaultMutableTreeNode implements Cacheable { double gain = 1.0d; - String havenJobId = ""; - - // 0: Not processed - // 1: Submitted - // 2: Procesisng finished - // 3: Processing failed - int havenStatus = 0; - String overrideText = null; public void setOverrideText(String s) { overrideText = s; } @@ -190,9 +182,6 @@ public class Sentence extends DefaultMutableTreeNode implements Cacheable { } else if (tm.equals("fft")) { autoTrimSampleFFT(); } - if (Options.getBoolean("process.haven.auto")) { - recognise(); - } } } @@ -495,7 +484,6 @@ public class Sentence extends DefaultMutableTreeNode implements Cacheable { } public void recognise() { - AudiobookRecorder.window.havenQueue.submit(Sentence.this); } public void setLocked(boolean l) { @@ -596,137 +584,6 @@ public class Sentence extends DefaultMutableTreeNode implements Cacheable { return attention; } - public String getHavenJobId() { - return havenJobId; - } - - public void setHavenJobId(String i) { - havenJobId = i; - } - - public int getHavenStatus() { - return havenStatus; - } - - public void setHavenStatus(int i) { - havenStatus = i; - } - - @SuppressWarnings("deprecation") - public boolean postHavenData() { - String apiKey = Options.get("process.haven.apikey"); - if (apiKey == null || apiKey.equals("")) return false; - - CloseableHttpClient httpclient = HttpClients.createDefault(); - - setOverrideText("[submitting...]"); - AudiobookRecorder.window.bookTreeModel.reload(this); - - try { - HttpPost httppost = new HttpPost("https://api.havenondemand.com/1/api/async/recognizespeech/v2?apikey=" + apiKey); - - FileBody bin = new FileBody(getFile()); - StringBody language = new StringBody("en-GB"); - - HttpEntity reqEntity = MultipartEntityBuilder.create() - .addPart("language_model", language) - .addPart("file", bin) - .build(); - - httppost.setEntity(reqEntity); - - CloseableHttpResponse response = httpclient.execute(httppost); - try { - if (response.getStatusLine().getStatusCode() != 200) { - System.err.println("Error posting data: " + response.getStatusLine().getStatusCode()); - return false; - } - - HttpEntity resEntity = response.getEntity(); - if (resEntity != null) { - JSONObject obj = new JSONObject(EntityUtils.toString(resEntity)); - havenJobId = obj.getString("jobID"); - System.err.println("Submitted new Haven OnDemand job #" + havenJobId); - havenStatus = 1; - } - EntityUtils.consume(resEntity); - } catch (Exception ex) { - ex.printStackTrace(); - return false; - } - } catch (Exception ex) { - ex.printStackTrace(); - return false; - } - - - return true; -// eddec91c-6018-4dcd-bd8d-5e96b23e334c --form "language_model=en-US" --form "file=@3e67460c-f298-4e2c-a412-d375d489e1b3.wav" - } - - public void processPendingHaven() { - if (havenStatus != 1) return; - - - String apiKey = Options.get("process.haven.apikey"); - if (apiKey == null || apiKey.equals("")) return; - - CloseableHttpClient httpclient = HttpClients.createDefault(); - - - try { - HttpPost httppost = new HttpPost("https://api.havenondemand.com/1/job/status/" + havenJobId + "?apikey=" + apiKey); - - HttpEntity reqEntity = MultipartEntityBuilder.create().build(); - httppost.setEntity(reqEntity); - - CloseableHttpResponse response = httpclient.execute(httppost); - try { - if (response.getStatusLine().getStatusCode() != 200) { - havenStatus = 3; - return; - } - - HttpEntity resEntity = response.getEntity(); - if (resEntity != null) { - JSONObject obj = new JSONObject(EntityUtils.toString(resEntity)); - - System.err.println(havenJobId + ": " + obj.getString("status")); - - if (obj.getString("status").equals("finished")) { - havenStatus = 2; - JSONArray textItems = obj.getJSONArray("actions").getJSONObject(0).getJSONObject("result").getJSONArray("items"); - - StringBuilder out = new StringBuilder(); - - for (int i = 0; i < textItems.length(); i++) { - out.append(textItems.getJSONObject(i).getString("text")); - out.append(" "); - } - String result = out.toString(); - setText(result.trim()); - AudiobookRecorder.window.bookTreeModel.reload(Sentence.this); - System.err.println(result); - } else if (obj.getString("status").equals("queued")) { - havenStatus = 1; - setOverrideText("[processing...]"); - AudiobookRecorder.window.bookTreeModel.reload(Sentence.this); - } else { - text = id; - AudiobookRecorder.window.bookTreeModel.reload(Sentence.this); - havenStatus = 3; - return; - } - } - EntityUtils.consume(resEntity); - } catch (Exception ex) { - ex.printStackTrace(); - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } - public double getPeakValue() { double oldGain = gain; gain = 1.0d;