標籤:
前言:最近做項目用到了訊飛語音,遂搞了一個簡單的教程,供大家使用。
訊飛語音 使用步驟:語音轉文字:
1,首先去訊飛開放平台( http://www.xfyun.cn/)註冊,帳號:
2,註冊後登入:
3,點擊選擇我的語音云:
4,點擊左側邊欄,建立新的應用:
5,建立好應用後:複製appid:
6,下載sdk: 點擊側邊欄左側sdk下載中心:
選擇我們所需要的功能和平台:
7,點擊下載sdk,儲存檔案,並開啟。
//-----------------------------------------------------------
8,使用androidStudio建立demo:
布局檔案內容:
<Button android:id="@+id/btn_click" android:text="點擊開啟訊飛語音辨識" android:layout_width="wrap_content" android:layout_height="wrap_content" /><EditText android:id="@+id/result" android:layout_below="@id/btn_click" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="此處顯示你所錄下的內容" />
效果:
9,將解壓檔案中libs中 下 的所有jar包,考到項目的 libs檔案夾下,重新整理gradle(eclipse的同學們可以直接全全部考如libs下,並添加類庫):
9.1在main檔案夾下建立檔案夾jniLibs。拷貝所有sdk下libs中所有除了.jar的檔案夾,裡面為.so檔案。
9,2,拷貝assets檔案夾到main下面:
效果如下:
//註冊檔案中添加許可權:
<uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><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.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.CAMERA"/>
在:mainActivity中添加如下代碼:
注意需要將自己的 appId拷貝到代碼中:
package zhaoq_qiang.xunfeidemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.iflytek.cloud.RecognizerResult;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechUtility;import com.iflytek.cloud.ui.RecognizerDialog;import com.iflytek.cloud.ui.RecognizerDialogListener;import org.json.JSONArray;import org.json.JSONObject;import org.json.JSONTokener;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_click; private EditText mResultText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_click = (Button) findViewById(R.id.btn_click); mResultText = ((EditText) findViewById(R.id.result)); SpeechUtility.createUtility(this, SpeechConstant.APPID + "= 此處需要填寫你所申請的appId"); btn_click.setOnClickListener(this); } @Override public void onClick(View v) { btnVoice(); } //TODO 開始說話: private void btnVoice() { RecognizerDialog dialog = new RecognizerDialog(this,null); dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); dialog.setParameter(SpeechConstant.ACCENT, "mandarin"); dialog.setListener(new RecognizerDialogListener() { @Override public void onResult(RecognizerResult recognizerResult, boolean b) { printResult(recognizerResult); } @Override public void onError(SpeechError speechError) { } }); dialog.show(); Toast.makeText(this, "請開始說話", Toast.LENGTH_SHORT).show(); } //回調結果: private void printResult(RecognizerResult results) { String text = parseIatResult(results.getResultString()); // 自動填寫地址 mResultText.append(text); } public static String parseIatResult(String json) { StringBuffer ret = new StringBuffer(); try { JSONTokener tokener = new JSONTokener(json); JSONObject joResult = new JSONObject(tokener); JSONArray words = joResult.getJSONArray("ws"); for (int i = 0; i < words.length(); i++) { // 轉寫結果詞,預設使用第一個結果 JSONArray items = words.getJSONObject(i).getJSONArray("cw"); JSONObject obj = items.getJSONObject(0); ret.append(obj.getString("w")); } } catch (Exception e) { e.printStackTrace(); } return ret.toString(); }}
運行程式:
效果
Demo:https://github.com/229457269/XunFeiVoiceDEmo
後續:後面需要上線到訊飛應用市場的步驟,筆者不在綴述,開發人員完成項目打包後,通過審核,即可將該程式發布,並擷取訊飛市場使用者的收益。
訊飛語音 使用步驟(針對androidStudio):語音轉文字: