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控件,也会出现类似的线程安全崩溃。预加载也没有用,尽量避免使用或者寻找替代写法。

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