UE4 集成讯飞听写插件

搞了几天,有些坑记录一下。

3个方面的知识需要学习

1、制作UE4插件

2、引入第三方库

3、讯飞听写的api

 一看是参考 https://blog.csdn.net/u012793104/article/details/78067937

http://doc.xfyun.cn/msc_windows/%E8%AF%AD%E9%9F%B3%E5%90%AC%E5%86%99.html

API:http://mscdoc.xfyun.cn/windows/api/iFlytekMSCReferenceManual/qisr_8h.html 

 


整个插件架构:录音 ->识别(讯飞语音听写,即上图架构)->本地转码 以显示

 主要需要了解的API:  QISRSessionBegin  需要你更改自己的参数,可以按照下载的案例改

QISRAudioWrite: 搞懂这个才能明白整个讯飞识别功能的机制

开发过程主要的问题表现为打印信息有时并不是中文,而是未转换的拼接字符串

所以好好看了看 下载的案例,和API 经过不断调试才发现就是json的问题

之前的代码 都是拼接所有 从 QISRGetResult获得的结果,然后最后一步转换,所以出现问题了.

 比如录入"床前明月光"

{"sn":1,
"ls":false,
"bg":0,
"ed":0,
"ws":
[
{"bg":1,"cw":[{"sc":0.0,"w":"床"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"前"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"明"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"月光"}]}
]
}
{"sn":2,"ls":true,"bg":0,"ed":0,
"ws":
[{"bg":0,"cw":[{"sc":0.0,"w":"。"}]}]
}

如果结果为上面,则无法转换json以致原样输出,因为这是直接将两个json对象拼接了。

{"sn":1,
"ls":false,
"bg":0,
"ed":0,
"ws":
[
{"bg":1,"cw":[{"sc":0.0,"w":"床"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"前"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"明"}]},
{"bg":1,"cw":[{"sc":0.0,"w":"月光"}]}
]
}

这种情况就会成功输出中文。

所以问题是 我获得的结果有时被加了一个句号,我想着应该是语法的缘故。

所以我换了一个方法,先解析再拼接 解决了问题。

 ----

ps:测试要时刻注意麦克风是否正常·,别搞自己

下载地址:

github:https://github.com/huzhongyidihao/XFPlugin

 

posted @ 2018-06-19 07:49  跃动的光子  阅读(910)  评论(0编辑  收藏  举报