本文共 3935 字,大约阅读时间需要 13 分钟。
名词 解释 语音合成 将一段文字转换为成语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。 语音听写 将一段语音转换成文本,把语音中包含文字信息提取出来,并可以优先识别用户手机特有的联系人和个性化数据。 语法识别 判断用户所说的内容是否与预定义的语法相符合,主要用于识别用户是否下达某项指令,使用语法识别前,需要先定义语法。 语义理解 在语音听写基础上,分析理解用户的说话意图,返回结构化的指令信息。开发者可在语义开放平台定义专属的问答格式。 语音评测 通过智能语音技术自动对发音水平进行评价,给出用户综合得分和发音信息。 声纹密码 据语音波形反映说话人生理和行为特征的语音参数,自动识别说话人身份,声纹识别所提供的安全性可与其他生物识别技术(指纹、掌形和虹膜)相媲美。 人脸识别 基于人的脸部特征信息进行身份识别的一种生物识别技术,可以自动在图像中检测和跟踪人脸,进而对检测到的人脸进行检测和验证。系统同时支持人脸关键点检出、视频流人脸检测等功能,识别率高达99%。
1 语音听写:将我们说的话转换成文字形式出来
先看布局显示:
实现步骤:
* 讯飞语音的听写 * 1 准备工作:导入jar+.so文件 ;添加权限 ; 初始化 语音配置 * 2 创建并初始化RecognizerDialog * 3 创建监听器RecognizerDialogListener
1 准备工作官网注册拿到appId
下载sdk,将Msc.jar 和armeabi文件夹放到项目的lib文件夹中
配置权限:直接copy sdk中的即可;
初始化 语音配置
见图:
package com.baidu.speechrecognizer01;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechUtility;import android.app.Application;public class MyApplication extends Application { @Override public void onCreate() { SpeechUtility.createUtility(getApplicationContext(), SpeechConstant.APPID+"=56dfe2f2"); super.onCreate(); }}2 创建并初始化RecognizerDialog 3 创建监听器RecognizerDialogListener
其中JsonParser.java是从sdk中copy过来的。
package com.baidu.speechrecognizer01;import com.iflytek.cloud.ErrorCode;import com.iflytek.cloud.InitListener;import com.iflytek.cloud.RecognizerListener;import com.iflytek.cloud.RecognizerResult;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechRecognizer;import com.iflytek.cloud.ui.RecognizerDialog;import com.iflytek.cloud.ui.RecognizerDialogListener;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;/* * 讯飞语音的听写 * 1 准备工作:导入jar+.so文件 ;添加权限 ; 初始化 语音配置 * 2 创建并初始化RecognizerDialog * 3 创建监听器RecognizerDialogListener */public class MainActivity extends Activity { public String tag = "MainActivity"; public String text; public TextView textView; private Button btn; public Context context = MainActivity.this; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { initRecognizerDialog(); } }); } private void initRecognizerDialog() { // 1.创建RecognizerDialog对象 RecognizerDialog mDialog = new RecognizerDialog(context, initListener); // 2.设置accent、language等参数 mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); mDialog.setParameter(SpeechConstant.ACCENT, "mandarin"); // 若要将UI控件用于语义理解,必须添加以下参数设置,设置之后onResult回调返回将是语义理解//结果 // mDialog.setParameter("asr_sch", "1"); // mDialog.setParameter("nlp_version", "2.0"); // 3.设置回调接口 mDialog.setListener(mRecognizerDialogListener); // 4.显示dialog,接收语音输入 mDialog.show(); text = ""; } InitListener initListener = new InitListener() { @Override public void onInit(int code) { if (code != ErrorCode.SUCCESS) { Toast.makeText(context, "监听器初始化错误,错误代码=" + code, Toast.LENGTH_SHORT).show(); } } }; RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() { @Override public void onResult(RecognizerResult result, boolean isLast) { String json = result.getResultString(); String content = JsonParser.parseIatResult(json); text += content; Log.d(tag, "###content=" + content); textView.setText(text); } @Override public void onError(SpeechError error) { Toast.makeText(context, error.getErrorDescription(), Toast.LENGTH_SHORT).show(); } };}