中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

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

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

目錄

一、語音喚醒部分

1、首先在科大訊飛官網(wǎng)注冊開發(fā)者賬號

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

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

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

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

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

7、喚醒工具類封裝

二、語音識別

1、工具類

2、使用


一、語音喚醒部分

1、首先在科大訊飛官網(wǎng)注冊開發(fā)者賬號

控制臺-訊飛開放平臺

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

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

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

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

6、復(fù)制對應(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為科大訊飛平臺的應(yīng)用id


public abstract class WakeUpUtil {private static AutoTouch autoTouch = new AutoTouch();//自動點擊屏幕/*** 喚醒的回調(diào)*/public abstract void wakeUp(String resultString);// Log標簽private static final String TAG = "WakeUpUtil";// 上下文private static Context mContext;// 語音喚醒對象private VoiceWakeuper mIvw;//喚醒門限值//門限值越高,則要求匹配度越高,才能喚醒//值范圍:[0,3000]//默認值:1450private static int curThresh = 1450;public WakeUpUtil(Context context) {initKedaXun(context);mContext = context;// 初始化喚醒對象mIvw = VoiceWakeuper.createWakeuper(context, null);Log.d("initLogData", "===進入喚醒工具類====");}/*** 獲取喚醒詞功能** @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", "===進入喚醒工具類====");// 非空判斷,防止因空指針使程序崩潰VoiceWakeuper mIvw = VoiceWakeuper.getWakeuper();if (mIvw != null) {// textView.setText(resultString);// 清空參數(shù)mIvw.setParameter(SpeechConstant.PARAMS, null);// 設(shè)置喚醒資源路徑mIvw.setParameter(SpeechConstant.IVW_RES_PATH, getResource());// 喚醒門限值,根據(jù)資源攜帶的喚醒詞個數(shù)按照“id:門限;id:門限”的格式傳入mIvw.setParameter(SpeechConstant.IVW_THRESHOLD, "0:" + curThresh);// 設(shè)置喚醒模式mIvw.setParameter(SpeechConstant.IVW_SST, "wakeup");// 設(shè)置持續(xù)進行喚醒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("【前端點】" + object.optString("bos"));buffer.append("\n");buffer.append("【尾端點】" + 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é)果解析出錯", "voicesWakeListener");resultString = "結(jié)果解析出錯";wakeUp(resultString);e.printStackTrace();}//            Logger.d("===開始說話==="+resultString);}@Overridepublic void onError(SpeechError error) {MyEventManager.postMsg("" + "喚醒出錯", "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", "===開始說話==="+i);}};/*** 科大訊飛* 語音sdk* 初始化*/public void initKedaXun(Context context) {// 初始化參數(shù)構(gòu)建StringBuffer param = new StringBuffer();//IflytekAPP_id為我們申請的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)用即可

/*** 科大訊飛* 語音喚醒* 對象*/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);// 開啟喚醒wakeUpUtil.wake();}};wakeUpUtil.wake();}

到此語音喚醒已經(jīng)集成結(jié)束,接下來是語音識別。

二、語音識別

1、工具類


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

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

http://www.risenshineclean.com/news/46097.html

相關(guān)文章:

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