科大讯飞的语音听写包,读入文件都省去了,内部直接调用了系统的录音功能,太强大了
都是开发包的功劳啊~~,感觉自己什么都没有做,惭愧............
工具类
package iflytekTest;
import com.iflytek.cloud.speech.*;
import java.io.IOException;

public class SpeechLisAndWrite {
    private static StringBuffer mResult = new StringBuffer();
    public static String res = "";

    public static void Recognize() {
        if (SpeechRecognizer.getRecognizer() == null)
            SpeechRecognizer.createRecognizer();
        SpeechRecognizer mIat = SpeechRecognizer.getRecognizer();
        // 设置听写参数
        mIat.setParameter(SpeechConstant.DOMAIN, "iat");
        mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        mIat.setParameter(SpeechConstant.ACCENT, "mandarin");
        mIat.setParameter( SpeechConstant.RESULT_TYPE, "plain" );

        // 开始监听
        mIat.startListening(mListenser);
        // 需要等待语音识别结果
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 调用命令打开百度
        if(res.equals("百度。")) {
            try {
                // rundll32 url.dll,FileProtocolHandler 表示打开默认浏览器
                // 可换成 cmd /c start iexplore 表示打开IE
                String url = "http://www.baidu.com";
                Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    private static RecognizerListener mListenser = new RecognizerListener() {
        public void onVolumeChanged(int i) {
        }

        public void onBeginOfSpeech() {
            System.out.println("开始听写");
        }

        public void onEndOfSpeech() {
            System.out.println("结束听写");
        }

        public void onResult(RecognizerResult recognizerResult, boolean b) {
            mResult.append(recognizerResult.getResultString());
            if(b) {
                res += mResult.toString();
                System.out.println(res);
            }
        }
 
        public void onError(SpeechError speechError) {
        }

        public void onEvent(int i, int i1, int i2, String s) {
        }
    };
}

启动类
package iflytekTest;
import com.iflytek.cloud.speech.SpeechUtility;

public class SpeechLisAndWriteTest {
    private static final String APPID = "XXXXXX";  // 这里改成自己的
    public static void main(String[] args) {
        SpeechUtility.createUtility("appid=" + APPID);
        SpeechLisAndWrite.Recognize();
    }
}