c 訊飛語音 sdk

2021-08-01 03:31:32 字數 3557 閱讀 6906

訊飛提供msc.dll這個dll,呼叫dll的封裝:

///

/// mscdll入口封裝

///

private class mscdll

說明一下:「qisruploaddata」(上傳詞庫)這個函式在開發文件裡面沒的,訊飛遺漏了。

類:mscnet

#region 定義字段

//返回錯誤代號

private int ret = 0;

private recoerrors re = null;

///

/// 會話id

///

private string sess_id = null;

///

/// 引數

///

private string param = null;

///

/// 語法

///

private string grammar = null;

//錯誤訊息通知託管

public delegate void delegdateonerror(string msg);

private string path = null;

///

/// 識別資料返回的事件

///

public event eventhandlerdataarrived;

///

/// 識別過程結束的事件

///

public event eventhandler isrend;

///

/// 正在識別

///

public event eventhandler spoting;

#endregion

#region 建構函式

///

/// 建構函式,初始化引擎

///

/// 引數

/// 語法id

/// 路徑

catch (mscexception ex)

}#endregion

#region 公共方法

///

/// 開始識別語音

///

/// 音訊資料

public void interpretvoice(byte buffer)

intptr p = mscdll.qisrgetresult(sess_id, ref rslt_status, 0, ref ret);

re.geterror(ret);

if (p != intptr.zero)

system.threading.thread.sleep(500);

} while (rslt_status != recogstatus.isr_rec_status_speech_complete);

}catch (mscexception ex)

finally

catch (mscexception ex)}}

///

/// 上傳詞庫詞庫採用是utf8格式

///

/// 詞庫名稱

/// 詞庫路徑

/// 引數

/// 返回詞庫編號

public string getexid(string txtfile, string path, string param)}}

catch (filenotfoundexception ex)

}catch (mscexception ex)

finally

catch (mscexception ex)}}

else

return tmp;

}///

/// 對msc的isr部分進行逆初始化。

///

public void qisrfini()

catch (mscexception ex)

}#endregion

#region 受保護方法

///

/// 載入語法 

///

private void loadgrammar()

catch (mscexception ex)

}///

/// 指標轉字串

///

/// 指向非託管**字串的指標

/// 返回指標指向的字串

private string ptrtostr(intptr p)

}catch (accessviolationexception ex)

return encoding.default.getstring(lb.toarray());

}       

#endregion

#region 事件

///

/// 錯誤通知事件

///

public event delegdateonerror onerror;

private void raiseerror(string msg)

}///

/// 有識別資料返回的事件引數,包含了識別的文字結果

///

public class dataarrivedeventargs : eventargs

}#endregion

如果採用abnf語法,只是與文字詞庫載入語法方式有點不一樣:

///

/// 載入語法 

///

private void loadgrammar()

catch (mscexception ex)}

常量的列舉:

自定義異常:

public mscexception()

public mscexception(string message)

: base(message)

public mscexception(string message, exception inner)

: base(message, inner)

} ///

/// 是否出錯

///

internal class recoerrors

///

/// 是否發生錯誤.  

///

/// 錯誤id

public virtual void geterror(int id)}}

訊飛語音支援邊錄邊上傳,不過我這裡採用是一次性上傳。起初我採用的是邊錄邊上傳,不過感覺有數字混合後識別正常率不好(還沒跟訊飛那邊溝通。),最後才使用一次性上傳,畢竟語音檔案也不是大就200kb一下。訊飛語音識別不支援多執行緒識別。

我做的這個語音識別產品,做成服務端與客戶端。服務端:放在乙個能連線外網機子上提供語音識別(做了乙個簡單佇列),客戶端:將音訊資料採集後傳送到區域網內的語音識別服務端進行識別。

以上有些**是借助別人的,第一次寫大家盡量不要吐槽,不過可以給點意見。大家相互學習...

分類: 

c#標籤: 

c#, 

winfrom, 

語音識別, 

訊飛語音

iphone之使用訊飛語音sdk實現語音識別功能

2 學習裡面的demo簡單實現了乙個小的語音識別功能 先做乙個簡單demo,看看識別效果。注 語音識別必須聯網。所有介面必需在聯網狀態下才能正常使用。效果圖 uiimageview speechimage 聲音 iflyspeechrecognizer iflyspeechrecognizer 語音...

訊飛語音轉寫

邏輯 語音上傳 prepare 訊飛 返回乙個task id 音訊分片上傳 upload 訊飛,呼叫多次,直到檔案全部上傳完成 合併音訊merge 訊飛 每三分鐘呼叫getprogress 訊飛 得到結果getresult 訊飛 訊飛官方文件 介面呼叫流程 安裝外掛程式 js md5 和 crypt...

訊飛語音SDK提示使用者校驗失敗10407

在使用訊飛語音sdk中遇到錯誤 使用者校驗失敗10407。原因是乙個應用申請的 sdk 包括jar和本地庫 具有一致性,sdk不通用。另外吐槽一下,訊飛開放平台裡只能新增應用,不能刪除,強迫症不能忍。在使用人臉鑑別時需要建立組,並且在引數裡需要設定speechconstant.auth id 邏輯上...