名詞 解釋
語音合成 将一段文字轉換為成語音,可根據需要合成出不同音色、語速和語調的聲音,讓機器像人一樣開口說話。
語音聽寫
将一段語音轉換成文本,把語音中包含文字資訊提取出來,并可以優先識别使用者手機特有的聯系人和個性化資料。
文法識别 判斷使用者所說的内容是否與預定義的文法相符合,主要用于識别使用者是否下達某項指令,使用文法識别前,需要先定義文法。
語義了解
在語音聽寫基礎上,分析了解使用者的說話意圖,傳回結構化的指令資訊。開發者可在語義開放平台定義專屬的問答格式。
語音評測 通過智能語音技術自動對發音水準進行評價,給出使用者綜合得分和發音資訊。
聲紋密碼
據語音波形反映說話人生理和行為特征的語音參數,自動識别說話人身份,聲紋識别所提供的安全性可與其他生物識别技術(指紋、掌形和虹膜)相媲美。
人臉識别
基于人的臉部特征資訊進行身份識别的一種生物識别技術,可以自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行檢測和驗證。系統同時支援人臉關鍵點檢出、視訊流人臉檢測等功能,識别率高達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();
}
};
}