第三方SDK:讯飞语音听写

名词 解释
 语音合成    将一段文字转换为成语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。
 语音听写
	将一段语音转换成文本,把语音中包含文字信息提取出来,并可以优先识别用户手机特有的联系人和个性化数据。
 语法识别	判断用户所说的内容是否与预定义的语法相符合,主要用于识别用户是否下达某项指令,使用语法识别前,需要先定义语法。
 语义理解
	在语音听写基础上,分析理解用户的说话意图,返回结构化的指令信息。开发者可在语义开放平台定义专属的问答格式。
  语音评测 	通过智能语音技术自动对发音水平进行评价,给出用户综合得分和发音信息。
 声纹密码	
	据语音波形反映说话人生理和行为特征的语音参数,自动识别说话人身份,声纹识别所提供的安全性可与其他生物识别技术(指纹、掌形和虹膜)相媲美。
 人脸识别	
	基于人的脸部特征信息进行身份识别的一种生物识别技术,可以自动在图像中检测和跟踪人脸,进而对检测到的人脸进行检测和验证。系统同时支持人脸关键点检出、视频流人脸检测等功能,识别率高达99%。
1 语音听写:将我们说的话转换成文字形式出来
 先看布局显示:
<img src="https://img-blog.csdn.net/20160310235136322?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
实现步骤:
 * 讯飞语音的听写 
 * 1 准备工作:导入jar+.so文件 ;添加权限 ; 初始化 语音配置
 * 2 创建并初始化RecognizerDialog
 * 3 创建监听器RecognizerDialogListener
 
1 准备工作<pre class="plain" name="code" snippet_file_name="blog_20160310_11_5003023" code_snippet_id="1605551">	 官网注册拿到appId
	 下载sdk,将Msc.jar 和armeabi文件夹放到项目的lib文件夹中
	 配置权限:直接copy sdk中的即可;
 	初始化 语音配置
 
见图:
<img src="https://img-blog.csdn.net/20160310234258045?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<img src="https://img-blog.csdn.net/20160310234315889?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<pre name="code" class="html">    <!-- 科大讯飞   start-->
    <!-- 连接网络权限,用于执行云端语音能力 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- 读取网络信息状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 获取当前wifi状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 允许程序改变网络连接状态 -->
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <!-- 读取手机信息权限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 读取联系人权限,上传联系人需要用到此权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <!--下面3个权限有空格导致报错,记得去掉空格 -->
    <!-- 外存储写权限,构建语法需要用到此权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 外存储读权限,构建语法需要用到此权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 配置权限,用来记录应用配置信息 -->
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <!-- 科大讯飞   end-->
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过来的。
<pre name="code" class="java">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();
		}
	};
}


 

                
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
语音测评的Unity SDK是基于Android和iOS平台的,因此需要使用Unity的Android和iOS插件进行导入。 下面是Unity导入语音测评SDK的步骤: 1. 下载语音测评的Unity SDK,并解压缩。 2. 在Unity中创建一个名为“Plugins”的文件夹。在该文件夹下,创建两个子文件夹:“Android”和“iOS”。 3. 将解压缩后的Android SDK中的libs、res和assets文件夹复制到Plugins/Android文件夹下。 4. 将解压缩后的iOS SDK中的IFlyMSC.framework文件和IFlyMSC.bundle文件复制到Plugins/iOS文件夹下。 5. 在Unity中打开“Player Settings”面板,选择“Android”或“iOS”平台,然后将“Minimum API Level”设置为14或更高版本。 6. 在Unity中创建一个C#脚本,并添加以下代码,用于初始化语音测评SDK: ```csharp using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class IFlyMSC : MonoBehaviour { [DllImport("__Internal")] private static extern void IFlyMSCInit (); void Start () { #if UNITY_IPHONE IFlyMSCInit(); #endif } } ``` 7. 将该脚本添加到场景中的任意一个游戏对象上。 8. 现在,您可以使用语音测评SDK的API接口来进行语音测评了。 请注意,为了让语音测评SDK能够正常工作,您需要在开放平台上注册并获取AppID,并在使用API接口时传入该AppID。另外,在Android平台上,您还需要在AndroidManifest.xml文件中添加相关的权限和服务声明。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值