语音转文本

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
    评论
### 回答1: Java开源语音文本是一种利用Java语言编写的开源软件,用于将语音内容换为可读的文本格式。在这种软件中,采用了一系列的语音信号处理和机器学习算法,能够实现高效准确地将语音音频换为文本。 Java开源语音文本的工作流程一般包括以下几个步骤:首先,将语音输入以音频流的形式传递给程序;接着,采用声音分析技术将音频流分割为语音片段;然后,将这些语音片段一段段地送到语音识别引擎中进行分析和识别;最后,将得到的识别结果输出为文本格式。 Java开源语音文本的优点在于它是开源的,意味着可以自由地获取和修改源代码,以满足个人或企业的需求。此外,由于Java语言具有跨平台特性,因此该软件可以在不同操作系统上运行,如Windows、Linux和Mac。同时,Java还具备良好的可扩展性和稳定性,能够处理大规模的语音数据,提供高质量的文本写服务。 Java开源语音文本在很多场景中都有广泛的应用。比如,在语音识别领域,它可以用于将语音录音换为文字,方便听障人士的阅读和理解。在智能助理和语音助手中,它可以用于将用户的语音指令化为文本命令,实现人机交互。此外,在语音翻译和语音搜索等领域,Java开源语音文本也能提供有价值的支持。 总之,Java开源语音文本是一种可靠高效的工具,可以将语音内容换为文本格式,为多个领域的应用提供便捷和灵活的解决方案。 ### 回答2: Java开源语音文本,首先要使用到Java的语音识别库。有一些开源库可以实现这一功能,如CMU Sphinx、Deepspeech等。 CMU Sphinx是一个流行的开源语音识别库,它支持多种语言和平台。它提供了一组Java API,可以用于开发语音识别应用程序。使用CMU Sphinx,可以通过录制音频文件或实时音频输入来进行语音文本。它使用训练好的模型来识别音频中的语音,并将其换为对应的文本。 Deepspeech是Mozilla开发的一个开源语音识别引擎。它基于深度学习技术,能够实现更高的准确率和更好的性能。Deepspeech提供了Java的API,可以在Java应用程序中集成语音文本功能。使用Deepspeech,可以将音频输入换为对应的文本。 要使用这些开源库进行语音文本,首先需要在Java项目中引入相应的库文件。然后,可以使用库提供的API来进行语音识别操作。首先,需要将音频输入换为库可接受的格式,如PCM格式。然后,调用库的识别函数,传入音频数据,等待返回识别结果。最后,将识别结果换为文本形式,并进行后续处理或展示。 总之,Java开源语音文本可以通过使用CMU Sphinx、Deepspeech等开源库来实现。这些库提供了丰富的API和功能,能够将音频输入换为对应的文本。使用这些库,可以在Java应用程序中集成语音文本功能,实现各种语音识别应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值