语音转文本

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
    android:layout_width="match_parent" android:layout_height="match_parent"
   android:orientation="vertical"
    tools:context="com.bwie.yuyinshuru.MainActivity">

    <TextView
        android:id="@+id/etText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
    <Button
        android:id="@+id/button"
        android:layout_marginTop="20dp"
        android:text="语音输入"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

DictationResult

package com.bwie.yuyinshuru;

import java.util.List;

/**
 * Created by lenovo on 2017/10/31.
 */

public class DictationResult {
    private String sn;
    private String ls;
    private String bg;
    private String ed;

    private List<Words> ws;

    public static class Words {
        private String bg;
        private List<Cw> cw;

        public static class Cw {
            private String w;
            private String sc;

            public String getW() {
                return w;
            }

            public void setW(String w) {
                this.w = w;
            }

            public String getSc() {
                return sc;
            }

            public void setSc(String sc) {
                this.sc = sc;
            }

            @Override
            public String toString() {
                return w;
            }
        }

        public String getBg() {
            return bg;
        }

        public void setBg(String bg) {
            this.bg = bg;
        }

        public List<Cw> getCw() {
            return cw;
        }

        public void setCw(List<Cw> cw) {
            this.cw = cw;
        }

        @Override
        public String toString() {
            String result = "";
            for (Cw cwTmp : cw) {
                result += cwTmp.toString();
            }
            return result;
        }
    }

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public String getLs() {
        return ls;
    }

    public void setLs(String ls) {
        this.ls = ls;
    }

    public String getBg() {
        return bg;
    }

    public void setBg(String bg) {
        this.bg = bg;
    }

    public String getEd() {
        return ed;
    }

    public void setEd(String ed) {
        this.ed = ed;
    }

    public List<Words> getWs() {
        return ws;
    }

    public void setWs(List<Words> ws) {
        this.ws = ws;
    }

    @Override
    public String toString() {
        String result = "";
        for (Words wsTmp : ws) {
            result += wsTmp.toString();
        }
        return result;
    }
}

MainActivity


package com.bwie.yuyinshuru;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.iflytek.cloud.ErrorCode;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;

import java.util.List;

import static com.bwie.yuyinshuru.R.id.etText;

public class MainActivity extends AppCompatActivity {
    private Button button;
    private TextView textView;
//    public static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       button= (Button) findViewById(R.id.button);
        textView= (TextView) findViewById(R.id.etText);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                init();
            }
        });
    }
private void init()
{
    //有动画效果
    RecognizerDialog iatDialog;
// ①语音配置对象初始化
    SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID + "=59f82fcc");//将这里的578f1af7替换成自己申请得到的8位appid

    // ②初始化有交互动画的语音识别器
    iatDialog = new RecognizerDialog(MainActivity.this, mInitListener);
    //③设置监听,实现听写结果的回调
    iatDialog.setListener(new RecognizerDialogListener() {
        String resultJson = "[";//放置在外边做类的变量则报错,会造成json格式不对(?)

        @Override
        public void onResult(RecognizerResult recognizerResult, boolean isLast) {
            System.out.println("-----------------   onResult   -----------------");
            if (!isLast) {
                resultJson += recognizerResult.getResultString() + ",";
            } else {
                resultJson += recognizerResult.getResultString() + "]";
            }

            if (isLast) {
                //解析语音识别后返回的json格式的结果
                Gson gson = new Gson();
                List<DictationResult> resultList = gson.fromJson(resultJson,
                        new TypeToken<List<DictationResult>>() {
                        }.getType());
                String result = "";
                for (int i = 0; i < resultList.size() - 1; i++) {
                    result += resultList.get(i).toString();
                }
                textView.setText(result);
                //获取焦点
                textView.requestFocus();
                //将光标定位到文字最后,以便修改
                // textView.setSelection(result.length());
            }
        }
        @Override
        public void onError(SpeechError speechError) {
            //自动生成的方法存根
            speechError.getPlainDescription(true);
        }
    });
    //开始听写,需将sdk中的assets文件下的文件夹拷入项目的assets文件夹下(没有的话自己新建)
    iatDialog.show();
}
    private InitListener mInitListener = new InitListener() {
        @Override
        public void onInit(int code) {
//            Log.d(TAG, "SpeechRecognizer init() code = " + code);
            if (code != ErrorCode.SUCCESS) {
                Toast.makeText(MainActivity.this, "初始化失败,错误码:" + code, Toast.LENGTH_SHORT).show();
            }
        }
    };
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值