android 百度语音识别男女声,Android使用百度语音识别的示例代码

本文使用百度语音识别,完成语音识别的功能,使用百度语音识别,先要申请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);

}

});

}

}

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值