国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站怎么做推廣和優(yōu)化seo推廣知識(shí)

網(wǎng)站怎么做推廣和優(yōu)化,seo推廣知識(shí),做門(mén)戶網(wǎng)站服務(wù)器選擇,使用wordpress rss目錄 一、語(yǔ)音喚醒部分 1、首先在科大訊飛官網(wǎng)注冊(cè)開(kāi)發(fā)者賬號(hào) 2、配置喚醒詞然后下載sdk 3、選擇對(duì)應(yīng)功能下載 4、語(yǔ)音喚醒lib包全部復(fù)制到工程目錄下 5、把語(yǔ)音喚醒詞文件復(fù)制到工程的assets目錄 6、復(fù)制對(duì)應(yīng)權(quán)限到AndroidManifest.xml中 7、喚醒工具類封裝 二、語(yǔ)音識(shí)…

目錄

一、語(yǔ)音喚醒部分

1、首先在科大訊飛官網(wǎng)注冊(cè)開(kāi)發(fā)者賬號(hào)

2、配置喚醒詞然后下載sdk

3、選擇對(duì)應(yīng)功能下載

4、語(yǔ)音喚醒lib包全部復(fù)制到工程目錄下

5、把語(yǔ)音喚醒詞文件復(fù)制到工程的assets目錄

6、復(fù)制對(duì)應(yīng)權(quán)限到AndroidManifest.xml中

7、喚醒工具類封裝

二、語(yǔ)音識(shí)別

1、工具類

2、使用


一、語(yǔ)音喚醒部分

1、首先在科大訊飛官網(wǎng)注冊(cè)開(kāi)發(fā)者賬號(hào)

控制臺(tái)-訊飛開(kāi)放平臺(tái)

2、配置喚醒詞然后下載sdk

3、選擇對(duì)應(yīng)功能下載

4、語(yǔ)音喚醒lib包全部復(fù)制到工程目錄下

5、把語(yǔ)音喚醒詞文件復(fù)制到工程的assets目錄

6、復(fù)制對(duì)應(yīng)權(quán)限到AndroidManifest.xml中

    <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- App 需要使用的部分權(quán)限 --><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 科大訊飛 --><uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"tools:ignore="ProtectedPermissions" /><uses-permissionandroid:name="android.permission.READ_PRIVILEGED_PHONE_STATE"tools:ignore="ProtectedPermissions" /><uses-permissionandroid:name="android.permission.MANAGE_EXTERNAL_STORAGE"tools:ignore="ProtectedPermissions" /><uses-permissionandroid:name="android.permission.READ_PHONE_NUMBERS"tools:ignore="ProtectedPermissions" />

7、喚醒工具類封裝

?其中IflytekAPP_id為科大訊飛平臺(tái)的應(yīng)用id


public abstract class WakeUpUtil {private static AutoTouch autoTouch = new AutoTouch();//自動(dòng)點(diǎn)擊屏幕/*** 喚醒的回調(diào)*/public abstract void wakeUp(String resultString);// Log標(biāo)簽private static final String TAG = "WakeUpUtil";// 上下文private static Context mContext;// 語(yǔ)音喚醒對(duì)象private VoiceWakeuper mIvw;//喚醒門(mén)限值//門(mén)限值越高,則要求匹配度越高,才能喚醒//值范圍:[0,3000]//默認(rèn)值:1450private static int curThresh = 1450;public WakeUpUtil(Context context) {initKedaXun(context);mContext = context;// 初始化喚醒對(duì)象mIvw = VoiceWakeuper.createWakeuper(context, null);Log.d("initLogData", "===進(jìn)入喚醒工具類====");}/*** 獲取喚醒詞功能** @return 返回文件位置*/private static String getResource() {final String resPath = ResourceUtil.generateResourcePath(mContext, RESOURCE_TYPE.assets, "ivw/" + "cf22564a" + ".jet");return resPath;}/*** 喚醒*/public void wake() {Log.d("initLogData", "===進(jìn)入喚醒工具類====");// 非空判斷,防止因空指針使程序崩潰VoiceWakeuper mIvw = VoiceWakeuper.getWakeuper();if (mIvw != null) {// textView.setText(resultString);// 清空參數(shù)mIvw.setParameter(SpeechConstant.PARAMS, null);// 設(shè)置喚醒資源路徑mIvw.setParameter(SpeechConstant.IVW_RES_PATH, getResource());// 喚醒門(mén)限值,根據(jù)資源攜帶的喚醒詞個(gè)數(shù)按照“id:門(mén)限;id:門(mén)限”的格式傳入mIvw.setParameter(SpeechConstant.IVW_THRESHOLD, "0:" + curThresh);// 設(shè)置喚醒模式mIvw.setParameter(SpeechConstant.IVW_SST, "wakeup");// 設(shè)置持續(xù)進(jìn)行喚醒mIvw.setParameter(SpeechConstant.KEEP_ALIVE, "1");mIvw.startListening(mWakeuperListener);Log.d("initLogData", "====喚醒====");} else {Log.d("initLogData", "===喚醒未初始化11====");
//            Toast.makeText(mContext, "喚醒未初始化1", Toast.LENGTH_SHORT).show();}}public void stopWake() {mIvw = VoiceWakeuper.getWakeuper();if (mIvw != null) {mIvw.stopListening();} else {Log.d("initLogData", "===喚醒未初始化222====");
//            Toast.makeText(mContext, "喚醒未初始化2", Toast.LENGTH_SHORT).show();}}String resultString = "";private WakeuperListener mWakeuperListener = new WakeuperListener() {@Overridepublic void onResult(WakeuperResult result) {try {String text = result.getResultString();JSONObject object;object = new JSONObject(text);StringBuffer buffer = new StringBuffer();buffer.append("【RAW】 " + text);buffer.append("\n");buffer.append("【操作類型】" + object.optString("sst"));buffer.append("\n");buffer.append("【喚醒詞id】" + object.optString("id"));buffer.append("\n");buffer.append("【得分】" + object.optString("score"));buffer.append("\n");buffer.append("【前端點(diǎn)】" + object.optString("bos"));buffer.append("\n");buffer.append("【尾端點(diǎn)】" + object.optString("eos"));resultString = buffer.toString();stopWake();autoTouch.autoClickPos( 0.1, 0.1);wakeUp(resultString);
//                MyEventManager.postMsg("" + resultString, "voicesWakeListener");} catch (JSONException e) {MyEventManager.postMsg("" + "結(jié)果解析出錯(cuò)", "voicesWakeListener");resultString = "結(jié)果解析出錯(cuò)";wakeUp(resultString);e.printStackTrace();}//            Logger.d("===開(kāi)始說(shuō)話==="+resultString);}@Overridepublic void onError(SpeechError error) {MyEventManager.postMsg("" + "喚醒出錯(cuò)", "voicesWakeListener");}@Overridepublic void onBeginOfSpeech() {Log.d("initLogData", "===喚醒onBeginOfSpeech====");}@Overridepublic void onEvent(int eventType, int isLast, int arg2, Bundle obj) {
//            Log.d("initLogData", "===喚醒onEvent===" + eventType);}@Overridepublic void onVolumeChanged(int i) {
//            Log.d("initLogData", "===開(kāi)始說(shuō)話==="+i);}};/*** 科大訊飛* 語(yǔ)音sdk* 初始化*/public void initKedaXun(Context context) {// 初始化參數(shù)構(gòu)建StringBuffer param = new StringBuffer();//IflytekAPP_id為我們申請(qǐng)的Appidparam.append("appid=" + context.getString(R.string.IflytekAPP_id));param.append(",");// 設(shè)置使用v5+param.append(SpeechConstant.ENGINE_MODE + "=" + SpeechConstant.MODE_MSC);SpeechUtility.createUtility(context, param.toString());Log.d("initLogData", "===在appacation中初始化=====");}}

使用直接調(diào)用即可

/*** 科大訊飛* 語(yǔ)音喚醒* 對(duì)象*/private WakeUpUtil wakeUpUtil;private void voiceWake() {Log.d("initLogData", "===執(zhí)行喚醒服務(wù)====");wakeUpUtil = new WakeUpUtil(this) {@Overridepublic void wakeUp(String result) {MyEventManager.postMsg("" + "喚醒成功", "voicesWakeListener");Log.d("initLogData", "====喚醒成功===========" + result);// 開(kāi)啟喚醒wakeUpUtil.wake();}};wakeUpUtil.wake();}

到此語(yǔ)音喚醒已經(jīng)集成結(jié)束,接下來(lái)是語(yǔ)音識(shí)別。

二、語(yǔ)音識(shí)別

1、工具類


/*** 科大訊飛* 語(yǔ)音識(shí)別* 工具類*/
public class KDVoiceRegUtils {private SpeechRecognizer mIat;private RecognizerListener mRecognizerListener;private InitListener mInitListener;private StringBuilder result = new StringBuilder();// 函數(shù)調(diào)用返回值private int resultCode = 0;/*** 利用AtomicReference*/private static final AtomicReference<KDVoiceRegUtils> INSTANCE = new AtomicReference<KDVoiceRegUtils>();/*** 私有化*/private KDVoiceRegUtils() {}/*** 用CAS確保線程安全*/public static final KDVoiceRegUtils getInstance() {for (; ; ) {KDVoiceRegUtils current = INSTANCE.get();if (current != null) {return current;}current = new KDVoiceRegUtils();if (INSTANCE.compareAndSet(null, current)) {return current;}Log.d("initLogData", "===科大訊飛實(shí)例化===大哥大哥==");}}/*** 初始化* 監(jiān)聽(tīng)*/public void initVoiceRecorgnise(Context ct) {if (mInitListener != null || mRecognizerListener != null) {return;}mInitListener = new InitListener() {@Overridepublic void onInit(int code) {
//            Log.e(TAG, "SpeechRecognizer init() code = " + code);Log.d("initLogData", "===科大訊飛喚醒初始化===" + code);if (code != ErrorCode.SUCCESS) {
//                showToast("初始化失敗,錯(cuò)誤碼:" + code + ",請(qǐng)點(diǎn)擊網(wǎng)址https://www.xfyun.cn/document/error-code查詢解決方案");}}};//識(shí)別監(jiān)聽(tīng)mRecognizerListener = new RecognizerListener() {@Overridepublic void onBeginOfSpeech() {// 此回調(diào)表示:sdk內(nèi)部錄音機(jī)已經(jīng)準(zhǔn)備好了,用戶可以開(kāi)始語(yǔ)音輸入Log.d("initLogData", "=====開(kāi)始說(shuō)話======");}@Overridepublic void onError(SpeechError error) {// Tips:// 錯(cuò)誤碼:10118(您沒(méi)有說(shuō)話),可能是錄音機(jī)權(quán)限被禁,需要提示用戶打開(kāi)應(yīng)用的錄音權(quán)限。
//                Log.d("initLogData", "====錯(cuò)誤說(shuō)話=====" + error.getPlainDescription(true));senVoicesMsg(300, "識(shí)別錯(cuò)誤 ");//100啟動(dòng)語(yǔ)音識(shí)別    200識(shí)別成功   300識(shí)別錯(cuò)誤mIat.stopListening();hideDialog();}@Overridepublic void onEndOfSpeech() {// 此回調(diào)表示:檢測(cè)到了語(yǔ)音的尾端點(diǎn),已經(jīng)進(jìn)入識(shí)別過(guò)程,不再接受語(yǔ)音輸入mIat.stopListening();
//                Log.d("initLogData", "=====結(jié)束說(shuō)話======");hideDialog();}@Overridepublic void onResult(RecognizerResult results, boolean isLast) {String text = parseIatResult(results.getResultString());
//                Log.d("initLogData", "==說(shuō)話==語(yǔ)音識(shí)別結(jié)果==initVoice==" + text);result.append(text);if (!text.trim().isEmpty() && boxDialog != null) {senVoicesMsg(200, "識(shí)別成功");//100啟動(dòng)語(yǔ)音識(shí)別    200識(shí)別成功   300識(shí)別錯(cuò)誤boxDialog.showTxtContent(result.toString());senVoicesMsg(200, "" + result.toString());}if (isLast) {result.setLength(0);}}@Overridepublic void onVolumeChanged(int volume, byte[] data) {//showToast("當(dāng)前正在說(shuō)話,音量大小:" + volume);if (volume > 0 && boxDialog != null) {boxDialog.showTxtContent("錄音中...");}Log.d("initLogData", "===說(shuō)話==onVolumeChanged:====" + volume);}@Overridepublic void onEvent(int eventType, int arg1, int arg2, Bundle obj) {// 以下代碼用于獲取與云端的會(huì)話id,當(dāng)業(yè)務(wù)出錯(cuò)時(shí)將會(huì)話id提供給技術(shù)支持人員,可用于查詢會(huì)話日志,定位出錯(cuò)原因// 若使用本地能力,會(huì)話id為nullif (SpeechEvent.EVENT_SESSION_ID == eventType) {String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);}}};// 初始化識(shí)別無(wú)UI識(shí)別對(duì)象// 使用SpeechRecognizer對(duì)象,可根據(jù)回調(diào)消息自定義界面;mIat = SpeechRecognizer.createRecognizer(ct, mInitListener);if (mIat != null) {setIatParam();//參數(shù)配置}}/*** 執(zhí)行語(yǔ)音* 識(shí)別*/public void startVoice(Context context) {senVoicesMsg(100, "啟動(dòng)語(yǔ)音識(shí)別");//100啟動(dòng)語(yǔ)音識(shí)別    200識(shí)別成功   300識(shí)別錯(cuò)誤if (mIat != null) {showDialog(context);mIat.startListening(mRecognizerListener);}}/*** 科大訊飛* 語(yǔ)音識(shí)別* 參數(shù)配置*/private void setIatParam() {// 清空參數(shù)mIat.setParameter(com.iflytek.cloud.SpeechConstant.PARAMS, null);// 設(shè)置聽(tīng)寫(xiě)引擎mIat.setParameter(com.iflytek.cloud.SpeechConstant.ENGINE_TYPE, com.iflytek.cloud.SpeechConstant.TYPE_CLOUD);// 設(shè)置返回結(jié)果格式mIat.setParameter(com.iflytek.cloud.SpeechConstant.RESULT_TYPE, "json");// 設(shè)置語(yǔ)言mIat.setParameter(com.iflytek.cloud.SpeechConstant.LANGUAGE, "zh_cn");// 設(shè)置語(yǔ)言區(qū)域mIat.setParameter(com.iflytek.cloud.SpeechConstant.ACCENT, "mandarin");// 設(shè)置語(yǔ)音前端點(diǎn):靜音超時(shí)時(shí)間,即用戶多長(zhǎng)時(shí)間不說(shuō)話則當(dāng)做超時(shí)處理mIat.setParameter(com.iflytek.cloud.SpeechConstant.VAD_BOS, "4000");// 設(shè)置語(yǔ)音后端點(diǎn):后端點(diǎn)靜音檢測(cè)時(shí)間,即用戶停止說(shuō)話多長(zhǎng)時(shí)間內(nèi)即認(rèn)為不再輸入, 自動(dòng)停止錄音mIat.setParameter(com.iflytek.cloud.SpeechConstant.VAD_EOS, "500");// 設(shè)置標(biāo)點(diǎn)符號(hào),設(shè)置為"0"返回結(jié)果無(wú)標(biāo)點(diǎn),設(shè)置為"1"返回結(jié)果有標(biāo)點(diǎn)mIat.setParameter(com.iflytek.cloud.SpeechConstant.ASR_PTT, "0");Log.d("initLogData", "==語(yǔ)音是被==初始化成功:====");// 設(shè)置音頻保存路徑,保存音頻格式支持pcm、wav,設(shè)置路徑為sd卡請(qǐng)注意WRITE_EXTERNAL_STORAGE權(quán)限// 注:AUDIO_FORMAT參數(shù)語(yǔ)記需要更新版本才能生效
//        mIatDialog.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");
//        mIatDialog.setParameter(SpeechConstant.ASR_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/MyApplication/" + filename + ".wav");}/*** 語(yǔ)音* 識(shí)別* 解析*/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++) {// 轉(zhuǎn)寫(xiě)結(jié)果詞,默認(rèn)使用第一個(gè)結(jié)果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();}/*** 對(duì)話框* getApplicationContext()*/private VoiceDialog boxDialog;private void showDialog(Context context) {View inflate = LayoutInflater.from(context).inflate(R.layout.donghua_layout, null, false);boxDialog = new VoiceDialog(context, inflate, VoiceDialog.LocationView.BOTTOM);boxDialog.show();}/*** 隱藏* 對(duì)話框*/private void hideDialog() {if (boxDialog != null) {boxDialog.dismiss();}}/*** 發(fā)送語(yǔ)音* 識(shí)別消息** @param code* @param conn*/private void senVoicesMsg(int code, String conn) {VoiceRecognizeResult voiceRecognizeResult = new VoiceRecognizeResult();voiceRecognizeResult.setCode(code);//100啟動(dòng)語(yǔ)音識(shí)別    200識(shí)別成功   300識(shí)別錯(cuò)誤voiceRecognizeResult.setMsg("" + conn);String std = JSON.toJSONString(voiceRecognizeResult);MyEventManager.postMsg("" + std, "VoiceRecognizeResult");}/*** 科大訊飛* 語(yǔ)音sdk* 初始化*/public void initKedaXun(Context context) {// 初始化參數(shù)構(gòu)建StringBuffer param = new StringBuffer();//IflytekAPP_id為我們申請(qǐng)的Appidparam.append("appid=" + context.getString(R.string.IflytekAPP_id));param.append(",");// 設(shè)置使用v5+param.append(SpeechConstant.ENGINE_MODE + "=" + SpeechConstant.MODE_MSC);SpeechUtility.createUtility(context, param.toString());Log.d("initLogData", "===在appacation中初始化=====");}}

2、使用

        KDVoiceRegUtils.getInstance().initKedaXun(mWXSDKInstance.getContext());KDVoiceRegUtils.getInstance().initVoiceRecorgnise(mUniSDKInstance.getContext());//語(yǔ)音識(shí)別初始化KDVoiceRegUtils.getInstance().startVoice(mUniSDKInstance.getContext());

注意其實(shí)代碼還可以優(yōu)化,由于公司業(yè)務(wù)需要,封裝的不怎么徹底,使用者可在此基礎(chǔ)上進(jìn)一步封裝。

http://aloenet.com.cn/news/46097.html

相關(guān)文章:

  • 泰州網(wǎng)站建設(shè)多少錢(qián)北京環(huán)球影城每日客流怎么看
  • 做網(wǎng)站建設(shè)價(jià)格網(wǎng)絡(luò)軟文營(yíng)銷(xiāo)案例3篇
  • 網(wǎng)站建設(shè)需要多少錢(qián)小江網(wǎng)頁(yè)設(shè)計(jì)seo網(wǎng)絡(luò)推廣外包公司
  • 網(wǎng)站開(kāi)發(fā)需求書(shū)接推廣一般多少錢(qián)
  • 昆明房產(chǎn)網(wǎng)站建設(shè)seo全網(wǎng)營(yíng)銷(xiāo)
  • 建設(shè)網(wǎng)站公司 優(yōu)幫云網(wǎng)站排名優(yōu)化專業(yè)定制
  • 哪些網(wǎng)站可以做調(diào)查賺錢(qián)廣告關(guān)鍵詞有哪些類型
  • 政府網(wǎng)站用的什么cms系統(tǒng)常州seo排名收費(fèi)
  • 泉州seo-泉州網(wǎng)站建設(shè)公司正規(guī)推廣平臺(tái)有哪些
  • 外貿(mào)網(wǎng)站銷(xiāo)售方式好用搜索引擎排名
  • dw制作網(wǎng)站站長(zhǎng)聯(lián)盟
  • 做網(wǎng)站違法嘛萬(wàn)能軟文模板
  • 做免費(fèi)網(wǎng)站怎么賺錢(qián)品牌推廣方案
  • 周杰倫做的廣告網(wǎng)站英文外鏈代發(fā)
  • 贛州曬房網(wǎng)百度seo排名360
  • 合肥網(wǎng)站 技術(shù)支持 上誠(chéng)科技餐飲營(yíng)銷(xiāo)方案
  • 成都個(gè)人建網(wǎng)站關(guān)鍵詞優(yōu)化哪家強(qiáng)
  • 中國(guó)最新軍事新聞 新聞seo外鏈發(fā)布軟件
  • 免費(fèi)網(wǎng)站下載軟件免費(fèi)個(gè)人網(wǎng)頁(yè)制作
  • 我做的網(wǎng)站服務(wù)器別人沒(méi)法左鍵點(diǎn)擊下載呢寧波谷歌seo
  • 有賬號(hào)和密碼怎么進(jìn)公司網(wǎng)站后臺(tái)百度seo如何做
  • ??诰W(wǎng)站建設(shè)解決方案云南疫情最新數(shù)據(jù)消息中高風(fēng)險(xiǎn)地區(qū)
  • wordpress免費(fèi)主題模板seo運(yùn)營(yíng)是做什么的
  • 中國(guó)網(wǎng)庫(kù)做網(wǎng)站線下推廣方案
  • 動(dòng)漫做h在線觀看網(wǎng)站b2b模式的電商平臺(tái)有哪些
  • 創(chuàng)業(yè)初期要建立公司的網(wǎng)站嗎鄭州百度關(guān)鍵詞seo
  • 網(wǎng)站大屏輪播圖效果怎么做公眾號(hào)排名優(yōu)化軟件
  • 怎樣做永久網(wǎng)站二維碼北京seo公司有哪些
  • 網(wǎng)站做線上銷(xiāo)售蘇州百度關(guān)鍵詞優(yōu)化
  • wordpress兼職sem seo