<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.首先去訊飛開放平臺申請一個賬號(https://www.xfyun.cn/),然後點選“控制檯”進入新的頁面,建立一個應用,找到“語音聽寫”,下載相應的SDK。
檔案解壓後內容如下:
1.在android studio中新建一個空專案,將libs資料夾中的內容複製到安卓專案的libs資料夾下,其中msc.jar要右鍵新增Add As Library:
2.將assets資料夾拷貝到專案的main目錄下,並在main目錄下新建一個名為jniLibs的資料夾,將下載的libs資料夾中的兩個子資料夾複製到jniLibs中:
3.在AndriodManifest.xml中新增以下許可權:
<!--連線網路許可權,用於執行雲端語音能力 --> <uses-permission android:name="android.permission.INTERNET"/> <!--獲取手機錄音機使用許可權,聽寫、識別、語意理解需要用到此許可權 --> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="Manifest.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"/> <!--外儲存寫許可權,構建語法需要用到此許可權 --> <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" tools:ignore="ProtectedPermissions" /> <!--手機定位資訊,用來為語意等功能提供定位,提供更精準的服務--> <!--定位資訊是敏感資訊,可通過Setting.setLocationEnable(false)關閉定位請求 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!--如需使用臉部辨識,還要新增:攝像頭許可權,拍照需要用到 --> <uses-permission android:name="android.permission.CAMERA" />
4.在app目錄下的build.gradle中新增以下程式碼:
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
5.修改佈局檔案activity_main.xml中的程式碼:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <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="此處顯示你所錄下的內容" /> </LinearLayout>
6.新建一個名為XunFeiCallbackListener的介面:
package com.example.myapplication; import com.iflytek.cloud.RecognizerResult; public interface XunFeiCallbackListener { void onFinish(RecognizerResult results); }
7.新建一個名為XunFeiUtil的類:
package com.example.myapplication; import android.content.Context; 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 XunFeiUtil { public static String appid = "自己的appid"; public static void initXunFei(Context context){ SpeechUtility.createUtility(context, SpeechConstant.APPID +"="+appid); } public static void startVoice(Context context, final XunFeiCallbackListener callbackListener) { RecognizerDialog dialog = new RecognizerDialog(context,null); dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); dialog.setParameter(SpeechConstant.ACCENT, "mandarin"); dialog.setParameter(SpeechConstant.ASR_PTT, "0"); dialog.setListener(new RecognizerDialogListener() { @Override public void onResult(RecognizerResult recognizerResult, boolean b) { callbackListener.onFinish(recognizerResult); } @Override public void onError(SpeechError speechError) { } }); dialog.show(); //Toast.makeText(this, "請開始說話", Toast.LENGTH_SHORT).show(); } 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(); } }
8.修改MainActivity:
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import com.iflytek.cloud.RecognizerResult; import static com.example.myapplication.XunFeiUtil.parseIatResult; import static com.example.myapplication.XunFeiUtil.*; 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); initXunFei(this); btn_click = (Button) findViewById(R.id.btn_click); mResultText = ((EditText) findViewById(R.id.result)); btn_click.setOnClickListener(this); } @Override public void onClick(View v) { startVoice(this, new XunFeiCallbackListener() { @Override public void onFinish(RecognizerResult results) { String text = parseIatResult(results.getResultString()); // 自動填寫地址 mResultText.append(text); } }); } }
按照以上操作進行修改,完成後執行專案,會出現語音開啟失敗,錯誤碼為20006的錯誤,出錯原因是android系統在非動態申請許可權的情況下,預設是把麥克風許可權是關閉了的,因此需要開啟許可權,可以在手機的許可權中自己修改許可權設定,成功後的介面如下:
以上就是詳解Android studio實現語音轉文字功能的詳細內容,更多關於Android studio語音轉文字的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45