精华内容
下载资源
问答
  • 百度语音搜索,基于强大的语音识别能力,支持通过语音命令快速发起搜索,让搜索更快捷、更智能。对比手机端的文本键盘输入,百度语音搜索是更自然的,符合移动设备的交互方式。在百度强大的人工智能技术支持下,语音...

    百度语音搜索,基于强大的语音识别能力,支持通过语音命令快速发起搜索,让搜索更快捷、更智能。对比手机端的文本键盘输入,百度语音搜索是更自然的,符合移动设备的交互方式。在百度强大的人工智能技术支持下,语音搜索前景广阔。语音等现代搜索引擎要做的是连接人与信息及服务,它不仅会倾听,更懂得理解与思考,未来将更好地造福人类。既然这么强大,我们就要好好的利用。

    dc0aa8ebe2b114ecb3bc68bddf7fbd99.png

    首先要去百度申请开发APP,然后填入appid,key,secret到你程序。有官方源码。这里我只给出最简单的使用代码

    package com.voice.bdv;

    import org.json.JSONObject;

    import android.app.Activity;

    import android.content.ComponentName;

    import android.content.Intent;

    import android.os.Bundle;

    import android.speech.RecognitionListener;

    import android.speech.SpeechRecognizer;

    import android.view.View;

    import android.widget.Button;

    import android.widget.ScrollView;

    import android.widget.TextView;

    import com.baidu.speech.VoiceRecognitionService;

    public class MainActivity extends Activity implements RecognitionListener {

    TextView textView;

    Button btn;

    SpeechRecognizer speechRecognizer;

    private static final int EVENT_ERROR = 11;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    btn = (Button) findViewById(R.id.btn);

    textView = (TextView) findViewById(R.id.log);

    speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this,

    new ComponentName(this, VoiceRecognitionService.class));

    speechRecognizer.setRecognitionListener(this);

    }

    public void onClick(View view) {

    start();

    }

    @Override

    protected void onDestroy() {

    speechRecognizer.destroy();

    super.onDestroy();

    }

    private void start() {

    textView.setText("");

    print("点击了“开始”");

    Intent intent = new Intent();

    intent.putExtra("args", "");

    speechRecognizer.startListening(intent);

    }

    @Override

    public void onReadyForSpeech(Bundle params) {

    // TODO Auto-generated method stub

    print("准备就绪,可以开始说话");

    }

    @Override

    public void onBeginningOfSpeech() {

    // TODO Auto-generated method stub

    btn.setText("说完了");

    //print("检测到用户的已经开始说话");

    }

    @Override

    public void onRmsChanged(float rmsdB) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onBufferReceived(byte[] buffer) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onEndOfSpeech() {

    // TODO Auto-generated method stub

    //print("检测到用户的已经停止说话");

    btn.setText("识别中");

    }

    @Override

    public void onError(int error) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onResults(Bundle results) {

    // TODO Auto-generated method stub

    String json_res = results.getString("origin_result");

    try {

    print("origin_result=\n" + new JSONObject(json_res).toString(3));

    } catch (Exception e) {

    print("origin_result=[warning: bad json]\n" + json_res);

    }

    btn.setText("开始");

    }

    @Override

    public void onPartialResults(Bundle partialResults) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onEvent(int eventType, Bundle params) {

    // TODO Auto-generated method stub

    switch (eventType) {

    case EVENT_ERROR:

    String reason = params.get("reason") + "";

    print("EVENT_ERROR, " + reason);

    break;

    case VoiceRecognitionService.EVENT_ENGINE_SWITCH:

    // int type = params.getInt("engine_type");

    // print("*引擎切换至" + (type == 0 ? "在线" : "离线"));

    break;

    }

    }

    private void print(String msg) {

    textView.append(msg + "\n");

    ScrollView sv = (ScrollView) textView.getParent();

    sv.smoothScrollTo(0, 1000000);

    }

    }

    展开全文
  • 提供Android百度语音识别集成,抽取语音识别util方便使用,加入在一轮对话结束后继续监听新一轮对话,百度语音识别中遇到的几个关键问题博文:http://blog.csdn.net/jianiuqi/article/details/53117333
  • 下载下来的是一个android工程android 其中有三个modulejson固然其中也有百度本身的文档,在doc_integration_....文件夹中,也是很直接明了的,本人就是经过这三个文档进行集成以及功能实现的app 具体的集成过程小编这边...

    4f08a48ffa4a6e5a9c8d9fe69fdbd6e5.png

    下载下来的是一个android工程android

    dfa5a9c29c33289ac705655022dd9d9d.png

    其中有三个modulejson

    固然其中也有百度本身的文档,在doc_integration_....文件夹中,也是很直接明了的,本人就是经过这三个文档进行集成以及功能实现的app

    372e4983ebe7bd1ef38c3db14a15771d.png

    具体的集成过程小编这边就很少仔细讲解了,能够直接去看这三个文档,我这边就稍微说一下这三个文件的主要是讲的基本内容吧ide

    1._helloworld 文档主要是讲怎样集成语音识别的sdk,实现一个精简版的语音识别,按照它所给的步骤能够完成基本的sdk集成,以及简单的在线识别的功能,能够判断你的sdk是否集成成功测试

    2._TTS文档主要是告诉你怎样集成sdk以及在本身的工程如何实现语音识别this

    3._demonstration文档主要是针对你所下载下来的工程Demo的功能介绍介绍.net

    AppID,API Key ,Secret Key,这三个参数是你集成sdk是要用到的code

    e59de483bbdc2e9f489051e8e99b30ca.png

    这个操做很简单在控制台中选中语音识别一栏

    f04f2cf835e9e50fdf1cd534af6b3944.png

    选中应用列表>>建立应用

    cadec55e705fd566fd1283ad3489038b.png

    >>填写基本应用信息

    d10e6c376d46b6ded4e49b2654883f9b.png

    三.实如今线识别以及精确地识别本身的所须要词库

    其实在线识别功能在_TTS文档中已经详细讲过了,我这边直接把实现代码拿出来

    1.进行EventManager初始化

    // 基于sdk集成1.1 初始化EventManager对象

    asr = EventManagerFactory.create(this, "asr");

    // 基于sdk集成1.3 注册本身的输出事件类

    asr.registerListener(this); // EventListener 中 onEvent方法

    2.开始识别的方法

    private void start() {

    Map params = new LinkedHashMap();

    String event = null;

    event = SpeechConstant.ASR_START; // 替换成测试的event

    if (enableOffline) {

    params.put(SpeechConstant.DECODER, 2);

    }

    // 基于SDK集成2.1 设置识别参数

    params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME, false);

    // 请先使用如‘在线识别’界面测试和生成识别参数。 params同ActivityRecog类中myRecognizer.start(params);

    // 复制此段能够自动检测错误

    (new AutoCheck(getApplicationContext(), new Handler() {

    public void handleMessage(Message msg) {

    if (msg.what == 100) {

    AutoCheck autoCheck = (AutoCheck) msg.obj;

    synchronized (autoCheck) {

    String message = autoCheck.obtainErrorMessage(); // autoCheck.obtainAllMessage();

    Log.e("message", message);

    // txtLog.append(message + "\n");

    ; // 能够用下面一行替代,在logcat中查看代码

    // Log.w("AutoCheckMessage", message);

    }

    }

    }

    }, enableOffline)).checkAsr(params);

    String json = null; // 能够替换成本身的json

    json = new JSONObject(params).toString(); // 这里能够替换成你须要测试的json

    asr.send(event, json, null, 0, 0);

    Log.e("message", json);

    }

    3.中止识别的方法

    private void stop() {

    Log.e("message", "中止识别:ASR_STOP");

    asr.send(SpeechConstant.ASR_STOP, null, null, 0, 0); //

    }

    4.实现对语音识别的监听

    implements EventListener

    @Override

    public void onEvent(String name, String params, byte[] data, int offset, int length) {

    String logTxt = "name: " + name;

    if (!isEnd && name.equals("asr.end")) {

    isEnd = true;

    }

    if (isEnd && name.equals("asr.partial")) {

    isEnd = false;

    logTxt += " ;params :" + params;

    try {

    JSONObject jsonObject = new JSONObject(params);

    String results_recognition = jsonObject.getString("results_recognition");

    Toast.makeText(this, results_recognition, Toast.LENGTH_LONG).show();

    Log.e("result", results_recognition);

    } catch (JSONException e) {

    e.printStackTrace();

    }

    }

    if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_EXIT)) {

    if (isClose==false)

    start();

    }

    if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)) {

    if (params != null && params.contains("\"nlu_result\"")) {

    if (length > 0 && data.length > 0) {

    logTxt += ", 语义解析结果:" + new String(data, offset, length);

    }

    }

    } else if (data != null) {

    logTxt += " ;data length=" + data.length;

    }

    // printLog(logTxt);

    Log.e("message1", logTxt);

    }

    5.注销

    @Override

    protected void onDestroy() {

    super.onDestroy();

    // 基于SDK集成5.2 退出事件管理器

    // 必须与registerListener成对出现,不然可能形成内存泄露

    asr.unregisterListener(this);

    }

    这样基本在线识别的功能是完成了,可是会发现不少的语句的识别度不是很高,这边的话,百度官方提供了语音识别词库,你能够在你的应用管理中心的应用详情里面设置你的语音识别词库这边只须要上传一个txt格式的文本文档

    下面是示例,这样的话,就经过语音会优先识别你所想要的语句了

    6d033806c88dbaf1293531d05d52b947.png

    下一篇会写一个关于离线识别的代码

    展开全文
  • 申请之后,下载SDK包,按照百度官网要求,合并libs和res两个目录到项目中,然后在build.gradle(module:app)中的Android{...}下添加sourceSets{main{jniLibs.srcDirs=['libs']}}这样, 百度语音识别...

    本文使用百度语音识别,完成语音识别的功能,使用百度语音识别,先要申请APP ID,这个直接到百度网站上有说明文档,本文不再赘述。申请之后,下载SDK包,按照百度官网要求,合并libs和res两个目录到项目中,然后在build.gradle(module:app)中的Android{...}下添加

    sourceSets{

    main{

    jniLibs.srcDirs=['libs']

    }

    }

    这样, 百度语音识别的so文件才能正常使用。

    Manifest文件中添加权限

    然后还要在Manifest中添加

    其中的APP ID,API_KEY和SECRET_KEY替换为你申请的内容。

    我们封装了一个工具类,用来使用语音识别

    package com.yjp.speechrecognizer;

    import android.content.ComponentName;

    import android.content.Context;

    import android.content.Intent;

    import android.os.Bundle;

    import android.speech.RecognitionListener;

    import android.speech.SpeechRecognizer;

    import android.widget.Toast;

    import com.baidu.speech.VoiceRecognitionService;

    public class SpeechRecognizerTool implements RecognitionListener {

    public interface ResultsCallback {

    void onResults(String result);

    }

    private Context mContext;

    private SpeechRecognizer mSpeechRecognizer;

    private ResultsCallback mResultsCallback;

    public SpeechRecognizerTool(Context context) {

    mContext = context;

    }

    public synchronized void createTool() {

    if (null == mSpeechRecognizer) {

    // 创建识别器

    mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(mContext,

    new ComponentName(mContext, VoiceRecognitionService.class));

    // 注册监听器

    mSpeechRecognizer.setRecognitionListener(this);

    }

    }

    public synchronized void destroyTool() {

    mSpeechRecognizer.stopListening();

    mSpeechRecognizer.destroy();

    mSpeechRecognizer = null;

    }

    // 开始识别

    public void startASR(ResultsCallback callback) {

    mResultsCallback = callback;

    Intent intent = new Intent();

    bindParams(intent);

    mSpeechRecognizer.startListening(intent);

    }

    //停止识别

    public void stopASR() {

    mSpeechRecognizer.stopListening();

    }

    private void bindParams(Intent intent) {

    // 设置识别参数

    }

    @Override

    public void onReadyForSpeech(Bundle params) {

    // 准备就绪

    Toast.makeText(mContext, "请开始说话", Toast.LENGTH_SHORT).show();

    }

    @Override

    public void onBeginningOfSpeech() {

    // 开始说话处理

    }

    @Override

    public void onRmsChanged(float rmsdB) {

    // 音量变化处理

    }

    @Override

    public void onBufferReceived(byte[] buffer) {

    // 录音数据传出处理

    }

    @Override

    public void onEndOfSpeech() {

    // 说话结束处理

    }

    @Override

    public void onError(int error) {

    }

    @Override

    public void onResults(Bundle results) {

    // 最终结果处理

    if (mResultsCallback != null) {

    String text = results.get(SpeechRecognizer.RESULTS_RECOGNITION)

    .toString().replace("]", "").replace("[", "");

    mResultsCallback.onResults(text);

    }

    }

    @Override

    public void onPartialResults(Bundle partialResults) {

    // 临时结果处理

    }

    @Override

    public void onEvent(int eventType, Bundle params) {

    }

    }

    MainActivity的界面如下

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:orientation="vertical"

    android:gravity="center"

    tools:context="com.yjp.speechrecognizer.MainActivity">

    android:id="@+id/startSpeechButton"

    android:layout_width="60dp"

    android:layout_height="40dp"

    android:background="@drawable/bdspeech_btn_orangelight_normal"

    android:text="按住说话"/>

    android:id="@+id/speechTextView"

    android:layout_margin="10dp"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content" />

    MainActivity的类实现为:

    package com.yjp.speechrecognizer;

    import android.os.Bundle;

    import android.support.v7.app.AppCompatActivity;

    import android.view.MotionEvent;

    import android.view.View;

    import android.widget.Button;

    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity implements SpeechRecognizerTool.ResultsCallback {

    private Button mStartSpeechButton;

    private TextView mTextView;

    private SpeechRecognizerTool mSpeechRecognizerTool = new SpeechRecognizerTool(this);

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    mTextView = (TextView) findViewById(R.id.speechTextView);

    mStartSpeechButton = (Button) findViewById(R.id.startSpeechButton);

    mStartSpeechButton.setOnTouchListener(new View.OnTouchListener() {

    @Override

    public boolean onTouch(View v, MotionEvent event) {

    int action = event.getAction();

    switch (action) {

    case MotionEvent.ACTION_DOWN:

    mSpeechRecognizerTool.startASR(MainActivity.this);

    mStartSpeechButton.setBackgroundResource(

    R.drawable.bdspeech_btn_orangelight_pressed);

    break;

    case MotionEvent.ACTION_UP:

    mSpeechRecognizerTool.stopASR();

    mStartSpeechButton.setBackgroundResource(

    R.drawable.bdspeech_btn_orangelight_normal);

    break;

    default:

    return false;

    }

    return true;

    }

    });

    }

    @Override

    protected void onStart() {

    super.onStart();

    mSpeechRecognizerTool.createTool();

    }

    @Override

    protected void onStop() {

    super.onStop();

    mSpeechRecognizerTool.destroyTool();

    }

    @Override

    public void onResults(String result) {

    final String finalResult = result;

    MainActivity.this.runOnUiThread(new Runnable() {

    @Override

    public void run() {

    mTextView.setText(finalResult);

    }

    });

    }

    }

    可以运行看一下效果,感觉识别率还是不错的。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程圈。

    展开全文
  • 百度语音搜索,基于强大的语音识别能力,支持通过语音命令快速发起搜索,让搜索更快捷、更智能。对比手机端的文本键盘输入,百度语音搜索是更自然的,符合移动设备的交互方式。在百度强大的人工智能技术支持下,语音...

    百度语音搜索,基于强大的语音识别能力,支持通过语音命令快速发起搜索,让搜索更快捷、更智能。对比手机端的文本键盘输入,百度语音搜索是更自然的,符合移动设备的交互方式。在百度强大的人工智能技术支持下,语音搜索前景广阔。语音等现代搜索引擎要做的是连接人与信息及服务,它不仅会倾听,更懂得理解与思考,未来将更好地造福人类。既然这么强大,我们就要好好的利用。

    dc0aa8ebe2b114ecb3bc68bddf7fbd99.png

    首先要去百度申请开发APP,然后填入appid,key,secret到你程序。有官方源码。这里我只给出最简单的使用代码

    package com.voice.bdv;

    import org.json.JSONObject;

    import android.app.Activity;

    import android.content.ComponentName;

    import android.content.Intent;

    import android.os.Bundle;

    import android.speech.RecognitionListener;

    import android.speech.SpeechRecognizer;

    import android.view.View;

    import android.widget.Button;

    import android.widget.ScrollView;

    import android.widget.TextView;

    import com.baidu.speech.VoiceRecognitionService;

    public class MainActivity extends Activity implements RecognitionListener {

    TextView textView;

    Button btn;

    SpeechRecognizer speechRecognizer;

    private static final int EVENT_ERROR = 11;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    btn = (Button) findViewById(R.id.btn);

    textView = (TextView) findViewById(R.id.log);

    speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this,

    new ComponentName(this, VoiceRecognitionService.class));

    speechRecognizer.setRecognitionListener(this);

    }

    public void onClick(View view) {

    start();

    }

    @Override

    protected void onDestroy() {

    speechRecognizer.destroy();

    super.onDestroy();

    }

    private void start() {

    textView.setText("");

    print("点击了“开始”");

    Intent intent = new Intent();

    intent.putExtra("args", "");

    speechRecognizer.startListening(intent);

    }

    @Override

    public void onReadyForSpeech(Bundle params) {

    // TODO Auto-generated method stub

    print("准备就绪,可以开始说话");

    }

    @Override

    public void onBeginningOfSpeech() {

    // TODO Auto-generated method stub

    btn.setText("说完了");

    //print("检测到用户的已经开始说话");

    }

    @Override

    public void onRmsChanged(float rmsdB) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onBufferReceived(byte[] buffer) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onEndOfSpeech() {

    // TODO Auto-generated method stub

    //print("检测到用户的已经停止说话");

    btn.setText("识别中");

    }

    @Override

    public void onError(int error) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onResults(Bundle results) {

    // TODO Auto-generated method stub

    String json_res = results.getString("origin_result");

    try {

    print("origin_result=\n" + new JSONObject(json_res).toString(3));

    } catch (Exception e) {

    print("origin_result=[warning: bad json]\n" + json_res);

    }

    btn.setText("开始");

    }

    @Override

    public void onPartialResults(Bundle partialResults) {

    // TODO Auto-generated method stub

    }

    @Override

    public void onEvent(int eventType, Bundle params) {

    // TODO Auto-generated method stub

    switch (eventType) {

    case EVENT_ERROR:

    String reason = params.get("reason") + "";

    print("EVENT_ERROR, " + reason);

    break;

    case VoiceRecognitionService.EVENT_ENGINE_SWITCH:

    // int type = params.getInt("engine_type");

    // print("*引擎切换至" + (type == 0 ? "在线" : "离线"));

    break;

    }

    }

    private void print(String msg) {

    textView.append(msg + "\n");

    ScrollView sv = (ScrollView) textView.getParent();

    sv.smoothScrollTo(0, 1000000);

    }

    }

    展开全文
  • 百度语音识别(Baidu Voice) Android studio版本已同步更新至个人blog:http://dxjia.cn/2016/02/29/baidu-voice-helper/最近在一个练手小项目里要用到语音识别,搜索了一下,比较容易集成的就算Baidu voice跟讯飞...
  • Android 百度语音识别(详细步骤+源码)

    千次阅读 多人点赞 2020-06-09 15:06:22
    因为项目中用到了语音识别的技术,但是项目源码我不能公开,所以,重新写一个简单的集成教程,不喜可不看,不做键盘侠,文明你我他。 效果图 识别结果 最终效果 源码地址 正文 下面是详细步骤,不漏过任何一个...
  • Android百度语音识别/语音助手

    千次阅读 2019-03-29 17:21:17
    * 语音识别 * Created by fujiayi on 2017/6/13. * EventManager内的方法如send 都可以在主线程中进行,SDK中做过处理 */ public class RecognizerUtils { private final String TAG = this.getClass()....
  • 安卓 百度语音识别

    2018-11-14 15:49:05
    Android 百度语音识别集成,非常简单 1.最近做一个语音识别的项目,网上找了个demo,很简单,直接调用这个类就可以,做个记录,方便以后用! public class OnLineUtils implements EventListener { private Event...
  • Android百度语音识别中的若干问题

    千次阅读 2016-11-10 16:49:21
    原因1:无法加载百度语音识别的so库应用中会使用其他依赖库,例如用AS用了 compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.2' 这个依赖库中包含了好几个平台的so,所以加载非armeabi平台时会找不到so,...
  • 当然其中也有百度自己的文档,在doc_integration_....文件夹中,也是很直接明了的,本人就是通过这三个文档进行集成以及功能实现的 具体的集成过程小编这边就不多仔细讲解了,可以直接去看这三个文档,我这边就稍微说...
  • Android百度语音合成语音识别Demo Android百度语音合成语音识别Demo Android百度语音合成语音识别Demo Android百度语音合成语音识别Demo
  • 1、官方文档有的id key 不说了,直接配置并添加权限即可 2、.so文件粘帖到jniLibs目录下。...运行后,注册监听后,在说到指定的激活词语时,将会调用到指定方法,可以开启语音识别的监听,或者关掉监听。
  • Android语音识别,简单的理解就是把语音转化为文字。 在日常中,语音识别,车载导航、语音输入等,虽然不一定准确,但用途广泛。 这里就介绍下谷歌原生的语音识别百度语音识别 谷歌语音识别 谷歌语音识别...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,520
精华内容 2,208
关键字:

安卓百度语音识别