package com.akjava.gwt.html5test.client; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.akjava.gwt.html5.client.speechrecognition.SpeechRecognition; import com.akjava.gwt.html5.client.speechrecognition.SpeechRecognitionAlternative; import com.akjava.gwt.html5.client.speechrecognition.SpeechRecognitionError; import com.akjava.gwt.html5.client.speechrecognition.SpeechRecognitionEvent; import com.akjava.gwt.html5.client.speechrecognition.SpeechRecognitionResult; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionAudioEndListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionAudioStartListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionEndListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionErrorListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionNomatchListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionResultListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionSoundEndListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionSoundStartListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionSpeechEndListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionSpeechStartListener; import com.akjava.gwt.html5.client.speechrecognition.listeners.SpeechRecognitionStartListener; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.text.shared.Renderer; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextArea; import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.client.ui.VerticalPanel; public class RecognizeTest extends VerticalPanel{ SpeechRecognition speechRecognition; private ValueListBox<String> langBox; private TextArea resultArea; public RecognizeTest(){ VerticalPanel root=new VerticalPanel(); this.add(root); if(!SpeechRecognition.isSupported()){ root.add(new Label("SpeechRecognition not supported.Use Chrome")); return; } langBox = new ValueListBox<String>(new Renderer<String>() { @Override public String render(String object) { // TODO Auto-generated method stub return object; } @Override public void render(String object, Appendable appendable) throws IOException { // TODO Auto-generated method stub } }); root.add(langBox); List<String> values=Lists.newArrayList("en-US","ja-JP"); langBox.setValue(values.get(0)); langBox.setAcceptableValues(values); HorizontalPanel h1=new HorizontalPanel(); root.add(h1); Button start=new Button("Start",new ClickHandler() { @Override public void onClick(ClickEvent event) { startRecognize(); } }); h1.add(start); Button stop=new Button("Stop",new ClickHandler() { @Override public void onClick(ClickEvent event) { speechRecognition.stop(); } }); h1.add(stop); Button abort=new Button("Abort",new ClickHandler() { @Override public void onClick(ClickEvent event) { speechRecognition.abort(); } }); h1.add(abort); resultArea = new TextArea(); resultArea.setSize("700px", "100px"); root.add(resultArea); } protected void startRecognize() { speechRecognition=SpeechRecognition.create(); //speechRecognition.setInterimResults(true); speechRecognition.setContinuous(true);//TODO check speechRecognition.setLang(langBox.getValue()); speechRecognition.setMaxAlternatives(10); speechRecognition.setOnResult(new SpeechRecognitionResultListener() { @Override public void onResult(SpeechRecognitionEvent event) { //HTML5Test.log(event); int index=event.getResultIndex(); HTML5Test.log("index:"+index); List<String> lines=new ArrayList<String>(); for(int i=0;i<event.getResults().length();i++){ SpeechRecognitionResult result=event.getResults().get(i); //HTML5Test.log(result); List<String> texts=new ArrayList<String>(); //HTML5Test.log("final:"+result.isFinal()); for(int j=0;j<result.getLength();j++){ SpeechRecognitionAlternative alternative=result.get(j); HTML5Test.log(result); //SpeechRecognitionAlternative alternative=result.get(j); //HTML5Test.log(alternative); texts.add(alternative.getTranscript()); } lines.add(Joiner.on(",").join(texts)); } resultArea.setText(Joiner.on("\n").join(lines)); } }); HTML5Test.log(speechRecognition); speechRecognition.setOnError(new SpeechRecognitionErrorListener() { @Override public void onError(SpeechRecognitionError error) { HTML5Test.log(error.getError()+","+error.getMessage()); } }); speechRecognition.setOnAudioStart(new SpeechRecognitionAudioStartListener() { @Override public void onAudioStart() { HTML5Test.log("AudioStart:"); } }); speechRecognition.setOnSoundStart(new SpeechRecognitionSoundStartListener() { @Override public void onSoundStart() { HTML5Test.log("SoundStart:"); } }); speechRecognition.setOnSpeechStart(new SpeechRecognitionSpeechStartListener() { @Override public void onSpeechStart() { HTML5Test.log("SpeechStart:"); } }); speechRecognition.setOnSpeechEnd(new SpeechRecognitionSpeechEndListener() { @Override public void onSpeechEnd() { HTML5Test.log("SpeechEnd:"); } }); speechRecognition.setOnSoundEnd(new SpeechRecognitionSoundEndListener() { @Override public void onSoundEnd() { HTML5Test.log("SoundEnd:"); } }); speechRecognition.setOnAudioEnd(new SpeechRecognitionAudioEndListener() { @Override public void onAudioEnd() { HTML5Test.log("AudioEnd:"); } }); speechRecognition.setOnNomatch(new SpeechRecognitionNomatchListener() { @Override public void onNomatch(SpeechRecognitionEvent event) { HTML5Test.log("Nomatch:"); HTML5Test.log(event); } }); speechRecognition.setOnStart(new SpeechRecognitionStartListener() { @Override public void onStart() { HTML5Test.log("Start:"); } }); speechRecognition.setOnEnd(new SpeechRecognitionEndListener() { @Override public void onEnd() { HTML5Test.log("End:"); } }); HTML5Test.log(speechRecognition); speechRecognition.start(); } }