package com.lean56.andplug.voiceiflytek; import com.iflytek.cloud.RecognizerResult; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; import java.util.HashMap; import java.util.LinkedHashMap; /** * RecognizerResultParser * * @author Charles(zhangchaoxu@gmail.com) */ public class RecognizerResultParser { public static HashMap<String, String> mIatResults = new LinkedHashMap(); public static String parse(RecognizerResult results) { mIatResults.clear(); String text = parseIatResult(results.getResultString(), true); String sn = null; // 读取json结果中的sn字段 try { JSONObject resultJson = new JSONObject(results.getResultString()); sn = resultJson.optString("sn"); } catch (JSONException e) { e.printStackTrace(); } mIatResults.put(sn, text); StringBuffer resultBuffer = new StringBuffer(); for (String key : mIatResults.keySet()) { resultBuffer.append(mIatResults.get(key)); } return resultBuffer.toString(); } public static String parseIatResult(String json, boolean firstResult) { StringBuffer ret = new StringBuffer(); try { JSONObject joResult = new JSONObject(new JSONTokener(json)); JSONArray words = joResult.getJSONArray("ws"); for (int i = 0; i < words.length(); i++) { JSONArray items = words.getJSONObject(i).getJSONArray("cw"); if (firstResult) { // 转写结果词,默认使用第一个结果 JSONObject obj = items.getJSONObject(0); ret.append(obj.getString("w")); } else { // 如果需要多候选结果,解析数组其他字段 for(int j = 0; j < items.length(); j++) { JSONObject obj = items.getJSONObject(j); ret.append(obj.getString("w")); } } } } catch (Exception e) { e.printStackTrace(); } return ret.toString(); } }