UE4+科大訊飛SDK 語音轉文字之字符串轉碼問題

將科大訊飛的SDK,譬如iat_record_sample,語音轉文字模塊繼承到UE4項目後發現,有幾個問題
1.語音識別的字符串爲非Unicode,先轉換此字符串爲FString
static void show_result(char *string, char is_over) { int len = MultiByteToWideChar(CP_ACP, 0, string, -1, nullptr, 0); wchar_t *str = new wchar_t[len + 1]; wmemset(str, 0, len + 1); MultiByteToWideChar(CP_ACP, 0, string, -1, str, len); //此處得到FString FString OutStr = FString(str); delete[]str; }
2.Demo中 helper_thread_proc相關的處理註釋掉。這個是Demo示例工程,開線程一直監聽鍵盤的指令,沒啥用
在UE4調用的地方直接用sr_start_listening(&iat);sr_stop_listening(&iat);就行。
3.調用sr_start_listening函數幾個問題:
3.1 在sr_start_listening後,UE4中綁定了靜態代理來回調此事件的處理結果,也就是語音識別後的字符串處理函數。在這個函數中不能出現動態加載的事情,否則會出現線程安全的問題。要用的東西最好提前加載好,在這個函數中只使用對象就行
3.2 在這個函數中如果有創建UE4 Slate相關的代碼。特別是SScrollBox控件,也會出現類似的線程安全崩潰。預加載也沒有用,儘量避免使用或者尋找替代寫法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章